summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-02-11 19:22:06 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-02-11 19:22:06 -0500
commitea347199a21f7a6c01a395e507db872ac1781e79 (patch)
tree625ec0a6469b40573d165ceee0855e969af45929
parentf39053ee3023b02139784f88d346b3b57853c307 (diff)
parent14a76793e596d612efd273169c4172922c270f13 (diff)
Merge branch 'master' into link
-rw-r--r--asm/battle_anim_80A5C6C.s338
-rw-r--r--asm/battle_anim_80A9C70.s12
-rw-r--r--asm/battle_anim_80D51AC.s108
-rw-r--r--asm/battle_anim_80FE840.s2248
-rw-r--r--asm/battle_anim_815A0D4.s474
-rw-r--r--asm/battle_anim_8170478.s162
-rw-r--r--asm/battle_anim_sound_tasks.s34
-rw-r--r--asm/battle_frontier_1.s42
-rw-r--r--asm/battle_frontier_2.s88
-rw-r--r--asm/battle_link_817C95C.s286
-rw-r--r--asm/battle_records.s2
-rw-r--r--asm/battle_tower.s34
-rw-r--r--asm/berry_tag_screen.s1538
-rw-r--r--asm/contest.s26
-rw-r--r--asm/field_specials.s6
-rw-r--r--asm/intro.s8
-rw-r--r--asm/item_icon.s468
-rw-r--r--asm/item_menu.s2
-rw-r--r--asm/item_menu_icons.s20
-rw-r--r--asm/macros/battle_script.inc10
-rw-r--r--asm/main_menu.s2
-rw-r--r--asm/mauville_old_man.s2
-rw-r--r--asm/menu.s5505
-rw-r--r--asm/new_menu_helpers.s1178
-rw-r--r--asm/party_menu.s222
-rw-r--r--asm/player_pc.s8
-rw-r--r--asm/pokemon_1.s4
-rw-r--r--asm/pokemon_item_effect.s58
-rw-r--r--asm/pokemon_storage_system.s4
-rw-r--r--asm/pokemon_summary_screen.s2
-rw-r--r--asm/pokenav.s8
-rw-r--r--asm/rayquaza_scene.s5972
-rw-r--r--asm/record_mixing.s2
-rw-r--r--asm/reset_rtc_screen.s1342
-rw-r--r--asm/rom_8011DC0.s30
-rw-r--r--asm/roulette.s28
-rw-r--r--asm/shop.s2
-rw-r--r--asm/slot_machine.s8
-rw-r--r--asm/start_menu.s6
-rw-r--r--asm/title_screen.s1321
-rw-r--r--asm/trade.s3
-rw-r--r--asm/trainer_card.s2
-rw-r--r--common_syms/battle_main.txt9
-rw-r--r--constants/battle_constants.inc170
-rw-r--r--constants/battle_script_constants.inc169
-rw-r--r--constants/battle_text.inc375
-rw-r--r--constants/constants.inc2
-rw-r--r--constants/pokemon_data_constants.inc43
-rw-r--r--constants/species_constants.inc387
-rw-r--r--constants/trainer_constants.inc1122
-rw-r--r--constants/type_constants.inc18
-rw-r--r--data/base_stats.inc8635
-rw-r--r--data/battle_ai_scripts.s312
-rw-r--r--data/battle_anim_scripts.s2
-rw-r--r--data/battle_frontier/battle_frontier_trainers.inc600
-rw-r--r--data/battle_frontier/fallarbor_battle_tent_trainers.inc60
-rw-r--r--data/battle_frontier/slateport_battle_tent_trainers.inc60
-rw-r--r--data/battle_frontier/verdanturf_battle_tent_trainers.inc60
-rw-r--r--data/battle_moves.inc2
-rw-r--r--data/battle_scripts_1.s1556
-rw-r--r--data/battle_scripts_2.s37
-rw-r--r--data/battle_tower.s2
-rw-r--r--data/berry_tag_screen.s34
-rw-r--r--data/contest.s6
-rw-r--r--data/contest_opponents.inc2
-rw-r--r--data/data2b.s2
-rw-r--r--data/data2c.s181
-rw-r--r--data/data2e.s151
-rw-r--r--data/event_scripts.s1
-rw-r--r--data/evolution_table.inc1420
-rw-r--r--data/experience_tables.inc11
-rw-r--r--data/experience_tables/erratic_growth_rate.inc101
-rw-r--r--data/experience_tables/fast_growth_rate.inc101
-rw-r--r--data/experience_tables/fluctuating_growth_rate.inc101
-rw-r--r--data/experience_tables/medium_fast_growth_rate.inc101
-rw-r--r--data/experience_tables/medium_slow_growth_rate.inc101
-rw-r--r--data/experience_tables/slow_growth_rate.inc101
-rw-r--r--data/graphics/berries/berry_graphics.inc172
-rw-r--r--data/item_effect_info.inc824
-rw-r--r--data/item_icon.s15
-rw-r--r--data/item_menu_icons.s2
-rw-r--r--data/level_up_learnset_pointers.inc414
-rw-r--r--data/level_up_learnsets.inc5204
-rw-r--r--data/nature_stat_table.inc27
-rw-r--r--data/new_menu_helpers.s53
-rw-r--r--data/pokedex_order.inc1238
-rw-r--r--data/reset_rtc_screen.s78
-rw-r--r--data/rom_8011DC0.s4
-rw-r--r--data/spinda_spot_graphics.inc81
-rw-r--r--data/title_screen.s163
-rw-r--r--data/tm_hm_learnsets.inc414
-rw-r--r--data/trainer_class_name_indices.inc83
-rw-r--r--data/trainer_money.inc110
-rw-r--r--data/trainer_pic_indices.inc84
-rw-r--r--data/trainers.inc1710
-rw-r--r--data/wild_encounter.s295
-rw-r--r--data/wild_mons.inc4524
-rw-r--r--graphics/battle_anims/sprites/smokescreen_impact.pal19
-rw-r--r--graphics/battle_interface/ball_display.pal19
-rw-r--r--graphics/battle_interface/ball_status_bar.pal19
-rw-r--r--graphics/battle_interface/unk_battlebox.pal19
-rw-r--r--graphics/battle_interface/unused_window.pal19
-rw-r--r--graphics/berries/aguav.png (renamed from graphics/berries/pics/aguav.png)bin380 -> 380 bytes
-rw-r--r--graphics/berries/apicot.png (renamed from graphics/berries/pics/apicot.png)bin397 -> 397 bytes
-rw-r--r--graphics/berries/aspear.png (renamed from graphics/berries/pics/aspear.png)bin422 -> 422 bytes
-rw-r--r--graphics/berries/belue.png (renamed from graphics/berries/pics/belue.png)bin644 -> 644 bytes
-rw-r--r--graphics/berries/bluk.png (renamed from graphics/berries/pics/bluk.png)bin444 -> 444 bytes
-rw-r--r--graphics/berries/cheri.png (renamed from graphics/berries/pics/cheri.png)bin355 -> 355 bytes
-rw-r--r--graphics/berries/chesto.png (renamed from graphics/berries/pics/chesto.png)bin458 -> 458 bytes
-rw-r--r--graphics/berries/cornn.png (renamed from graphics/berries/pics/cornn.png)bin485 -> 485 bytes
-rw-r--r--graphics/berries/durin.png (renamed from graphics/berries/pics/durin.png)bin801 -> 801 bytes
-rw-r--r--graphics/berries/enigma.png (renamed from graphics/berries/pics/enigma.png)bin497 -> 497 bytes
-rw-r--r--graphics/berries/figy.png (renamed from graphics/berries/pics/figy.png)bin418 -> 418 bytes
-rw-r--r--graphics/berries/ganlon.png (renamed from graphics/berries/pics/ganlon.png)bin387 -> 387 bytes
-rw-r--r--graphics/berries/grepa.png (renamed from graphics/berries/pics/grepa.png)bin397 -> 397 bytes
-rw-r--r--graphics/berries/hondew.png (renamed from graphics/berries/pics/hondew.png)bin534 -> 534 bytes
-rw-r--r--graphics/berries/iapapa.png (renamed from graphics/berries/pics/iapapa.png)bin624 -> 624 bytes
-rw-r--r--graphics/berries/kelpsy.png (renamed from graphics/berries/pics/kelpsy.png)bin412 -> 412 bytes
-rw-r--r--graphics/berries/lansat.png (renamed from graphics/berries/pics/lansat.png)bin474 -> 474 bytes
-rw-r--r--graphics/berries/leppa.png (renamed from graphics/berries/pics/leppa.png)bin369 -> 369 bytes
-rw-r--r--graphics/berries/liechi.png (renamed from graphics/berries/pics/liechi.png)bin561 -> 561 bytes
-rw-r--r--graphics/berries/lum.png (renamed from graphics/berries/pics/lum.png)bin289 -> 289 bytes
-rw-r--r--graphics/berries/mago.png (renamed from graphics/berries/pics/mago.png)bin409 -> 409 bytes
-rw-r--r--graphics/berries/magost.png (renamed from graphics/berries/pics/magost.png)bin392 -> 392 bytes
-rw-r--r--graphics/berries/nanab.png (renamed from graphics/berries/pics/nanab.png)bin363 -> 363 bytes
-rw-r--r--graphics/berries/nomel.png (renamed from graphics/berries/pics/nomel.png)bin430 -> 430 bytes
-rw-r--r--graphics/berries/oran.png (renamed from graphics/berries/pics/oran.png)bin340 -> 340 bytes
-rw-r--r--graphics/berries/palettes/aguav.pal19
-rw-r--r--graphics/berries/palettes/apicot.pal19
-rw-r--r--graphics/berries/palettes/aspear.pal19
-rw-r--r--graphics/berries/palettes/belue.pal19
-rw-r--r--graphics/berries/palettes/bluk.pal19
-rw-r--r--graphics/berries/palettes/cheri.pal19
-rw-r--r--graphics/berries/palettes/chesto.pal19
-rw-r--r--graphics/berries/palettes/cornn.pal19
-rw-r--r--graphics/berries/palettes/durin.pal19
-rw-r--r--graphics/berries/palettes/enigma.pal19
-rw-r--r--graphics/berries/palettes/figy.pal19
-rw-r--r--graphics/berries/palettes/ganlon.pal19
-rw-r--r--graphics/berries/palettes/grepa.pal19
-rw-r--r--graphics/berries/palettes/hondew.pal19
-rw-r--r--graphics/berries/palettes/iapapa.pal19
-rw-r--r--graphics/berries/palettes/kelpsy.pal19
-rw-r--r--graphics/berries/palettes/lansat.pal19
-rw-r--r--graphics/berries/palettes/leppa.pal19
-rw-r--r--graphics/berries/palettes/liechi.pal19
-rw-r--r--graphics/berries/palettes/lum.pal19
-rw-r--r--graphics/berries/palettes/mago.pal19
-rw-r--r--graphics/berries/palettes/magost.pal19
-rw-r--r--graphics/berries/palettes/nanab.pal19
-rw-r--r--graphics/berries/palettes/nomel.pal19
-rw-r--r--graphics/berries/palettes/oran.pal19
-rw-r--r--graphics/berries/palettes/pamtre.pal19
-rw-r--r--graphics/berries/palettes/pecha.pal19
-rw-r--r--graphics/berries/palettes/persim.pal19
-rw-r--r--graphics/berries/palettes/petaya.pal19
-rw-r--r--graphics/berries/palettes/pinap.pal19
-rw-r--r--graphics/berries/palettes/pomeg.pal19
-rw-r--r--graphics/berries/palettes/qualot.pal19
-rw-r--r--graphics/berries/palettes/rabuta.pal19
-rw-r--r--graphics/berries/palettes/rawst.pal19
-rw-r--r--graphics/berries/palettes/razz.pal19
-rw-r--r--graphics/berries/palettes/salac.pal19
-rw-r--r--graphics/berries/palettes/sitrus.pal19
-rw-r--r--graphics/berries/palettes/spelon.pal19
-rw-r--r--graphics/berries/palettes/starf.pal19
-rw-r--r--graphics/berries/palettes/tamato.pal19
-rw-r--r--graphics/berries/palettes/watmel.pal19
-rw-r--r--graphics/berries/palettes/wepear.pal19
-rw-r--r--graphics/berries/palettes/wiki.pal19
-rw-r--r--graphics/berries/pamtre.png (renamed from graphics/berries/pics/pamtre.png)bin539 -> 539 bytes
-rw-r--r--graphics/berries/pecha.png (renamed from graphics/berries/pics/pecha.png)bin363 -> 363 bytes
-rw-r--r--graphics/berries/persim.png (renamed from graphics/berries/pics/persim.png)bin330 -> 330 bytes
-rw-r--r--graphics/berries/petaya.png (renamed from graphics/berries/pics/petaya.png)bin639 -> 639 bytes
-rw-r--r--graphics/berries/pinap.png (renamed from graphics/berries/pics/pinap.png)bin491 -> 491 bytes
-rw-r--r--graphics/berries/pomeg.png (renamed from graphics/berries/pics/pomeg.png)bin406 -> 406 bytes
-rw-r--r--graphics/berries/qualot.png (renamed from graphics/berries/pics/qualot.png)bin422 -> 422 bytes
-rw-r--r--graphics/berries/rabuta.png (renamed from graphics/berries/pics/rabuta.png)bin710 -> 710 bytes
-rw-r--r--graphics/berries/rawst.png (renamed from graphics/berries/pics/rawst.png)bin414 -> 414 bytes
-rw-r--r--graphics/berries/razz.png (renamed from graphics/berries/pics/razz.png)bin520 -> 520 bytes
-rw-r--r--graphics/berries/salac.png (renamed from graphics/berries/pics/salac.png)bin519 -> 519 bytes
-rw-r--r--graphics/berries/sitrus.png (renamed from graphics/berries/pics/sitrus.png)bin404 -> 404 bytes
-rw-r--r--graphics/berries/spelon.png (renamed from graphics/berries/pics/spelon.png)bin467 -> 467 bytes
-rw-r--r--graphics/berries/starf.png (renamed from graphics/berries/pics/starf.png)bin440 -> 440 bytes
-rw-r--r--graphics/berries/tamato.png (renamed from graphics/berries/pics/tamato.png)bin642 -> 642 bytes
-rw-r--r--graphics/berries/watmel.png (renamed from graphics/berries/pics/watmel.png)bin636 -> 636 bytes
-rw-r--r--graphics/berries/wepear.png (renamed from graphics/berries/pics/wepear.png)bin400 -> 400 bytes
-rw-r--r--graphics/berries/wiki.png (renamed from graphics/berries/pics/wiki.png)bin429 -> 429 bytes
-rw-r--r--graphics/berry_blender/arrow.pal19
-rw-r--r--graphics/berry_blender/center.pal19
-rw-r--r--graphics/berry_blender/outer.pal19
-rw-r--r--graphics/birch_speech/birch.pal19
-rw-r--r--graphics/decorations/decor_attract_mat.pal19
-rw-r--r--graphics/decorations/decor_big_plant.pal19
-rw-r--r--graphics/decorations/decor_blastoise_doll.pal19
-rw-r--r--graphics/decorations/decor_blue_brick.pal19
-rw-r--r--graphics/decorations/decor_blue_tent.pal19
-rw-r--r--graphics/decorations/decor_breakable_door.pal19
-rw-r--r--graphics/decorations/decor_brick_desk.pal19
-rw-r--r--graphics/decorations/decor_camp_desk.pal19
-rw-r--r--graphics/decorations/decor_charizard_doll.pal19
-rw-r--r--graphics/decorations/decor_colorful_plant.pal19
-rw-r--r--graphics/decorations/decor_comfort_desk.pal19
-rw-r--r--graphics/decorations/decor_fire_blast_mat.pal19
-rw-r--r--graphics/decorations/decor_fissure_mat.pal19
-rw-r--r--graphics/decorations/decor_glass_ornament.pal19
-rw-r--r--graphics/decorations/decor_gorgeous_plant.pal19
-rw-r--r--graphics/decorations/decor_hard_desk.pal19
-rw-r--r--graphics/decorations/decor_heavy_desk.pal19
-rw-r--r--graphics/decorations/decor_lapras_doll.pal19
-rw-r--r--graphics/decorations/decor_powder_snow_mat.pal19
-rw-r--r--graphics/decorations/decor_pretty_desk.pal19
-rw-r--r--graphics/decorations/decor_pretty_flowers.pal19
-rw-r--r--graphics/decorations/decor_ragged_desk.pal19
-rw-r--r--graphics/decorations/decor_red_brick.pal19
-rw-r--r--graphics/decorations/decor_red_plant.pal19
-rw-r--r--graphics/decorations/decor_red_tent.pal19
-rw-r--r--graphics/decorations/decor_regice_doll.pal19
-rw-r--r--graphics/decorations/decor_regirock_doll.pal19
-rw-r--r--graphics/decorations/decor_registeel_doll.pal19
-rw-r--r--graphics/decorations/decor_rhydon_doll.pal19
-rw-r--r--graphics/decorations/decor_sand_ornament.pal19
-rw-r--r--graphics/decorations/decor_slide.pal19
-rw-r--r--graphics/decorations/decor_snorlax_doll.pal19
-rw-r--r--graphics/decorations/decor_solid_board.pal19
-rw-r--r--graphics/decorations/decor_spikes_mat.pal19
-rw-r--r--graphics/decorations/decor_stand.pal19
-rw-r--r--graphics/decorations/decor_surf_mat.pal19
-rw-r--r--graphics/decorations/decor_thunder_mat.pal19
-rw-r--r--graphics/decorations/decor_tire.pal19
-rw-r--r--graphics/decorations/decor_tropical_plant.pal19
-rw-r--r--graphics/decorations/decor_venusaur_doll.pal19
-rw-r--r--graphics/decorations/decor_wailmer_doll.pal19
-rw-r--r--graphics/decorations/decor_yellow_brick.pal19
-rw-r--r--graphics/interface/ball/ultra.pal19
-rw-r--r--graphics/interface/link_test_digits.pal19
-rw-r--r--graphics/interface/unk_textbox_border.pal19
-rw-r--r--graphics/interface/wireless_link_display.pal19
-rw-r--r--graphics/interface/wireless_link_icon.pal19
-rw-r--r--graphics/intro/copyright.pal19
-rw-r--r--graphics/intro/intro1_flygon.pal19
-rw-r--r--graphics/intro/intro2_bgclouds.pal19
-rw-r--r--graphics/intro/intro2_bgnight.pal19
-rw-r--r--graphics/intro/intro2_bgtrees.pal19
-rw-r--r--graphics/intro/intro2_brendan.pal19
-rw-r--r--graphics/intro/intro2_bubbles.pal19
-rw-r--r--graphics/intro/intro2_flygon.pal19
-rw-r--r--graphics/intro/intro2_grass.pal19
-rw-r--r--graphics/intro/intro2_latias.pal19
-rw-r--r--graphics/intro/intro2_latios.pal19
-rw-r--r--graphics/intro/intro2_manectric.pal19
-rw-r--r--graphics/intro/intro2_may.pal19
-rw-r--r--graphics/intro/intro2_torchic.pal19
-rw-r--r--graphics/intro/intro2_volbeat.pal19
-rw-r--r--graphics/intro/intro3_lightning.pal19
-rw-r--r--graphics/intro/intro3_pokeball.pal259
-rw-r--r--graphics/intro/intro3_streaks.pal19
-rw-r--r--graphics/link/minigame_digits.pal19
-rw-r--r--graphics/link_games/berrycrush_grinder_base.pal19
-rw-r--r--graphics/link_games/berrycrush_timerdigits.pal19
-rw-r--r--graphics/link_games/dodrioberry_berrysprites.pal19
-rw-r--r--graphics/link_games/dodrioberry_pkmn.pal19
-rw-r--r--graphics/link_games/dodrioberry_platform.pal19
-rw-r--r--graphics/link_games/dodrioberry_status.pal19
-rw-r--r--graphics/link_games/pkmnjump_321start1.pal19
-rw-r--r--graphics/link_games/pkmnjump_321start2.pal19
-rw-r--r--graphics/link_games/pkmnjump_bg.pal19
-rw-r--r--graphics/link_games/pkmnjump_results.pal19
-rw-r--r--graphics/link_games/pkmnjump_venusaur.pal19
-rw-r--r--graphics/misc/cable_car.pal19
-rw-r--r--graphics/misc/clock_small.pal19
-rw-r--r--graphics/misc/evo_sparkle.pal19
-rw-r--r--graphics/misc/japanese_hof.pal19
-rw-r--r--graphics/pokenav/brendan_icon.pal19
-rw-r--r--graphics/pokenav/fly_target_icons.pal19
-rw-r--r--graphics/pokenav/may_icon.pal19
-rw-r--r--graphics/spinda_spots/spot_0.binbin0 -> 32 bytes
-rw-r--r--graphics/spinda_spots/spot_1.binbin0 -> 32 bytes
-rw-r--r--graphics/spinda_spots/spot_2.binbin0 -> 32 bytes
-rw-r--r--graphics/spinda_spots/spot_3.binbin0 -> 32 bytes
-rw-r--r--graphics/title_screen/emerald_version.pal19
-rw-r--r--graphics/title_screen/press_start.pal19
-rw-r--r--graphics/unused/intro_birch_beauty.pngbin2268 -> 2116 bytes
-rw-r--r--graphics/unused/old_charmap.pal19
-rw-r--r--graphics/wonder_transfers/wonder_card_1.pal19
-rw-r--r--graphics/wonder_transfers/wonder_card_2.pal19
-rw-r--r--graphics/wonder_transfers/wonder_card_3.pal19
-rw-r--r--graphics/wonder_transfers/wonder_card_4.pal19
-rw-r--r--graphics/wonder_transfers/wonder_card_5.pal19
-rw-r--r--graphics/wonder_transfers/wonder_card_6.pal19
-rw-r--r--graphics/wonder_transfers/wonder_card_7.pal19
-rw-r--r--graphics/wonder_transfers/wonder_card_8.pal19
-rw-r--r--graphics/wonder_transfers/wonder_news_1.pal19
-rw-r--r--graphics/wonder_transfers/wonder_news_7.pal19
-rw-r--r--graphics/wonder_transfers/wonder_news_8.pal19
-rw-r--r--include/battle.h552
-rw-r--r--include/battle_ai_script_commands.h4
-rw-r--r--include/battle_anim.h28
-rw-r--r--include/battle_controllers.h112
-rw-r--r--include/battle_frontier_1.h7
-rw-r--r--include/battle_gfx_sfx_util.h36
-rw-r--r--include/battle_interface.h4
-rw-r--r--include/battle_link_817C95C.h2
-rw-r--r--include/battle_main.h (renamed from include/battle_2.h)16
-rw-r--r--include/battle_script_commands.h47
-rw-r--r--include/battle_scripts.h2
-rw-r--r--include/battle_util.h6
-rw-r--r--include/berry_fix_program.h6
-rw-r--r--include/berry_tag_screen.h6
-rw-r--r--include/clear_save_data_menu.h6
-rw-r--r--include/constants/battle.h284
-rw-r--r--include/constants/battle_ai.h10
-rw-r--r--include/constants/battle_anim.h2
-rw-r--r--include/constants/battle_script_commands.h97
-rw-r--r--include/constants/battle_string_ids.h (renamed from include/battle_string_ids.h)7
-rw-r--r--include/constants/items.h74
-rw-r--r--include/constants/maps.h3
-rw-r--r--include/constants/pokemon.h80
-rw-r--r--include/constants/rgb.h1
-rw-r--r--include/data/pokemon/base_stats.h13576
-rw-r--r--include/data/pokemon/cry_ids.h143
-rw-r--r--include/data/pokemon/evolution.h192
-rw-r--r--include/data/pokemon/experience_tables.h849
-rw-r--r--include/data/pokemon/item_effects.h241
-rw-r--r--include/data/pokemon/level_up_learnset_pointers.h420
-rw-r--r--include/data/pokemon/level_up_learnsets.h5623
-rw-r--r--include/data/pokemon/tmhm_learnsets.h9393
-rw-r--r--include/data/pokemon/trainer_class_lookups.h176
-rw-r--r--include/dma3.h2
-rw-r--r--include/gba/defines.h3
-rw-r--r--include/global.h21
-rw-r--r--include/graphics.h40
-rw-r--r--include/intro.h5
-rw-r--r--include/item.h1
-rw-r--r--include/item_icon.h15
-rw-r--r--include/item_menu.h13
-rw-r--r--include/item_menu_icons.h6
-rw-r--r--include/item_use.h54
-rw-r--r--include/main_menu.h6
-rw-r--r--include/menu.h38
-rw-r--r--include/menu_helpers.h5
-rw-r--r--include/new_menu_helpers.h27
-rw-r--r--include/palette.h1
-rw-r--r--include/pokemon.h104
-rw-r--r--include/rayquaza_scene.h17
-rw-r--r--include/recorded_battle.h10
-rw-r--r--include/region_map.h1
-rw-r--r--include/reset_rtc_screen.h6
-rw-r--r--include/scanline_effect.h4
-rw-r--r--include/strings.h29
-rw-r--r--include/text.h22
-rw-r--r--include/title_screen.h8
-rw-r--r--include/window.h2
-rw-r--r--ld_script.txt29
-rw-r--r--src/battle_ai_script_commands.c320
-rw-r--r--src/battle_ai_switch_items.c338
-rw-r--r--src/battle_anim.c185
-rw-r--r--src/battle_bg.c14
-rw-r--r--src/battle_controller_link_opponent.c817
-rw-r--r--src/battle_controller_link_partner.c708
-rw-r--r--src/battle_controller_opponent.c828
-rw-r--r--src/battle_controller_player.c1317
-rw-r--r--src/battle_controller_player_partner.c772
-rw-r--r--src/battle_controller_recorded_opponent.c769
-rw-r--r--src/battle_controller_recorded_player.c785
-rw-r--r--src/battle_controller_safari.c169
-rw-r--r--src/battle_controller_wally.c512
-rw-r--r--src/battle_controllers.c559
-rw-r--r--src/battle_dome_cards.c6
-rw-r--r--src/battle_gfx_sfx_util.c477
-rw-r--r--src/battle_interface.c172
-rw-r--r--src/battle_main.c (renamed from src/battle_2.c)1955
-rw-r--r--src/battle_message.c181
-rw-r--r--src/battle_script_commands.c3946
-rw-r--r--src/battle_setup.c25
-rw-r--r--src/battle_transition.c2
-rw-r--r--src/battle_util.c1698
-rw-r--r--src/battle_util2.c61
-rw-r--r--src/berry_blender.c27
-rw-r--r--src/berry_fix_program.c240
-rw-r--r--src/berry_tag_screen.c653
-rw-r--r--src/calculate_base_damage.c40
-rw-r--r--src/clear_save_data_screen.c2
-rw-r--r--src/coins.c1
-rw-r--r--src/daycare.c10
-rw-r--r--src/decoration.c14
-rw-r--r--src/diploma.c11
-rw-r--r--src/dma3_manager.c2
-rw-r--r--src/egg_hatch.c10
-rw-r--r--src/evolution_scene.c33
-rwxr-xr-xsrc/field_map_obj_helpers.c8
-rwxr-xr-xsrc/field_message_box.c7
-rw-r--r--src/field_poison.c2
-rw-r--r--src/hall_of_fame.c10
-rw-r--r--src/item_icon.c169
-rwxr-xr-xsrc/item_use.c175
-rw-r--r--src/link.c1
-rw-r--r--src/menu.c2414
-rw-r--r--src/mystery_event_menu.c13
-rw-r--r--src/naming_screen.c34
-rw-r--r--src/palette.c269
-rw-r--r--src/pokeball.c114
-rw-r--r--src/pokeblock.c5
-rw-r--r--src/pokeblock_feed.c1
-rw-r--r--src/pokemon_1.c70
-rw-r--r--src/pokemon_2.c62
-rw-r--r--src/pokemon_3.c94
-rw-r--r--src/pokemon_animation.c4
-rw-r--r--src/pokemon_storage_system.c2
-rw-r--r--src/pokemon_summary_screen.c10
-rw-r--r--src/rayquaza_scene.c1918
-rw-r--r--src/recorded_battle.c150
-rw-r--r--src/reset_rtc_screen.c639
-rw-r--r--src/reset_save_heap.c2
-rw-r--r--src/reshow_battle_screen.c189
-rw-r--r--src/safari_zone.c6
-rw-r--r--src/save_failed_screen.c10
-rw-r--r--src/scrcmd.c14
-rw-r--r--src/secret_base.c236
-rw-r--r--src/sprite.c114
-rw-r--r--src/start_menu.c18
-rw-r--r--src/text.c6
-rw-r--r--src/title_screen.c783
-rw-r--r--src/tv.c20
-rw-r--r--src/unk_text_util_2.c12
-rw-r--r--src/wild_encounter.c4565
-rw-r--r--src/window.c2
-rw-r--r--sym_common.txt28
-rw-r--r--sym_ewram.txt364
429 files changed, 56374 insertions, 62534 deletions
diff --git a/asm/battle_anim_80A5C6C.s b/asm/battle_anim_80A5C6C.s
index 08baa4595..a3be18667 100644
--- a/asm/battle_anim_80A5C6C.s
+++ b/asm/battle_anim_80A5C6C.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start GetBankPosition
-GetBankPosition: @ 80A5C6C
+ thumb_func_start GetBattlerSpriteCoord
+GetBattlerSpriteCoord: @ 80A5C6C
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -40,7 +40,7 @@ _080A5C9C:
_080A5CB0:
ldr r4, =gUnknown_08525F58
adds r0, r5, 0
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 22
ldr r1, =gBattleTypeFlags
@@ -56,7 +56,7 @@ _080A5CB0:
_080A5CD8:
ldr r4, =gUnknown_08525F58
adds r0, r5, 0
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 22
ldr r1, =gBattleTypeFlags
@@ -90,7 +90,7 @@ _080A5D24:
b _080A5D9A
_080A5D28:
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A5D60
@@ -102,7 +102,7 @@ _080A5D28:
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A5D98
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
@@ -120,7 +120,7 @@ _080A5D60:
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A5D98
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
@@ -154,7 +154,7 @@ _080A5DB0:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end GetBankPosition
+ thumb_func_end GetBattlerSpriteCoord
thumb_func_start sub_80A5DB8
sub_80A5DB8: @ 80A5DB8
@@ -164,7 +164,7 @@ sub_80A5DB8: @ 80A5DB8
lsls r1, 16
lsrs r5, r1, 16
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A5DDA
@@ -203,7 +203,7 @@ _080A5E04:
ldrh r0, [r0, 0x2]
cmp r0, 0
bne _080A5E3C
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -293,7 +293,7 @@ _080A5EC8:
ldrh r0, [r0, 0x2]
cmp r0, 0
bne _080A5F04
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -394,7 +394,7 @@ sub_80A5FA0: @ 80A5FA0
adds r7, r4, 0
movs r5, 0
adds r0, r6, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -445,7 +445,7 @@ sub_80A600C: @ 80A600C
lsls r2, 24
lsrs r7, r2, 24
adds r0, r6, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A6030
@@ -476,7 +476,7 @@ _080A603E:
lsrs r4, r0, 16
_080A605C:
adds r0, r6, 0
- bl GetBankIdentity
+ bl GetBattlerPosition
ldr r3, =gUnknown_08525F58
lsls r0, 24
lsrs r0, 22
@@ -494,7 +494,7 @@ _080A605C:
cmp r7, 0
beq _080A609C
adds r0, r6, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A6096
@@ -577,7 +577,7 @@ _080A611C:
_080A6126:
adds r0, r4, 0
adds r1, r5, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
_080A612E:
lsls r0, 24
lsrs r0, 24
@@ -586,18 +586,18 @@ _080A612E:
bx r1
thumb_func_end sub_80A60AC
- thumb_func_start GetBankSpriteDefault_Y
-GetBankSpriteDefault_Y: @ 80A6138
+ thumb_func_start GetBattlerSpriteDefault_Y
+GetBattlerSpriteDefault_Y: @ 80A6138
push {lr}
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end GetBankSpriteDefault_Y
+ thumb_func_end GetBattlerSpriteDefault_Y
thumb_func_start GetSubstituteSpriteDefault_Y
GetSubstituteSpriteDefault_Y: @ 80A614C
@@ -605,13 +605,13 @@ GetSubstituteSpriteDefault_Y: @ 80A614C
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A6170
adds r0, r4, 0
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r1, 0x80
@@ -620,7 +620,7 @@ GetSubstituteSpriteDefault_Y: @ 80A614C
_080A6170:
adds r0, r4, 0
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r1, 0x88
@@ -642,7 +642,7 @@ sub_80A6190: @ 80A6190
lsrs r5, r0, 24
adds r0, r5, 0
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
bl IsContest
@@ -650,7 +650,7 @@ sub_80A6190: @ 80A6190
cmp r0, 0
bne _080A6238
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A61E4
@@ -662,7 +662,7 @@ sub_80A6190: @ 80A6190
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A621C
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
@@ -680,7 +680,7 @@ _080A61E4:
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A621C
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
@@ -699,7 +699,7 @@ _080A621C:
ldrh r4, [r1, 0x2]
_080A621E:
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A6238
@@ -716,56 +716,56 @@ _080A6238:
bx r1
thumb_func_end sub_80A6190
- thumb_func_start GetAnimBankSpriteId
-GetAnimBankSpriteId: @ 80A6240
+ thumb_func_start GetAnimBattlerSpriteId
+GetAnimBattlerSpriteId: @ 80A6240
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
cmp r0, 0
bne _080A6268
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl IsBankSpritePresent
+ bl IsBattlerSpritePresent
lsls r0, 24
cmp r0, 0
beq _080A62B6
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r4]
b _080A62C6
.pool
_080A6268:
cmp r0, 0x1
bne _080A6288
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
- bl IsBankSpritePresent
+ bl IsBattlerSpritePresent
lsls r0, 24
cmp r0, 0
beq _080A62B6
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r4]
b _080A62C6
.pool
_080A6288:
cmp r1, 0x2
bne _080A62A4
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A62B6
b _080A62C0
.pool
_080A62A4:
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
bne _080A62C0
@@ -774,7 +774,7 @@ _080A62B6:
b _080A62CA
.pool
_080A62C0:
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r5]
eors r0, r4
_080A62C6:
@@ -785,7 +785,7 @@ _080A62CA:
pop {r1}
bx r1
.pool
- thumb_func_end GetAnimBankSpriteId
+ thumb_func_end GetAnimBattlerSpriteId
thumb_func_start StoreSpriteCallbackInData6
StoreSpriteCallbackInData6: @ 80A62D4
@@ -1242,16 +1242,16 @@ sub_80A65EC: @ 80A65EC
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x34]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -1439,16 +1439,16 @@ sub_80A6760: @ 80A6760
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x34]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -1547,16 +1547,16 @@ sub_80A6814: @ 80A6814
sub_80A6838: @ 80A6838
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -1575,16 +1575,16 @@ sub_80A6864: @ 80A6864
lsls r1, 16
lsrs r5, r1, 16
mov r8, r5
- ldr r7, =gAnimBankAttacker
+ ldr r7, =gBattleAnimAttacker
ldrb r0, [r7]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
cmp r6, r0
@@ -1596,7 +1596,7 @@ sub_80A6864: @ 80A6864
.pool
_080A68A4:
ldrb r0, [r7]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A68BC
@@ -1729,7 +1729,7 @@ sub_80A6980: @ 80A6980
lsls r1, 24
cmp r1, 0
bne _080A69A8
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A60AC
@@ -1765,7 +1765,7 @@ sub_80A69CC: @ 80A69CC
lsls r1, 24
cmp r1, 0
bne _080A69F0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A60AC
@@ -1777,7 +1777,7 @@ sub_80A69CC: @ 80A69CC
b _080A6A04
.pool
_080A69F0:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A60AC
@@ -1806,41 +1806,41 @@ _080A6A04:
.pool
thumb_func_end sub_80A69CC
- thumb_func_start GetBankSide
-GetBankSide: @ 80A6A30
+ thumb_func_start GetBattlerSide
+GetBattlerSide: @ 80A6A30
lsls r0, 24
lsrs r0, 24
- ldr r1, =gBanksByIdentity
+ ldr r1, =gBattlerPositions
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
bx lr
.pool
- thumb_func_end GetBankSide
+ thumb_func_end GetBattlerSide
- thumb_func_start GetBankIdentity
-GetBankIdentity: @ 80A6A44
+ thumb_func_start GetBattlerPosition
+GetBattlerPosition: @ 80A6A44
lsls r0, 24
lsrs r0, 24
- ldr r1, =gBanksByIdentity
+ ldr r1, =gBattlerPositions
adds r0, r1
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end GetBankIdentity
+ thumb_func_end GetBattlerPosition
- thumb_func_start GetBankByIdentity
-GetBankByIdentity: @ 80A6A54
+ thumb_func_start GetBattlerAtPosition
+GetBattlerAtPosition: @ 80A6A54
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
movs r1, 0
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r2, [r0]
cmp r1, r2
bcs _080A6A7E
- ldr r4, =gBanksByIdentity
+ ldr r4, =gBattlerPositions
ldrb r0, [r4]
cmp r0, r3
beq _080A6A7E
@@ -1860,10 +1860,10 @@ _080A6A7E:
pop {r1}
bx r1
.pool
- thumb_func_end GetBankByIdentity
+ thumb_func_end GetBattlerAtPosition
- thumb_func_start IsBankSpritePresent
-IsBankSpritePresent: @ 80A6A90
+ thumb_func_start IsBattlerSpritePresent
+IsBattlerSpritePresent: @ 80A6A90
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -1872,28 +1872,28 @@ IsBankSpritePresent: @ 80A6A90
lsls r0, 24
cmp r0, 0
beq _080A6ABC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
cmp r0, r4
beq _080A6B0A
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
cmp r0, r4
beq _080A6B0A
b _080A6B18
.pool
_080A6ABC:
- ldr r0, =gBanksByIdentity
+ ldr r0, =gBattlerPositions
adds r0, r4, r0
ldrb r0, [r0]
cmp r0, 0xFF
beq _080A6B18
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A6AF0
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -1903,7 +1903,7 @@ _080A6ABC:
b _080A6AFE
.pool
_080A6AF0:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
@@ -1926,7 +1926,7 @@ _080A6B1A:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end IsBankSpritePresent
+ thumb_func_end IsBattlerSpritePresent
thumb_func_start IsDoubleBattle
IsDoubleBattle: @ 80A6B20
@@ -2061,7 +2061,7 @@ sub_80A6BFC: @ 80A6BFC
b _080A6C60
.pool
_080A6C30:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -2889,7 +2889,7 @@ sub_80A7238: @ 80A7238
beq _080A7268
ldr r4, =gSprites
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
@@ -2934,7 +2934,7 @@ sub_80A7270: @ 80A7270
cmp r0, 0
bne _080A72A6
adds r0, r7, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A72B4
@@ -3372,7 +3372,7 @@ _080A75F6:
_080A7602:
cmp r7, 0
beq _080A7614
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r1, r0, 0
adds r1, 0x10
@@ -3383,7 +3383,7 @@ _080A7614:
mov r0, r8
cmp r0, 0
beq _080A7628
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r1, r0, 0
adds r1, 0x10
@@ -3394,11 +3394,11 @@ _080A7628:
mov r0, r9
cmp r0, 0
beq _080A764E
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A764E
@@ -3413,11 +3413,11 @@ _080A764E:
mov r0, r10
cmp r0, 0
beq _080A7674
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A7674
@@ -3496,15 +3496,15 @@ _080A76F2:
cmp r5, 0
beq _080A771A
movs r0, 0
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A771A
movs r0, 0
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
@@ -3514,15 +3514,15 @@ _080A771A:
cmp r6, 0
beq _080A7746
movs r0, 0x2
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A7746
movs r0, 0x2
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -3534,15 +3534,15 @@ _080A7746:
cmp r7, 0
beq _080A7772
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A7772
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -3555,15 +3555,15 @@ _080A7772:
cmp r0, 0
beq _080A77A0
movs r0, 0x3
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A77A0
movs r0, 0x3
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -3592,7 +3592,7 @@ sub_80A77B4: @ 80A77B4
push {lr}
lsls r0, 24
lsrs r0, 24
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -3670,9 +3670,9 @@ _080A7838:
_080A7842:
adds r0, r5, 0
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A785C
@@ -3682,10 +3682,10 @@ _080A7842:
_080A785C:
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
@@ -3693,7 +3693,7 @@ _080A785C:
strh r0, [r5, 0x32]
ldrb r0, [r4]
adds r1, r7, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
@@ -3716,9 +3716,9 @@ sub_80A78AC: @ 80A78AC
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A78CC
@@ -3730,10 +3730,10 @@ _080A78CC:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -3741,7 +3741,7 @@ _080A78CC:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
@@ -3799,19 +3799,19 @@ _080A7954:
adds r0, r5, 0
adds r1, r4, 0
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _080A7976
.pool
_080A796C:
adds r0, r5, 0
adds r1, r4, 0
bl sub_80A6980
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_080A7976:
ldrb r6, [r0]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A798E
@@ -3828,7 +3828,7 @@ _080A798E:
strh r0, [r5, 0x2E]
adds r0, r6, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r2, [r4, 0x4]
@@ -3836,7 +3836,7 @@ _080A798E:
strh r0, [r5, 0x32]
adds r0, r6, 0
adds r1, r7, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
@@ -3858,7 +3858,7 @@ duplicate_obj_of_side_rel2move_in_transparent_mode: @ 80A79E8
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0xFF
@@ -4084,7 +4084,7 @@ sub_80A7B98: @ 80A7B98
lsrs r4, r0, 24
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0xFF
@@ -4539,7 +4539,7 @@ sub_80A7F18: @ 80A7F18
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldr r7, =0x00000181
ldr r0, =gBattleMonForms
adds r6, r5, r0
@@ -4567,7 +4567,7 @@ _080A7F42:
_080A7F78:
lsls r0, r4, 24
lsrs r0, 24
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A7FD8
@@ -4579,7 +4579,7 @@ _080A7F78:
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A7FC0
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -4614,7 +4614,7 @@ _080A7FD8:
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A8010
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -4837,14 +4837,14 @@ sub_80A8174: @ 80A8174
lsls r0, 24
lsrs r4, r0, 24
adds r7, r4, 0
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A81B4
ldr r2, =gSprites
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
@@ -4863,15 +4863,15 @@ sub_80A8174: @ 80A8174
orrs r0, r2
strb r0, [r1, 0x5]
_080A81B4:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
mov r8, r0
ldrb r0, [r0]
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A81EC
ldr r2, =gSprites
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
mov r3, r8
ldrb r0, [r3]
adds r0, r1
@@ -4894,12 +4894,12 @@ _080A81EC:
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A8224
ldr r2, =gSprites
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r6]
eors r0, r5
adds r0, r1
@@ -4922,12 +4922,12 @@ _080A8224:
mov r1, r8
ldrb r0, [r1]
eors r0, r5
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A825C
ldr r2, =gSprites
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
mov r3, r8
ldrb r0, [r3]
eors r0, r5
@@ -4959,7 +4959,7 @@ _080A825C:
sub_80A8278: @ 80A8278
push {r4-r6,lr}
movs r5, 0
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r0, [r0]
cmp r5, r0
bge _080A82D2
@@ -4968,13 +4968,13 @@ _080A8286:
lsls r0, r5, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A82C8
adds r0, r4, 0
bl sub_80A82E4
- ldr r3, =gBankSpriteIds
+ ldr r3, =gBattlerSpriteIds
adds r3, r5, r3
ldrb r2, [r3]
lsls r1, r2, 4
@@ -4998,7 +4998,7 @@ _080A8286:
strb r2, [r0, 0x5]
_080A82C8:
adds r5, 0x1
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r0, [r0]
cmp r5, r0
blt _080A8286
@@ -5027,7 +5027,7 @@ _080A82FC:
b _080A8320
_080A8300:
adds r0, r4, 0
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0x1E
@@ -5053,7 +5053,7 @@ sub_80A8328: @ 80A8328
push {r4,lr}
lsls r0, 24
lsrs r0, 24
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r4, r0, 24
bl IsContest
@@ -5093,7 +5093,7 @@ sub_80A8364: @ 80A8364
cmp r0, 0
bne _080A838A
adds r0, r4, 0
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -5486,7 +5486,7 @@ _080A86AC:
.pool
_080A86C4:
mov r0, r8
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A8790
@@ -5499,7 +5499,7 @@ _080A86C4:
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A871C
- ldr r0, =gBattlePartyID
+ ldr r0, =gBattlerPartyIndexes
mov r1, r8
lsls r4, r1, 1
adds r4, r0
@@ -5589,7 +5589,7 @@ _080A8790:
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A87DC
- ldr r0, =gBattlePartyID
+ ldr r0, =gBattlerPartyIndexes
mov r1, r8
lsls r4, r1, 1
adds r4, r0
@@ -5713,7 +5713,7 @@ _080A88A6:
_080A88AE:
mov r0, r8
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4]
@@ -5722,7 +5722,7 @@ _080A88AE:
_080A88C0:
mov r0, r8
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4]
@@ -5731,7 +5731,7 @@ _080A88C0:
_080A88D2:
mov r0, r8
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4]
@@ -5744,7 +5744,7 @@ _080A88E4:
_080A88EA:
mov r0, r8
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4]
@@ -5757,7 +5757,7 @@ _080A88FC:
_080A8902:
mov r0, r8
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
@@ -5798,13 +5798,13 @@ _080A8942:
_080A8946:
adds r0, r4, 0
adds r1, r5, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r8, r0
adds r0, r4, 0
adds r1, r6, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
bl IsDoubleBattle
@@ -5819,12 +5819,12 @@ _080A8946:
eors r4, r0
adds r0, r4, 0
adds r1, r5, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r5, r0, 24
adds r0, r4, 0
adds r1, r6, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r3, r0, 24
mov r0, r8
@@ -5941,9 +5941,9 @@ sub_80A8A6C: @ 80A8A6C
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A8AAC
@@ -5998,9 +5998,9 @@ _080A8AB6:
sub_80A8AEC: @ 80A8AEC
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A8B1C
@@ -6054,9 +6054,9 @@ sub_80A8B64: @ 80A8B64
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080A8B90
@@ -6101,14 +6101,14 @@ sub_80A8BC4: @ 80A8BC4
ldr r0, =gTasks
adds r5, r1, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r6, 0
strh r0, [r5, 0x8]
- ldr r7, =gAnimBankAttacker
+ ldr r7, =gBattleAnimAttacker
ldrb r0, [r7]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r1, 0x8
cmp r0, 0
@@ -6389,21 +6389,21 @@ _080A8E26:
sub_80A8E30: @ 80A8E30
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A8E68
@@ -6487,9 +6487,9 @@ sub_80A8EE4: @ 80A8EE4
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x36]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080A8F24
diff --git a/asm/battle_anim_80A9C70.s b/asm/battle_anim_80A9C70.s
index c471cc729..755653156 100644
--- a/asm/battle_anim_80A9C70.s
+++ b/asm/battle_anim_80A9C70.s
@@ -17,7 +17,7 @@ sub_80A9C70: @ 80A9C70
lsrs r4, 24
lsls r5, 24
lsrs r5, 24
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
ldrb r6, [r0]
ldr r0, =sub_80A9DB4
@@ -331,10 +331,10 @@ sub_80A9EF4: @ 80A9EF4
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
ldr r1, =0xffe00000
@@ -342,7 +342,7 @@ sub_80A9EF4: @ 80A9EF4
lsrs r5, r0, 16
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
ldr r1, =0xffdc0000
@@ -863,9 +863,9 @@ LaunchStatusAnimation: @ 80AA364
lsrs r4, 24
lsls r1, 24
lsrs r1, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
strb r4, [r0]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
strb r4, [r0]
ldr r0, =gBattleAnims_Statuses
movs r2, 0
diff --git a/asm/battle_anim_80D51AC.s b/asm/battle_anim_80D51AC.s
index 3ee1786ad..3f36bb4a2 100644
--- a/asm/battle_anim_80D51AC.s
+++ b/asm/battle_anim_80D51AC.s
@@ -12,7 +12,7 @@ sub_80D51AC: @ 80D51AC
lsrs r5, r0, 24
ldr r4, =gBattleAnimArgs
ldrb r0, [r4]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0xFF
@@ -165,7 +165,7 @@ sub_80D52D0: @ 80D52D0
bgt _080D52FC
lsls r0, 24
lsrs r0, 24
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0xFF
@@ -200,23 +200,23 @@ _080D5320:
_080D5324:
movs r0, 0x3
_080D5326:
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
bne _080D533C
movs r6, 0x1
_080D533C:
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
b _080D5350
.pool
_080D5348:
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
_080D5350:
@@ -379,7 +379,7 @@ sub_80D5484: @ 80D5484
lsrs r5, r0, 24
ldr r4, =gBattleAnimArgs
ldrb r0, [r4]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0xFF
@@ -603,7 +603,7 @@ sub_80D5644: @ 80D5644
lsrs r4, 24
ldr r5, =gBattleAnimArgs
ldrb r0, [r5]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
@@ -723,7 +723,7 @@ sub_80D5738: @ 80D5738
movs r6, 0x1
ldr r4, =gBattleAnimArgs
ldrb r0, [r4]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r7, r0, 24
movs r1, 0x8
@@ -842,9 +842,9 @@ sub_80D5830: @ 80D5830
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080D584C
@@ -871,9 +871,9 @@ sub_80D5860: @ 80D5860
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080D5890
@@ -891,8 +891,8 @@ _080D5894:
movs r0, 0
strh r2, [r4, 0x2E]
strh r0, [r4, 0x32]
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -938,7 +938,7 @@ sub_80D58F8: @ 80D58F8
strb r0, [r2]
ldr r5, =gBattleAnimArgs
ldrb r0, [r5, 0x4]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldrh r2, [r5]
@@ -987,13 +987,13 @@ sub_80D5968: @ 80D5968
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D598C
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
b _080D5990
.pool
_080D598C:
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankTarget
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimTarget
_080D5990:
ldrb r0, [r0]
adds r0, r1
@@ -1133,18 +1133,18 @@ sub_80D5A94: @ 80D5A94
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D5AB0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _080D5AB2
.pool
_080D5AB0:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_080D5AB2:
ldrb r2, [r0]
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r2, r0
ldrb r6, [r0]
adds r0, r2, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080D5ADC
@@ -1218,18 +1218,18 @@ sub_80D5B48: @ 80D5B48
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D5B70
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _080D5B72
.pool
_080D5B70:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_080D5B72:
ldrb r1, [r0]
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r1, r0
ldrb r7, [r0]
adds r0, r1, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080D5B9C
@@ -1338,9 +1338,9 @@ sub_80D5C50: @ 80D5C50
bl __divsi3
lsls r0, 16
lsrs r7, r0, 16
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080D5C82
@@ -1352,7 +1352,7 @@ sub_80D5C50: @ 80D5C50
strh r0, [r5, 0xA]
_080D5C82:
ldrb r0, [r5]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r1, =gTasks
lsls r4, r6, 2
adds r4, r6
@@ -1508,7 +1508,7 @@ sub_80D5DB0: @ 80D5DB0
cmp r0, 0
blt _080D5E10
ldrb r0, [r1]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r2, r0, 24
b _080D5E18
@@ -1518,20 +1518,20 @@ _080D5DD8:
beq _080D5DE8
b _080D5E10
_080D5DDE:
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
b _080D5DEA
.pool
_080D5DE8:
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
_080D5DEA:
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D5E10
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r5]
eors r0, r4
adds r0, r1
@@ -1549,9 +1549,9 @@ _080D5E18:
lsls r0, 3
adds r5, r0, r1
strh r2, [r5, 0x8]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080D5E44
@@ -1622,9 +1622,9 @@ sub_80D5EB8: @ 80D5EB8
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080D5ED4
@@ -1635,7 +1635,7 @@ sub_80D5EB8: @ 80D5EB8
_080D5ED4:
ldr r4, =gBattleAnimArgs
ldrb r0, [r4, 0x8]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, =gTasks
@@ -1660,7 +1660,7 @@ _080D5ED4:
b _080D5F18
.pool
_080D5F14:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
_080D5F18:
strh r0, [r2, 0x12]
@@ -1722,7 +1722,7 @@ sub_80D5F3C: @ 80D5F3C
.pool
_080D5F94:
ldrb r0, [r4, 0x12]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080D5FBC
@@ -1836,7 +1836,7 @@ sub_80D6064: @ 80D6064
lsrs r4, 24
ldr r6, =gBattleAnimArgs
ldrb r0, [r6, 0x6]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
@@ -1939,7 +1939,7 @@ sub_80D6134: @ 80D6134
lsrs r7, r0, 24
ldr r4, =gBattleAnimArgs
ldrb r0, [r4, 0x4]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -1995,14 +1995,14 @@ _080D61B8:
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080D61C8
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _080D61CA
.pool
_080D61C8:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_080D61CA:
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
movs r1, 0
lsls r0, 24
cmp r0, 0
@@ -2057,7 +2057,7 @@ sub_80D622C: @ 80D622C
lsrs r5, r0, 24
ldr r4, =gBattleAnimArgs
ldrb r0, [r4, 0x4]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -2076,14 +2076,14 @@ sub_80D622C: @ 80D622C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080D6274
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _080D6276
.pool
_080D6274:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_080D6276:
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080D6288
@@ -2290,7 +2290,7 @@ _080D63EE:
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x1E]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x16]
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index 9a8b378ac..f5b9697af 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -22,9 +22,9 @@ sub_80FE840: @ 80FE840
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x30]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080FE87C
@@ -96,16 +96,16 @@ sub_80FE8E0: @ 80FE8E0
ldr r0, =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -132,16 +132,16 @@ sub_80FE930: @ 80FE930
bl StartSpriteAnim
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -167,10 +167,10 @@ sub_80FE988: @ 80FE988
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -178,7 +178,7 @@ sub_80FE988: @ 80FE988
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -212,14 +212,14 @@ _080FE9FA:
ldrsh r0, [r4, r1]
cmp r0, 0x7F
ble _080FEA14
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x1
b _080FEA1E
.pool
_080FEA14:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x6
@@ -287,7 +287,7 @@ sub_80FEA58: @ 80FEA58
strh r0, [r1, 0x4]
strh r2, [r1, 0x6]
ldr r4, =gUnknown_08592210
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A82E4
adds r3, r0, 0
@@ -321,16 +321,16 @@ sub_80FEAD8: @ 80FEAD8
ldr r6, =gBattleAnimArgs
ldrh r0, [r6, 0x6]
strh r0, [r4, 0x2E]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -374,21 +374,21 @@ sub_80FEB44: @ 80FEB44
ands r1, r0
adds r0, r5, 0
bl StartSpriteAnim
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080FEB90
@@ -410,10 +410,10 @@ _080FEB94:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -421,7 +421,7 @@ _080FEB94:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -494,9 +494,9 @@ sub_80FEC48: @ 80FEC48
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080FEC68
@@ -508,10 +508,10 @@ _080FEC68:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -519,7 +519,7 @@ _080FEC68:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
@@ -655,7 +655,7 @@ sub_80FED74: @ 80FED74
lsrs r0, 16
cmp r0, 0x7F
bhi _080FEDC8
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -669,7 +669,7 @@ sub_80FED74: @ 80FED74
b _080FEDEC
.pool
_080FEDC8:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
adds r0, 0x1
@@ -730,7 +730,7 @@ _080FEE36:
bl DestroyAnimVisualTask
b _080FEE70
_080FEE3E:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -771,10 +771,10 @@ sub_80FEE78: @ 80FEE78
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x4]
@@ -823,14 +823,14 @@ sub_80FEECC: @ 80FEECC
lsrs r0, 16
cmp r0, 0x7F
bhi _080FEF18
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
b _080FEF22
.pool
_080FEF18:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x1
@@ -868,10 +868,10 @@ sub_80FEF44: @ 80FEF44
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x4]
@@ -950,16 +950,16 @@ _080FEFF6:
sub_80FEFFC: @ 80FEFFC
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -1026,9 +1026,9 @@ _080FF08C:
sub_80FF090: @ 80FF090
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080FF0B4
@@ -1080,9 +1080,9 @@ sub_80FF0F4: @ 80FF0F4
adds r5, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080FF114
@@ -1098,10 +1098,10 @@ _080FF114:
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080FF154
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
@@ -1109,7 +1109,7 @@ _080FF114:
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
@@ -1117,7 +1117,7 @@ _080FF114:
b _080FF174
.pool
_080FF154:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -1139,13 +1139,13 @@ _080FF174:
strh r0, [r5, 0x38]
adds r0, r5, 0
bl sub_80A68D4
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -1265,7 +1265,7 @@ sub_80FF268: @ 80FF268
lsrs r0, 24
cmp r0, 0x1
bne _080FF28A
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -1350,7 +1350,7 @@ _080FF2F8:
ldrsh r0, [r4, r1]
cmp r0, 0x7F
bgt _080FF338
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
@@ -1359,7 +1359,7 @@ _080FF2F8:
b _080FF346
.pool
_080FF338:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
@@ -1434,7 +1434,7 @@ sub_80FF3B0: @ 80FF3B0
ands r0, r1
strb r0, [r2]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
movs r0, 0x80
lsls r0, 1
strh r0, [r4, 0x2E]
@@ -1452,7 +1452,7 @@ sub_80FF3EC: @ 80FF3EC
push {r4,lr}
adds r4, r0, 0
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
@@ -1517,7 +1517,7 @@ sub_80FF458: @ 80FF458
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r1, r0, 24
ldr r0, =gSprites
@@ -1550,7 +1550,7 @@ _080FF498:
lsls r0, 28
lsrs r0, 30
strh r0, [r6, 0x24]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
mov r9, r0
ldrb r0, [r0]
bl sub_80A8328
@@ -1567,7 +1567,7 @@ _080FF498:
orrs r0, r1
strb r0, [r7, 0x5]
movs r0, 0x3
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r1, r0, 24
lsls r4, r1, 4
@@ -1618,7 +1618,7 @@ sub_80FF53C: @ 80FF53C
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
@@ -1639,9 +1639,9 @@ sub_80FF53C: @ 80FF53C
lsls r1, 16
asrs r1, 24
strh r1, [r5, 0x24]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080FF586
@@ -1698,7 +1698,7 @@ sub_80FF5CC: @ 80FF5CC
cmp r5, 0
bne _080FF674
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -1723,7 +1723,7 @@ sub_80FF5CC: @ 80FF5CC
orrs r0, r2
strb r0, [r1, 0x5]
movs r0, 0x3
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 4
@@ -1785,9 +1785,9 @@ sub_80FF698: @ 80FF698
beq _080FF704
b _080FF756
_080FF6AA:
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080FF6C2
@@ -1799,7 +1799,7 @@ _080FF6AA:
_080FF6C2:
ldrb r0, [r6]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -1808,7 +1808,7 @@ _080FF6C2:
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -1845,16 +1845,16 @@ _080FF704:
bl ChangeSpriteAffineAnim
movs r0, 0x19
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -1878,16 +1878,16 @@ sub_80FF768: @ 80FF768
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080FF7D4
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -1941,31 +1941,31 @@ sub_80FF7EC: @ 80FF7EC
push {r4-r6}
sub sp, 0x4
mov r9, r0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
mov r8, r0
mov r0, r8
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r2, r0, 0
lsls r2, 24
subs r4, r5
@@ -2095,10 +2095,10 @@ sub_80FF934: @ 80FF934
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080FF974
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -2107,7 +2107,7 @@ sub_80FF934: @ 80FF934
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x2]
@@ -2349,18 +2349,18 @@ sub_80FFB18: @ 80FFB18
adds r5, r0, 0
movs r1, 0
bl sub_80A69CC
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -2453,14 +2453,14 @@ _080FFBEC:
sub_80FFBF4: @ 80FFBF4
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -2551,18 +2551,18 @@ sub_80FFCB4: @ 80FFCB4
adds r5, r0, 0
movs r1, 0
bl sub_80A6980
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -2954,7 +2954,7 @@ sub_80FFFC0: @ 80FFFC0
lsls r0, 3
ldr r1, =gTasks
adds r5, r0, r1
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
bl sub_80A82E4
lsls r0, 24
@@ -2963,13 +2963,13 @@ sub_80FFFC0: @ 80FFFC0
strh r0, [r5, 0x10]
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x16]
@@ -2982,7 +2982,7 @@ sub_80FFFC0: @ 80FFFC0
bl sub_80A861C
strh r0, [r5, 0x1E]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
movs r2, 0x1
@@ -3772,15 +3772,15 @@ sub_8100640: @ 8100640
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810065C
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0810065E
.pool
_0810065C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0810065E:
ldrb r6, [r0]
adds r0, r6, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08100688
@@ -3837,7 +3837,7 @@ _081006CE:
_081006D4:
adds r0, r6, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5]
@@ -3857,17 +3857,17 @@ _081006E4:
strb r0, [r4, 0x5]
b _08100738
_08100700:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r7, [r7]
adds r0, r7
strh r0, [r4, 0x22]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
_0810071A:
adds r0, r6, 0
bl sub_80A8328
@@ -4074,20 +4074,20 @@ _081008B4:
ldrsh r0, [r1, r3]
cmp r0, 0
bne _081008C4
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _081008C6
.pool
_081008C4:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_081008C6:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r5, r0, 24
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r2, r0, 24
ldr r0, =gBattleAnimArgs
@@ -4237,9 +4237,9 @@ _081009F2:
sub_81009F8: @ 81009F8
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08100A20
@@ -4277,9 +4277,9 @@ _08100A2C:
sub_8100A50: @ 8100A50
push {r4,r5,lr}
adds r5, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08100A6A
@@ -4343,21 +4343,21 @@ sub_8100A94: @ 8100A94
sub_8100AE0: @ 8100AE0
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08100B14
@@ -4439,12 +4439,12 @@ sub_8100B88: @ 8100B88
b _08100C24
.pool
_08100BA8:
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r5]
@@ -4453,15 +4453,15 @@ _08100BA8:
b _08100C34
.pool
_08100BC8:
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r5]
@@ -4469,7 +4469,7 @@ _08100BC8:
mov r8, r2
mov r1, r8
eors r0, r1
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08100C3E
@@ -4477,7 +4477,7 @@ _08100BC8:
mov r2, r8
eors r0, r2
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r7
@@ -4486,7 +4486,7 @@ _08100BC8:
mov r1, r8
eors r0, r1
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r4
@@ -4494,24 +4494,24 @@ _08100BC8:
b _08100C3E
.pool
_08100C24:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r4]
_08100C34:
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r4, r0, 24
_08100C3E:
strh r7, [r6, 0x20]
strh r4, [r6, 0x22]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08100C56
@@ -4754,9 +4754,9 @@ sub_8100E1C: @ 8100E1C
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08100E44
@@ -4866,7 +4866,7 @@ sub_8100EF0: @ 8100EF0
adds r0, 0x8
strh r0, [r1, 0x2]
_08100F06:
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0
bl sub_80A60AC
@@ -4885,7 +4885,7 @@ _08100F06:
adds r0, r4
strh r0, [r5, 0x22]
ldrb r0, [r6]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08100F44
@@ -5090,17 +5090,17 @@ _081010C2:
sub_81010CC: @ 81010CC
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x20]
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r1, =0x0000ffe8
@@ -5426,11 +5426,11 @@ sub_810135C: @ 810135C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08101378
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0810137A
.pool
_08101378:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0810137A:
ldrb r6, [r0]
bl IsDoubleBattle
@@ -5440,7 +5440,7 @@ _0810137A:
movs r1, 0x2
adds r0, r6, 0
eors r0, r1
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081013C4
@@ -5470,7 +5470,7 @@ _081013C4:
bne _081013E8
adds r0, r6, 0
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
@@ -5481,14 +5481,14 @@ _081013C4:
_081013E8:
adds r0, r6, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
adds r0, r6, 0
movs r1, 0x3
_081013FA:
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -5523,9 +5523,9 @@ sub_8101440: @ 8101440
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08101474
@@ -5611,9 +5611,9 @@ sub_81014F4: @ 81014F4
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810152C
@@ -5885,17 +5885,17 @@ _08101718:
strh r1, [r5, 0x24]
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r7
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -6199,9 +6199,9 @@ sub_8101998: @ 8101998
adds r4, r0, 0
movs r0, 0x6
strh r0, [r4, 0x2E]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r2, 0x2
negs r2, r2
@@ -6213,7 +6213,7 @@ _081019B6:
strh r1, [r4, 0x30]
movs r0, 0
strh r0, [r4, 0x32]
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r0, [r0]
@@ -6237,8 +6237,8 @@ sub_81019E8: @ 81019E8
ldrsh r6, [r5, r0]
cmp r6, 0
bne _08101A24
- ldr r1, =gBankSpriteIds
- ldr r4, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
@@ -6246,7 +6246,7 @@ sub_81019E8: @ 81019E8
movs r1, 0
bl sub_80A7270
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x3A]
@@ -6301,9 +6301,9 @@ sub_8101A74: @ 8101A74
adds r4, r0, 0
movs r0, 0x4
strh r0, [r4, 0x2E]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r1, 0x3
cmp r0, 0
@@ -6315,7 +6315,7 @@ _08101A92:
strh r1, [r4, 0x30]
movs r0, 0
strh r0, [r4, 0x32]
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r5]
adds r0, r1
ldrb r0, [r0]
@@ -6360,19 +6360,19 @@ sub_8101AE8: @ 8101AE8
ldrsh r0, [r5, r1]
cmp r0, 0
bne _08101B38
- ldr r1, =gBankSpriteIds
- ldr r4, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
strh r0, [r5, 0x34]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x3A]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08101B2C
@@ -6465,14 +6465,14 @@ _08101BB6:
b _08101C8E
_08101BBC:
strh r5, [r4, 0x30]
- ldr r1, =gBankSpriteIds
- ldr r2, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r2, =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
strh r0, [r4, 0x32]
ldrb r0, [r2]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x34]
@@ -6575,15 +6575,15 @@ sub_8101C94: @ 8101C94
adds r0, r6
lsls r0, 3
adds r5, r0, r1
- ldr r1, =gBankSpriteIds
- ldr r2, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r2, =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
movs r4, 0
strh r0, [r5, 0x8]
ldrb r0, [r2]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r2, r0, 24
strh r2, [r5, 0xA]
@@ -6922,15 +6922,15 @@ sub_8101F40: @ 8101F40
ldrsh r0, [r6, r1]
cmp r0, 0
bne _08101F5C
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _08101F5E
.pool
_08101F5C:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_08101F5E:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
@@ -6938,7 +6938,7 @@ _08101F5E:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
@@ -6962,10 +6962,10 @@ _08101F5E:
sub_8101FA8: @ 8101FA8
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r1, =0x0000ffd0
@@ -6973,7 +6973,7 @@ sub_8101FA8: @ 8101FA8
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -6992,10 +6992,10 @@ sub_8101FA8: @ 8101FA8
sub_8101FF0: @ 8101FF0
push {r4-r6,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r1, =gBattleAnimArgs
@@ -7007,7 +7007,7 @@ sub_8101FF0: @ 8101FF0
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -7115,15 +7115,15 @@ sub_81020D8: @ 81020D8
ldrsh r0, [r6, r1]
cmp r0, 0
bne _081020F4
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _081020F6
.pool
_081020F4:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_081020F6:
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
@@ -7131,7 +7131,7 @@ _081020F6:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
@@ -7191,17 +7191,17 @@ _08102178:
sub_810217C: @ 810217C
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x20]
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
subs r0, 0xC
@@ -7316,10 +7316,10 @@ sub_8102268: @ 8102268
ldrsh r0, [r6, r1]
cmp r0, 0
bne _081022B2
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r5, =gBattleAnimArgs
lsrs r0, 24
@@ -7328,7 +7328,7 @@ sub_8102268: @ 8102268
strh r0, [r6, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x2]
@@ -7465,16 +7465,16 @@ _08102390:
strb r0, [r2]
movs r0, 0x1E
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -7539,19 +7539,19 @@ sub_8102434: @ 8102434
lsls r0, 24
lsrs r7, r0, 24
movs r4, 0
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
bcs _08102490
ldr r6, =gBattleAnimArgs
- ldr r5, =gHealthBoxesIds
+ ldr r5, =gHealthboxSpriteIds
_08102448:
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0x1
bne _08102464
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08102464
@@ -7564,7 +7564,7 @@ _08102464:
cmp r0, 0x1
bne _08102482
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -7576,7 +7576,7 @@ _08102482:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
bcc _08102448
@@ -7597,7 +7597,7 @@ sub_81024A8: @ 81024A8
movs r4, 0
b _081024C2
_081024B2:
- ldr r0, =gHealthBoxesIds
+ ldr r0, =gHealthboxSpriteIds
adds r0, r4, r0
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
@@ -7605,7 +7605,7 @@ _081024B2:
lsls r0, 24
lsrs r4, r0, 24
_081024C2:
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
bcc _081024B2
@@ -7673,10 +7673,10 @@ _0810253A:
sub_8102540: @ 8102540
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r2, =gBattleAnimArgs
lsrs r0, 24
@@ -8068,10 +8068,10 @@ _08102862:
strh r0, [r5, 0x2E]
ldrh r0, [r6, 0x4]
strh r0, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6]
@@ -8079,7 +8079,7 @@ _08102862:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x2]
@@ -8113,9 +8113,9 @@ _08102862:
b _081028FA
.pool
_081028D4:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810291C
@@ -8237,7 +8237,7 @@ sub_81029B4: @ 81029B4
ldr r1, =gTasks
adds r6, r0, r1
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x8]
@@ -8333,7 +8333,7 @@ _08102A88:
_08102A9A:
ldr r0, =sub_8102AE0
str r0, [r6]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -8374,7 +8374,7 @@ sub_8102AE0: @ 8102AE0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08102B32
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -8657,15 +8657,15 @@ _08102D10:
b _08102D4E
.pool
_08102D34:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r3, r0, 24
_08102D4E:
@@ -8855,9 +8855,9 @@ _08102EA6:
sub_8102EB0: @ 8102EB0
push {r4-r7,lr}
adds r6, r0, 0
- ldr r7, =gAnimBankAttacker
+ ldr r7, =gBattleAnimAttacker
ldrb r0, [r7]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -8870,7 +8870,7 @@ sub_8102EB0: @ 8102EB0
_08102ECE:
ldrb r0, [r7]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -8880,7 +8880,7 @@ _08102ECE:
strh r0, [r6, 0x20]
ldrb r0, [r7]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r2, [r4, 0x4]
@@ -9002,17 +9002,17 @@ sub_8102FB8: @ 8102FB8
_08102FDC:
ldr r6, =0x0000fff0
_08102FDE:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r6
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x8
@@ -9149,7 +9149,7 @@ sub_810310C: @ 810310C
lsls r0, 24
lsrs r5, r0, 24
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810312C
@@ -9167,7 +9167,7 @@ _08103136:
strh r0, [r6, 0x20]
adds r0, r5, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
adds r0, r5, 0
movs r1, 0
@@ -9197,18 +9197,18 @@ sub_8103164: @ 8103164
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08103180
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08103182
.pool
_08103180:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08103182:
ldrb r4, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl sub_810310C
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
negs r1, r0
@@ -9268,11 +9268,11 @@ sub_8103208: @ 8103208
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08103224
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08103226
.pool
_08103224:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08103226:
ldrb r0, [r0]
adds r1, r4, 0
@@ -9325,16 +9325,16 @@ sub_8103284: @ 8103284
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081032A0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _081032A2
.pool
_081032A0:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_081032A2:
ldrb r5, [r0]
adds r0, r5, 0
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r6, 0
@@ -9463,18 +9463,18 @@ sub_8103390: @ 8103390
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081033AC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _081033AE
.pool
_081033AC:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_081033AE:
ldrb r4, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl sub_810310C
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _081033D4
@@ -9591,11 +9591,11 @@ sub_8103498: @ 8103498
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081034B4
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _081034B6
.pool
_081034B4:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_081034B6:
ldrb r0, [r0]
adds r1, r4, 0
@@ -9716,26 +9716,26 @@ _0810357A:
sub_810358C: @ 810358C
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankTarget
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r0, r1
ldrb r6, [r0]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _081035E4
@@ -9846,8 +9846,8 @@ sub_81036A0: @ 81036A0
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -9871,12 +9871,12 @@ sub_81036DC: @ 81036DC
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r1, r0, r1
ldrb r4, [r1]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08103718
@@ -9992,9 +9992,9 @@ sub_81037D8: @ 81037D8
push {r4,r5,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08103804
@@ -10018,9 +10018,9 @@ _08103810:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810384C
@@ -10117,9 +10117,9 @@ sub_81038C8: @ 81038C8
b _0810390E
.pool
_081038EC:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810390E
@@ -10137,10 +10137,10 @@ _0810390E:
adds r0, r5, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r6, =gBattleAnimArgs
lsrs r0, 24
@@ -10151,7 +10151,7 @@ _0810390E:
mov r8, r0
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r2, [r6, 0x6]
@@ -10676,8 +10676,8 @@ _08103D54:
strh r0, [r3, 0x4]
b _08103DB6
_08103D5C:
- ldr r1, =gBanksByIdentity
- ldr r0, =gAnimBankTarget
+ ldr r1, =gBattlerPositions
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -10716,10 +10716,10 @@ _08103DB0:
_08103DB4:
strh r0, [r2, 0x4]
_08103DB6:
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
ldr r1, =gTasks
mov r3, r8
adds r4, r3, r7
@@ -10731,7 +10731,7 @@ _08103DB6:
adds r6, r0, 0
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
@@ -10742,11 +10742,11 @@ _08103DB6:
ands r0, r1
cmp r0, 0
beq _08103E20
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08103E20
@@ -10759,16 +10759,16 @@ _08103DB6:
.pool
_08103E20:
mov r5, sp
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r1, r10
@@ -10897,7 +10897,7 @@ _08103F28:
asrs r0, 16
cmp r0, 0x3F
ble _08103FA0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -10914,7 +10914,7 @@ _08103F78:
asrs r0, 16
cmp r0, 0x3F
ble _08103FA0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -10927,7 +10927,7 @@ _08103F78:
b _08103FB0
.pool
_08103FA0:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -11050,15 +11050,15 @@ sub_8104088: @ 8104088
adds r5, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -11066,9 +11066,9 @@ sub_8104088: @ 8104088
adds r0, r1
lsls r0, 16
lsrs r7, r0, 16
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _081040CC
@@ -11145,9 +11145,9 @@ sub_8104154: @ 8104154
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08104178
@@ -11200,16 +11200,16 @@ sub_81041C4: @ 81041C4
bl sub_80A69CC
movs r0, 0x14
strh r0, [r4, 0x2E]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -11352,9 +11352,9 @@ sub_8104304: @ 8104304
adds r4, r0, 0
movs r1, 0
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08104322
@@ -11423,17 +11423,17 @@ _08104390:
strh r0, [r5, 0x22]
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
add r0, r8
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -11510,10 +11510,10 @@ _08104448:
movs r0, 0x6
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
add r0, r9
@@ -11522,7 +11522,7 @@ _08104448:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -11678,7 +11678,7 @@ sub_81045B0: @ 81045B0
lsls r5, 24
lsrs r5, 24
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -11735,7 +11735,7 @@ sub_8104614: @ 8104614
cmp r1, r0
bne _08104664
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -11771,7 +11771,7 @@ sub_8104674: @ 8104674
ldr r0, =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -11786,7 +11786,7 @@ sub_8104674: @ 8104674
strh r0, [r4, 0x10]
strh r5, [r4, 0x12]
strh r5, [r4, 0x14]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -12129,7 +12129,7 @@ sub_8104938: @ 8104938
.pool
_08104964:
ldrb r0, [r5]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -12303,7 +12303,7 @@ sub_8104AB4: @ 8104AB4
ldr r0, =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -12345,9 +12345,9 @@ _08104B10:
sub_8104B1C: @ 8104B1C
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08104B50
@@ -12356,7 +12356,7 @@ sub_8104B1C: @ 8104B1C
bl StartSpriteAnim
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -12370,7 +12370,7 @@ _08104B50:
bl StartSpriteAnim
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
subs r0, 0x20
@@ -12378,10 +12378,10 @@ _08104B50:
ldr r0, =0x0000ffc0
_08104B6A:
strh r0, [r4, 0x30]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r1, 0
@@ -12411,15 +12411,15 @@ sub_8104BAC: @ 8104BAC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08104BC8
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08104BCA
.pool
_08104BC8:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08104BCA:
ldrb r5, [r0]
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -12432,7 +12432,7 @@ _08104BCA:
_08104BE4:
adds r0, r5, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -12441,7 +12441,7 @@ _08104BE4:
strh r0, [r6, 0x20]
adds r0, r5, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x4]
@@ -12476,7 +12476,7 @@ sub_8104C38: @ 8104C38
ldr r0, =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -12528,7 +12528,7 @@ sub_8104CA4: @ 8104CA4
ldr r0, =gTasks
adds r4, r1, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r2, 0
@@ -12559,9 +12559,9 @@ sub_8104CA4: @ 8104CA4
strh r2, [r4, 0x18]
movs r0, 0x2
strh r0, [r4, 0x1A]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -12759,7 +12759,7 @@ sub_8104E74: @ 8104E74
lsls r1, 3
ldr r0, =gTasks
adds r5, r1, r0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
bl sub_80A6190
lsls r0, 24
@@ -12959,10 +12959,10 @@ _0810500E:
sub_810501C: @ 810501C
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
subs r0, 0x10
@@ -13194,11 +13194,11 @@ sub_81051C4: @ 81051C4
adds r1, r0, 0
cmp r2, 0
bne _081051F0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _081051F2
.pool
_081051F0:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_081051F2:
ldrb r5, [r0]
ldrb r1, [r1, 0x6]
@@ -13212,7 +13212,7 @@ _081051F2:
movs r1, 0x2
adds r0, r5, 0
eors r0, r1
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810526A
@@ -13231,11 +13231,11 @@ _08105230:
adds r0, r5, 0
movs r1, 0x2
_08105234:
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r4, r0, 24
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08105260
@@ -13305,15 +13305,15 @@ sub_81052A4: @ 81052A4
ldrsh r0, [r0, r2]
cmp r0, 0
bne _081052DC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r7, [r0]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
b _081052E2
.pool
_081052DC:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r7, [r0]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
_081052E2:
ldrb r0, [r0]
mov r8, r0
@@ -13335,13 +13335,13 @@ _08105308:
str r3, [sp, 0x4]
_08105310:
adds r0, r7, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810536C
adds r0, r7, 0
mov r1, r10
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r1, =gBattleAnimArgs
lsrs r0, 24
@@ -13354,25 +13354,25 @@ _08105310:
mov r4, r8
eors r4, r0
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810535C
ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
b _081053EA
.pool
_0810535C:
ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
add r0, r8
b _081053EA
.pool
_0810536C:
adds r0, r7, 0
mov r1, r10
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r1, =gBattleAnimArgs
@@ -13389,12 +13389,12 @@ _0810536C:
adds r4, r7, 0
eors r4, r0
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081053E4
ldr r3, =gSprites
- ldr r2, =gBankSpriteIds
+ ldr r2, =gBattlerSpriteIds
adds r0, r7, r2
ldrb r1, [r0]
lsls r0, r1, 4
@@ -13424,7 +13424,7 @@ _081053E0:
b _081053F4
_081053E4:
ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r7, r0
_081053EA:
ldrb r1, [r0]
@@ -13442,7 +13442,7 @@ _081053FA:
strb r0, [r1]
adds r0, r7, 0
ldr r1, [sp, 0x4]
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -13457,7 +13457,7 @@ _081053FA:
movs r1, 0x2
mov r0, r8
eors r0, r1
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810544C
@@ -13473,20 +13473,20 @@ _0810544C:
mov r4, sp
mov r0, r8
mov r1, r10
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
mov r0, r8
ldr r1, [sp, 0x4]
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r2, sp
strh r0, [r2, 0x2]
_0810546C:
mov r0, r8
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08105490
@@ -13581,9 +13581,9 @@ sub_8105538: @ 8105538
adds r4, r0, 0
movs r1, 0
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r1, 0xA0
cmp r0, 0
@@ -13622,9 +13622,9 @@ sub_810557C: @ 810557C
strh r0, [r4, 0x24]
subs r2, 0x20
strh r2, [r4, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r1, 0xA0
cmp r0, 0
@@ -13873,7 +13873,7 @@ sub_810577C: @ 810577C
ldr r0, =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -13950,9 +13950,9 @@ sub_8105810: @ 8105810
strh r0, [r4, 0xE]
movs r0, 0x3
strh r0, [r4, 0x20]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08105850
@@ -13968,7 +13968,7 @@ _08105850:
_08105856:
strh r0, [r4, 0x24]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -14154,7 +14154,7 @@ sub_810599C: @ 810599C
movs r0, 0x2
strh r0, [r4, 0x24]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -14292,16 +14292,16 @@ sub_8105AAC: @ 8105AAC
strh r0, [r4, 0x16]
strh r0, [r4, 0x18]
strh r0, [r4, 0x22]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -14684,9 +14684,9 @@ sub_8105DE8: @ 8105DE8
adds r5, r0, 0
movs r1, 0
bl sub_80A69CC
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08105E08
@@ -14700,7 +14700,7 @@ _08105E08:
strh r0, [r5, 0x2E]
ldrb r0, [r6]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -14708,7 +14708,7 @@ _08105E08:
strh r0, [r5, 0x32]
ldrb r0, [r6]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
@@ -14939,7 +14939,7 @@ sub_8106020: @ 8106020
lsrs r0, 24
adds r6, r0, 0
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r4, r0, 24
ldr r1, =gTasks
@@ -14955,7 +14955,7 @@ sub_8106020: @ 8106020
cmp r0, 0x1
bne _0810607C
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -15004,7 +15004,7 @@ sub_81060B0: @ 81060B0
lsrs r0, 24
adds r6, r0, 0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r4, r0, 24
ldr r1, =gTasks
@@ -15020,7 +15020,7 @@ sub_81060B0: @ 81060B0
cmp r0, 0x1
bne _0810610C
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -15072,10 +15072,10 @@ sub_8106140: @ 8106140
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -15083,7 +15083,7 @@ sub_8106140: @ 8106140
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -15561,9 +15561,9 @@ _0810653A:
b _0810658A
.pool
_08106578:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -15773,16 +15773,16 @@ _08106730:
sub_810673C: @ 810673C
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -15924,16 +15924,16 @@ _08106868:
sub_8106878: @ 8106878
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -16029,16 +16029,16 @@ _08106940:
sub_8106944: @ 8106944
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -16314,7 +16314,7 @@ sub_8106B54: @ 8106B54
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
@@ -16505,21 +16505,21 @@ _08106CEC:
ldrsh r0, [r1, r2]
cmp r0, 0
bne _08106CFC
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _08106CFE
.pool
_08106CFC:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_08106CFE:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -16593,7 +16593,7 @@ sub_8106D90: @ 8106D90
lsrs r5, 24
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -16645,15 +16645,15 @@ sub_8106E00: @ 8106E00
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08106E1C
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08106E1E
.pool
_08106E1C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08106E1E:
ldrb r6, [r0]
adds r0, r6, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -16666,7 +16666,7 @@ _08106E1E:
_08106E38:
adds r0, r6, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r7, =gBattleAnimArgs
lsrs r0, 24
@@ -16676,7 +16676,7 @@ _08106E38:
strh r0, [r5, 0x20]
adds r0, r6, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r7, 0x4]
@@ -16992,11 +16992,11 @@ sub_81070AC: @ 81070AC
ands r0, r1
cmp r0, 0
beq _081070F8
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081070F8
@@ -17016,16 +17016,16 @@ sub_81070AC: @ 81070AC
b _08107118
.pool
_081070F8:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x28
@@ -17196,15 +17196,15 @@ _0810725A:
sub_8107260: @ 8107260
push {r4-r6,lr}
adds r6, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08107290
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r4, =gBattleAnimArgs
@@ -17215,7 +17215,7 @@ sub_8107260: @ 8107260
_08107290:
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -17225,7 +17225,7 @@ _081072A2:
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -17237,9 +17237,9 @@ _081072A2:
movs r1, 0x40
orrs r0, r1
strb r0, [r2]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _081072D8
@@ -17253,10 +17253,10 @@ _081072D8:
strh r0, [r6, 0x2E]
ldrh r0, [r6, 0x20]
strh r0, [r6, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x32]
@@ -17264,7 +17264,7 @@ _081072D8:
strh r0, [r6, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x36]
@@ -17422,9 +17422,9 @@ sub_810744C: @ 810744C
adds r5, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810747C
@@ -17445,10 +17445,10 @@ _08107482:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -17457,7 +17457,7 @@ _08107482:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r7, [r7, 0x6]
@@ -17621,10 +17621,10 @@ sub_81075EC: @ 81075EC
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -17632,7 +17632,7 @@ sub_81075EC: @ 81075EC
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -17773,16 +17773,16 @@ _08107722:
sub_8107730: @ 8107730
push {r4-r7,lr}
adds r4, r0, 0
- ldr r7, =gAnimBankAttacker
+ ldr r7, =gBattleAnimAttacker
ldrb r0, [r7]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r7]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -17797,7 +17797,7 @@ sub_8107730: @ 8107730
cmp r0, 0
bne _0810778A
ldrb r0, [r7]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08107784
@@ -17846,13 +17846,13 @@ _081077BA:
sub_81077C0: @ 81077C0
push {r4-r7,lr}
adds r6, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -17863,12 +17863,12 @@ sub_81077C0: @ 81077C0
negs r0, r0
strh r0, [r4]
ldrb r0, [r5]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
beq _08107802
ldrb r0, [r5]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -17898,9 +17898,9 @@ _0810781E:
_08107828:
adds r0, r6, 0
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08107842
@@ -17910,10 +17910,10 @@ _08107828:
_08107842:
ldrh r0, [r5, 0x8]
strh r0, [r6, 0x2E]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r5, 0x4]
@@ -17921,7 +17921,7 @@ _08107842:
strh r0, [r6, 0x32]
ldrb r0, [r4]
adds r1, r7, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x6]
@@ -18069,9 +18069,9 @@ sub_8107954: @ 8107954
movs r1, 0x3
movs r2, 0x1
bl SetAnimBgAttribute
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -18174,9 +18174,9 @@ _08107A32:
b _08107B0E
.pool
_08107AB4:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x1
@@ -18963,7 +18963,7 @@ sub_81080E4: @ 81080E4
ldr r0, =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -19278,13 +19278,13 @@ _0810837A:
thumb_func_start sub_8108384
sub_8108384: @ 8108384
push {r4,r5,lr}
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _081083B8
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -19298,7 +19298,7 @@ _081083B4:
adds r0, r2, 0
b _081083FA
_081083B8:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -19350,16 +19350,16 @@ sub_8108408: @ 8108408
lsls r1, 24
lsrs r1, 24
str r1, [sp]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0xAC
@@ -19576,9 +19576,9 @@ sub_81085C8: @ 81085C8
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xA]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08108600
@@ -19956,22 +19956,22 @@ sub_81088E4: @ 81088E4
lsls r1, 3
ldr r0, =gTasks
adds r5, r1, r0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r6, 0
strh r0, [r5, 0xE]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x10]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r2, 0x1
negs r2, r2
@@ -20418,16 +20418,16 @@ sub_8108C94: @ 8108C94
adds r4, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x30]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -20593,7 +20593,7 @@ _08108DE2:
strh r0, [r4, 0x2E]
mov r0, r9
strh r0, [r4, 0x30]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
@@ -20648,7 +20648,7 @@ _08108E58:
strh r0, [r4, 0x2E]
mov r0, r9
strh r0, [r4, 0x30]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
@@ -20746,9 +20746,9 @@ sub_8108F4C: @ 8108F4C
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08108F88
@@ -20798,9 +20798,9 @@ _08108F9E:
sub_8108FBC: @ 8108FBC
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08108FF0
@@ -20886,9 +20886,9 @@ sub_8109064: @ 8109064
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08109090
@@ -21037,26 +21037,26 @@ sub_810916C: @ 810916C
sub_8109198: @ 8109198
push {r4-r6,lr}
adds r6, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _081091DE
movs r0, 0x2
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
ldrb r1, [r5]
lsls r0, 24
lsrs r0, 24
cmp r1, r0
beq _081091D6
movs r0, 0x3
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
ldrb r1, [r5]
lsls r0, 24
lsrs r0, 24
@@ -21128,10 +21128,10 @@ sub_8109244: @ 8109244
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -21139,7 +21139,7 @@ sub_8109244: @ 8109244
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -21164,16 +21164,16 @@ sub_810929C: @ 810929C
beq _081092E4
movs r4, 0
strh r4, [r6, 0x2E]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
@@ -21389,7 +21389,7 @@ sub_8109460: @ 8109460
ldr r0, =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -21407,9 +21407,9 @@ sub_8109460: @ 8109460
adds r0, r2
ldrh r0, [r0, 0x22]
strh r0, [r4, 0x10]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x12]
@@ -21820,9 +21820,9 @@ sub_81097B4: @ 81097B4
lsls r0, 2
adds r0, r1
ldrh r4, [r0, 0x20]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810980C
@@ -21992,9 +21992,9 @@ sub_8109930: @ 8109930
adds r0, r2
lsls r0, 16
lsrs r4, r0, 16
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08109970
@@ -22248,9 +22248,9 @@ _08109B18:
bl StartSpriteAnim
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x3C]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08109B48
@@ -22261,7 +22261,7 @@ _08109B48:
ldr r0, =0x0000fffc
_08109B4A:
strh r0, [r5, 0x36]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -22279,9 +22279,9 @@ _08109B70:
ldrh r0, [r5, 0x30]
adds r0, 0xC0
strh r0, [r5, 0x30]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08109B94
@@ -22356,10 +22356,10 @@ _08109BCE:
lsls r0, 1
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -22367,7 +22367,7 @@ _08109BCE:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -22485,7 +22485,7 @@ _08109CC8:
lsrs r0, 16
cmp r0, 0x83
bls _08109D3C
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -22500,7 +22500,7 @@ _08109CC8:
b _08109D80
.pool
_08109D3C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
@@ -22578,9 +22578,9 @@ sub_8109DBC: @ 8109DBC
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r2, 0x1
negs r2, r2
@@ -22590,22 +22590,22 @@ sub_8109DBC: @ 8109DBC
movs r1, 0x1
_08109DE2:
strh r1, [r4, 0x20]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
strh r0, [r4, 0x22]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
movs r0, 0x3
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -22973,8 +22973,8 @@ _0810A0CA:
ldrh r0, [r2, 0x8]
adds r0, 0x1
strh r0, [r2, 0x8]
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankTarget
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r0, r1
ldrb r6, [r0]
@@ -23075,9 +23075,9 @@ _0810A194:
sub_810A1A8: @ 810A1A8
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810A1D0
@@ -23129,9 +23129,9 @@ _0810A20E:
sub_810A214: @ 810A214
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810A23C
@@ -23178,22 +23178,22 @@ _0810A26E:
sub_810A274: @ 810A274
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810A2C4
@@ -23261,15 +23261,15 @@ _0810A324:
beq _0810A35C
b _0810A380
_0810A32E:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0810A382
.pool
_0810A338:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r6, 0x2
eors r0, r6
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
bne _0810A354
@@ -23282,21 +23282,21 @@ _0810A354:
eors r4, r0
b _0810A384
_0810A35C:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
movs r4, 0x2
eors r0, r4
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810A380
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
eors r4, r0
b _0810A384
.pool
_0810A380:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0810A382:
ldrb r4, [r0]
_0810A384:
@@ -23307,7 +23307,7 @@ _0810A384:
bne _0810A3AC
adds r0, r4, 0
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
@@ -23318,14 +23318,14 @@ _0810A384:
_0810A3AC:
adds r0, r4, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
adds r0, r4, 0
movs r1, 0x3
_0810A3BE:
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -23417,10 +23417,10 @@ sub_810A46C: @ 810A46C
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -23428,7 +23428,7 @@ sub_810A46C: @ 810A46C
strh r0, [r4, 0x34]
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -23576,9 +23576,9 @@ sub_810A5BC: @ 810A5BC
lsls r0, 24
cmp r0, 0
bne _0810A5D8
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810A5E0
@@ -23588,10 +23588,10 @@ _0810A5D8:
negs r0, r0
strh r0, [r1, 0x2]
_0810A5E0:
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -23600,7 +23600,7 @@ _0810A5E0:
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -23633,11 +23633,11 @@ sub_810A628: @ 810A628
ands r0, r1
cmp r0, 0
beq _0810A64C
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
b _0810A64E
.pool
_0810A64C:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
_0810A64E:
ldrb r6, [r0]
bl IsContest
@@ -23645,7 +23645,7 @@ _0810A64E:
cmp r0, 0
bne _0810A666
adds r0, r6, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810A66E
@@ -23657,7 +23657,7 @@ _0810A666:
_0810A66E:
adds r0, r6, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -23666,7 +23666,7 @@ _0810A66E:
strh r0, [r5, 0x20]
adds r0, r6, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x2]
@@ -23827,10 +23827,10 @@ sub_810A7DC: @ 810A7DC
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
ldr r1, =gTasks
lsls r4, r5, 2
adds r4, r5
@@ -23844,7 +23844,7 @@ sub_810A7DC: @ 810A7DC
strh r0, [r4, 0x8]
ldrb r0, [r6]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r5, 0x2]
@@ -24220,21 +24220,21 @@ sub_810AAFC: @ 810AAFC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810AB28
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0810AB2A
.pool
_0810AB28:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0810AB2A:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x24]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x26]
@@ -24440,21 +24440,21 @@ sub_810ACD8: @ 810ACD8
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810ACF4
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0810ACF6
.pool
_0810ACF4:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0810ACF6:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -24478,21 +24478,21 @@ sub_810AD30: @ 810AD30
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810AD4C
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0810AD4E
.pool
_0810AD4C:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0810AD4E:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -24518,28 +24518,28 @@ sub_810AD98: @ 810AD98
adds r5, r0, 0
movs r1, 0x1
bl StartSpriteAffineAnim
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x3A]
movs r0, 0x10
strh r0, [r5, 0x3C]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -24641,20 +24641,20 @@ _0810AE8E:
b _0810AFC0
_0810AE90:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r6, 0
strh r0, [r5, 0x26]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x24]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810AECC
@@ -24820,9 +24820,9 @@ _0810AFF4:
_0810AFFA:
b _0810B14E
_0810AFFC:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r2, 0x1
negs r2, r2
@@ -24855,13 +24855,13 @@ _0810B012:
_0810B048:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xE]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x12]
@@ -24878,16 +24878,16 @@ _0810B070:
movs r0, 0x78
subs r0, r1
strh r0, [r5, 0xE]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x12]
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r2, 0xA
@@ -25124,16 +25124,16 @@ sub_810B23C: @ 810B23C
beq _0810B280
b _0810B294
_0810B24E:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -25191,25 +25191,25 @@ _0810B2C8:
.4byte _0810B404
.4byte _0810B414
_0810B2DC:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x16]
movs r0, 0x4
strh r0, [r5, 0x18]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x1C]
@@ -25539,10 +25539,10 @@ _0810B584:
beq _0810B600
b _0810B60E
_0810B58A:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -25561,10 +25561,10 @@ _0810B5A4:
bgt _0810B5A4
strh r1, [r5, 0x24]
_0810B5B4:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -25721,29 +25721,29 @@ sub_810B6C4: @ 810B6C4
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r3, r0, 24
ldrb r0, [r4]
movs r1, 0x3
str r3, [sp]
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldr r1, =gBattleAnimArgs
@@ -25976,16 +25976,16 @@ sub_810B8EC: @ 810B8EC
adds r4, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810B92C
@@ -26003,10 +26003,10 @@ _0810B92C:
adds r0, r1
strh r0, [r4, 0x32]
_0810B936:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r1, =gBattleAnimArgs
lsrs r0, 24
@@ -26041,7 +26041,7 @@ sub_810B974: @ 810B974
b _0810B9C6
.pool
_0810B990:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -26049,9 +26049,9 @@ _0810B990:
adds r3, 0x22
movs r1, 0x1
bl sub_80A8924
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810B9B6
@@ -26130,16 +26130,16 @@ sub_810BA24: @ 810BA24
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0810BA74
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
@@ -26148,7 +26148,7 @@ sub_810BA24: @ 810BA24
b _0810BA86
.pool
_0810BA74:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -26157,9 +26157,9 @@ _0810BA74:
movs r1, 0x1
bl sub_80A8924
_0810BA86:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810BAAC
@@ -26277,9 +26277,9 @@ sub_810BB60: @ 810BB60
strh r5, [r4, 0x24]
movs r0, 0x80
strh r0, [r4, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
ldr r1, =0x0000ffec
cmp r0, 0
@@ -26312,9 +26312,9 @@ _0810BB90:
sub_810BBC8: @ 810BBC8
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
ldr r1, =0x0000ffec
cmp r0, 0
@@ -26431,23 +26431,23 @@ sub_810BC94: @ 810BC94
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0810BCE0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
b _0810BCF2
.pool
_0810BCE0:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -26456,9 +26456,9 @@ _0810BCE0:
movs r1, 0x1
bl sub_80A8924
_0810BCF2:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810BD1C
@@ -26645,7 +26645,7 @@ sub_810BE48: @ 810BE48
b _0810BEA2
.pool
_0810BE6C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -26653,9 +26653,9 @@ _0810BE6C:
adds r3, 0x22
movs r1, 0
bl sub_80A8924
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810BE92
@@ -26712,7 +26712,7 @@ sub_810BED0: @ 810BED0
b _0810BF32
.pool
_0810BEF4:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
adds r2, r5, 0
adds r2, 0x20
@@ -26721,7 +26721,7 @@ _0810BEF4:
movs r1, 0
bl sub_80A8924
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810BF20
@@ -26742,7 +26742,7 @@ _0810BF26:
adds r0, r1
strh r0, [r5, 0x22]
_0810BF32:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0810BF90
.pool
_0810BF40:
@@ -26755,7 +26755,7 @@ _0810BF40:
bl sub_80A6980
b _0810BF8E
_0810BF52:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
adds r2, r5, 0
adds r2, 0x20
@@ -26764,7 +26764,7 @@ _0810BF52:
movs r1, 0
bl sub_80A8924
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810BF7C
@@ -26785,7 +26785,7 @@ _0810BF82:
adds r0, r1
strh r0, [r5, 0x22]
_0810BF8E:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0810BF90:
ldrb r0, [r0]
strh r0, [r5, 0x3C]
@@ -26806,9 +26806,9 @@ _0810BFB4:
movs r0, 0x40
_0810BFB6:
strh r0, [r5, 0x3A]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810BFCC
@@ -27179,16 +27179,16 @@ _0810C2DA:
sub_810C2F0: @ 810C2F0
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -27456,16 +27456,16 @@ sub_810C560: @ 810C560
ldr r6, =gBattleAnimArgs
ldrh r0, [r6]
strh r0, [r5, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
- ldr r7, =gAnimBankTarget
+ ldr r7, =gBattleAnimTarget
ldrb r0, [r7]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -27474,7 +27474,7 @@ sub_810C560: @ 810C560
lsls r0, 8
strh r0, [r5, 0x3C]
_0810C594:
- ldr r3, =gBanksByIdentity
+ ldr r3, =gBattlerPositions
ldrb r0, [r7]
adds r0, r3
ldrb r1, [r0]
@@ -27505,7 +27505,7 @@ _0810C594:
cmp r0, 0
bne _0810C5F0
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -27523,16 +27523,16 @@ _0810C5F0:
movs r0, 0x1
strh r0, [r5, 0x3A]
_0810C5F4:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -27545,10 +27545,10 @@ _0810C5F4:
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x6]
@@ -27567,10 +27567,10 @@ _0810C65C:
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x6]
@@ -27583,7 +27583,7 @@ _0810C65C:
ldrb r0, [r4]
movs r1, 0x1
_0810C684:
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x8]
@@ -27676,10 +27676,10 @@ _0810C728:
_0810C736:
movs r5, 0x50
strh r5, [r4, 0x2E]
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
@@ -27699,7 +27699,7 @@ _0810C736:
lsls r0, 24
cmp r0, 0
bne _0810C78C
- ldr r1, =gBanksByIdentity
+ ldr r1, =gBattlerPositions
ldrb r0, [r6]
adds r0, r1
ldrb r1, [r0]
@@ -27843,8 +27843,8 @@ _0810C85A:
lsls r0, 24
cmp r0, 0
bne _0810C8B4
- ldr r1, =gBanksByIdentity
- ldr r0, =gAnimBankTarget
+ ldr r1, =gBattlerPositions
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -28050,11 +28050,11 @@ sub_810C9E4: @ 810C9E4
ldrh r0, [r4, 0x2]
lsls r0, 20
lsrs r0, 24
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r5, r0, 24
adds r0, r5, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810CAD0
@@ -28062,12 +28062,12 @@ sub_810C9E4: @ 810C9E4
str r0, [sp, 0x4]
adds r0, r5, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r7, r0, 24
adds r0, r5, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
mov r1, r8
@@ -28371,9 +28371,9 @@ _0810CCA6:
ldr r6, =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810CCCE
@@ -28381,10 +28381,10 @@ _0810CCA6:
negs r0, r0
strh r0, [r6, 0x4]
_0810CCCE:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
@@ -28392,7 +28392,7 @@ _0810CCCE:
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x6]
@@ -28581,9 +28581,9 @@ sub_810CE68: @ 810CE68
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _0810CE90
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810CE90
@@ -28680,11 +28680,11 @@ sub_810CF30: @ 810CF30
mov r9, r0
cmp r1, 0
bne _0810CF54
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0810CF56
.pool
_0810CF54:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0810CF56:
ldrb r0, [r0]
mov r8, r0
@@ -28705,13 +28705,13 @@ _0810CF74:
bl StartSpriteAnim
mov r0, r8
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
mov r0, r8
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -28771,7 +28771,7 @@ _0810D000:
negs r0, r0
lsrs r4, r0, 16
_0810D012:
- ldr r0, =gBanksByIdentity
+ ldr r0, =gBattlerPositions
add r0, r8
ldrb r1, [r0]
adds r0, r7, 0
@@ -28974,16 +28974,16 @@ _0810D1A4:
sub_810D1B4: @ 810D1B4
push {r4-r6,lr}
adds r6, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r1, [r0]
movs r0, 0x2
- ldr r2, =gAnimBankTarget
+ ldr r2, =gBattleAnimTarget
eors r0, r1
ldrb r1, [r2]
cmp r0, r1
bne _0810D1E0
ldrb r0, [r2]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -28997,9 +28997,9 @@ _0810D1E0:
adds r0, r6, 0
movs r1, 0x1
bl sub_80A6980
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810D1FE
@@ -29146,16 +29146,16 @@ sub_810D308: @ 810D308
bne _0810D34C
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -29267,21 +29267,21 @@ sub_810D40C: @ 810D40C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810D428
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0810D42A
.pool
_0810D428:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0810D42A:
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -29386,10 +29386,10 @@ sub_810D4F4: @ 810D4F4
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0810D520
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r2, [r6, 0x4]
@@ -29397,10 +29397,10 @@ sub_810D4F4: @ 810D4F4
b _0810D532
.pool
_0810D520:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
@@ -29409,7 +29409,7 @@ _0810D532:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
@@ -29520,20 +29520,20 @@ sub_810D608: @ 810D608
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810D664
- ldr r4, =gBankAttacker
+ ldr r4, =gBattlerAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -29545,11 +29545,11 @@ sub_810D608: @ 810D608
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
b _0810D680
.pool
_0810D664:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -29561,7 +29561,7 @@ _0810D664:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
_0810D680:
ldrb r0, [r0]
strh r0, [r5, 0x3C]
@@ -29601,7 +29601,7 @@ sub_810D6A8: @ 810D6A8
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -29611,7 +29611,7 @@ sub_810D6A8: @ 810D6A8
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -29712,31 +29712,31 @@ _0810D7BA:
strh r0, [r7, 0x2E]
b _0810D818
_0810D7C2:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r2, =gAnimBankTarget
+ ldr r2, =gBattleAnimTarget
mov r8, r2
ldrb r0, [r2]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
subs r4, r6
strh r4, [r7, 0x2E]
@@ -29808,28 +29808,28 @@ sub_810D874: @ 810D874
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810D8B8
- ldr r4, =gBankAttacker
+ ldr r4, =gBattlerAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r4, [r0]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0810D8BE
.pool
_0810D8B8:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r4, [r0]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0810D8BE:
ldrb r0, [r0]
bl sub_80A8328
@@ -29857,7 +29857,7 @@ _0810D8BE:
.pool
_0810D8F8:
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810D918
@@ -29879,7 +29879,7 @@ _0810D918:
strh r0, [r5, 0x30]
adds r0, r4, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -29887,7 +29887,7 @@ _0810D918:
strh r0, [r5, 0x34]
adds r0, r4, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -29929,16 +29929,16 @@ _0810D976:
sub_810D984: @ 810D984
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -29954,7 +29954,7 @@ sub_810D984: @ 810D984
ldr r0, =gAnimMoveTurn
ldrb r6, [r0]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810D9CE
@@ -30018,9 +30018,9 @@ _0810DA34:
bl StartSpriteAnim
b _0810DA5E
_0810DA48:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810DA5E
@@ -30128,9 +30128,9 @@ _0810DB1A:
ldrh r1, [r4, 0x1C]
adds r0, r1
strh r0, [r4, 0x1C]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810DB50
@@ -30205,16 +30205,16 @@ _0810DBC2:
bl sub_80A69CC
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -30263,7 +30263,7 @@ _0810DC44:
adds r0, r4, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
mov r6, sp
adds r6, 0x2
@@ -30271,9 +30271,9 @@ _0810DC44:
mov r2, sp
adds r3, r6, 0
bl sub_80A8924
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810DC72
@@ -30389,7 +30389,7 @@ _0810DD4A:
sub_810DD50: @ 810DD50
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -30397,9 +30397,9 @@ sub_810DD50: @ 810DD50
adds r3, 0x22
movs r1, 0x1
bl sub_80A8924
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810DD7C
@@ -30450,7 +30450,7 @@ sub_810DDC4: @ 810DDC4
b _0810DE16
.pool
_0810DDE0:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -30458,9 +30458,9 @@ _0810DDE0:
adds r3, 0x22
movs r1, 0x1
bl sub_80A8924
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810DE06
@@ -30680,9 +30680,9 @@ sub_810DFA8: @ 810DFA8
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810DFC8
@@ -30696,10 +30696,10 @@ _0810DFC8:
strh r0, [r6, 0x2E]
ldrh r0, [r6, 0x20]
strh r0, [r6, 0x30]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -30709,7 +30709,7 @@ _0810DFC8:
strh r0, [r6, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
@@ -30748,9 +30748,9 @@ _0810E03C:
sub_810E044: @ 810E044
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810E070
@@ -30782,13 +30782,13 @@ _0810E070:
_0810E088:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r2, =gBattleAnimArgs
ldrh r1, [r2]
@@ -30805,23 +30805,23 @@ _0810E088:
ldrsh r0, [r2, r3]
cmp r0, 0
bne _0810E0EC
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
b _0810E0FE
.pool
_0810E0EC:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -30867,7 +30867,7 @@ sub_810E13C: @ 810E13C
ldr r0, =sub_810E184
str r0, [r4, 0x1C]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -30929,9 +30929,9 @@ _0810E1C2:
sub_810E1C8: @ 810E1C8
push {r4,r5,lr}
adds r5, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810E1F8
@@ -30955,10 +30955,10 @@ _0810E1FE:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -30966,7 +30966,7 @@ _0810E1FE:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -31021,7 +31021,7 @@ _0810E274:
ble _0810E2BC
_0810E296:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -31099,15 +31099,15 @@ sub_810E314: @ 810E314
ands r0, r1
cmp r0, 0
beq _0810E33C
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0810E33E
.pool
_0810E33C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0810E33E:
ldrb r6, [r0]
adds r0, r6, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810E354
@@ -31118,7 +31118,7 @@ _0810E33E:
_0810E354:
adds r0, r6, 0
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -31127,7 +31127,7 @@ _0810E354:
strh r0, [r7, 0x20]
adds r0, r6, 0
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldrh r1, [r4, 0x2]
lsrs r0, 24
@@ -32049,7 +32049,7 @@ _0810EA36:
sub_810EA4C: @ 810EA4C
push {r4,r5,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -32061,16 +32061,16 @@ sub_810EA4C: @ 810EA4C
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -32106,9 +32106,9 @@ _0810EAC4:
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0810EADC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810EAF2
@@ -32117,9 +32117,9 @@ _0810EADC:
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _0810EAF8
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810EAF8
@@ -32237,16 +32237,16 @@ sub_810EB88: @ 810EB88
strh r0, [r4, 0x6]
ldr r0, =gUnknown_085973E8
mov r8, r0
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -32289,7 +32289,7 @@ _0810EC46:
movs r1, 0x1
bl sub_80A69CC
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -32341,10 +32341,10 @@ _0810ECAA:
beq _0810ECE0
b _0810ED1E
_0810ECB0:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -32379,7 +32379,7 @@ _0810ECE0:
cmp r0, r1
bge _0810ED1E
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -32416,7 +32416,7 @@ sub_810ED28: @ 810ED28
ldr r0, =sub_810ED70
str r0, [r4, 0x1C]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -32545,21 +32545,21 @@ _0810EE28:
ldrsh r0, [r0, r2]
cmp r0, 0
bne _0810EE40
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0810EE42
.pool
_0810EE40:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0810EE42:
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -32700,21 +32700,21 @@ _0810EF60:
ldrsh r0, [r2, r1]
cmp r0, 0
bne _0810EF74
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0810EF76
.pool
_0810EF74:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0810EF76:
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -32861,17 +32861,17 @@ sub_810F084: @ 810F084
mov r8, r0
ldrh r4, [r0, 0x20]
ldrh r5, [r0, 0x22]
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r1, r8
strh r0, [r1, 0x20]
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
@@ -32989,7 +32989,7 @@ sub_810F184: @ 810F184
cmp r0, 0
bne _0810F1BC
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
@@ -33005,7 +33005,7 @@ sub_810F184: @ 810F184
.pool
_0810F1BC:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
@@ -33038,9 +33038,9 @@ sub_810F1EC: @ 810F1EC
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810F212
@@ -33064,7 +33064,7 @@ _0810F212:
bne _0810F2B8
_0810F22E:
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r4, r0, 24
adds r7, r4, 0
@@ -33078,7 +33078,7 @@ _0810F22E:
orrs r1, r0
lsrs r6, r1, 31
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F264
@@ -33091,7 +33091,7 @@ _0810F264:
adds r4, r0, 0
eors r4, r7
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F284
@@ -33109,9 +33109,9 @@ _0810F284:
lsls r0, 24
cmp r0, 0
beq _0810F2B8
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810F2B0
@@ -33126,9 +33126,9 @@ _0810F2B0:
movs r0, 0x28
b _0810F2F2
_0810F2B8:
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810F2CE
@@ -33139,7 +33139,7 @@ _0810F2B8:
_0810F2CE:
ldrb r0, [r6]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -33148,7 +33148,7 @@ _0810F2CE:
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -33193,7 +33193,7 @@ sub_810F340: @ 810F340
push {r4,r5,lr}
adds r5, r0, 0
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r4, r0, 24
movs r1, 0x3C
@@ -33205,12 +33205,12 @@ sub_810F340: @ 810F340
b _0810F3B6
_0810F35C:
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F382
ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -33226,12 +33226,12 @@ _0810F382:
movs r0, 0x2
eors r4, r0
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F3AC
ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -33370,17 +33370,17 @@ sub_810F46C: @ 810F46C
cmp r0, 0
bne _0810F502
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r4, r0, 24
adds r6, r4, 0
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F4D4
ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -33398,12 +33398,12 @@ _0810F4D4:
adds r4, r0, 0
eors r4, r6
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F502
ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
ldrb r1, [r0]
lsls r0, r1, 4
@@ -33441,7 +33441,7 @@ sub_810F524: @ 810F524
cmp r0, 0
bne _0810F57C
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
@@ -33454,7 +33454,7 @@ sub_810F524: @ 810F524
orrs r1, r0
lsrs r5, r1, 31
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F562
@@ -33464,7 +33464,7 @@ _0810F562:
movs r0, 0x2
eors r4, r0
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F57C
@@ -33505,9 +33505,9 @@ _0810F5A6:
lsls r0, 24
cmp r0, 0
beq _0810F5EE
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0810F5E0
@@ -33568,21 +33568,21 @@ _0810F62C:
sub_810F634: @ 810F634
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0810F684
@@ -33623,7 +33623,7 @@ _0810F692:
sub_810F6B0: @ 810F6B0
push {r4-r7,lr}
adds r5, r0, 0
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0x1
bl sub_80A861C
@@ -33645,7 +33645,7 @@ sub_810F6B0: @ 810F6B0
lsls r1, 16
lsrs r7, r1, 16
ldrb r0, [r6]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -33656,14 +33656,14 @@ sub_810F6B0: @ 810F6B0
_0810F6F6:
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r4
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r7
@@ -33774,7 +33774,7 @@ sub_810F7D4: @ 810F7D4
ldr r0, =gTasks
adds r4, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -33824,16 +33824,16 @@ sub_810F83C: @ 810F83C
ldr r0, =gTasks
adds r4, r1, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r1, 0
strh r0, [r4, 0x8]
strh r1, [r4, 0xA]
strh r1, [r4, 0xC]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r1, 0x8
cmp r0, 0
@@ -33952,16 +33952,16 @@ sub_810F940: @ 810F940
movs r0, 0x10
strh r0, [r5, 0xE]
strh r1, [r5, 0x10]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x24]
@@ -34260,16 +34260,16 @@ sub_810FBA8: @ 810FBA8
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0810FBD4
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -34305,7 +34305,7 @@ sub_810FBF0: @ 810FBF0
bne _0810FC60
ldr r0, =0x0000fff6
strh r0, [r5, 0x1C]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x5
bl sub_80A861C
@@ -34316,7 +34316,7 @@ sub_810FBF0: @ 810FBF0
bl sub_80A861C
adds r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x5
bl sub_80A861C
@@ -34331,7 +34331,7 @@ sub_810FBF0: @ 810FBF0
_0810FC60:
movs r0, 0xA
strh r0, [r5, 0x1C]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x4
bl sub_80A861C
@@ -34342,7 +34342,7 @@ _0810FC60:
bl sub_80A861C
subs r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x4
bl sub_80A861C
@@ -34357,7 +34357,7 @@ _0810FC94:
bne _0810FCE8
ldr r0, =0x0000fff6
strh r0, [r5, 0x1C]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x4
bl sub_80A861C
@@ -34368,7 +34368,7 @@ _0810FC94:
bl sub_80A861C
adds r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x4
bl sub_80A861C
@@ -34383,7 +34383,7 @@ _0810FC94:
_0810FCE8:
movs r0, 0xA
strh r0, [r5, 0x1C]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x5
bl sub_80A861C
@@ -34394,7 +34394,7 @@ _0810FCE8:
bl sub_80A861C
subs r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x5
bl sub_80A861C
@@ -34535,7 +34535,7 @@ sub_810FE14: @ 810FE14
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A6190
lsls r0, 24
@@ -34590,7 +34590,7 @@ _0810FE86:
movs r0, 0
strh r0, [r4, 0x24]
_0810FE92:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -34891,7 +34891,7 @@ _08110094:
bl CalcCenterToCornerVec
ldr r1, =gBattleAnimArgs
ldrb r0, [r1]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x22]
@@ -35062,16 +35062,16 @@ _08110256:
beq _0811034A
b _08110360
_08110260:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -35209,9 +35209,9 @@ sub_8110368: @ 8110368
b _081103C4
.pool
_08110394:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _081103C4
@@ -35232,7 +35232,7 @@ _08110394:
negs r0, r0
strh r0, [r1]
_081103C4:
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A60AC
@@ -35254,7 +35254,7 @@ _081103C4:
strh r0, [r6, 0x2E]
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -35262,7 +35262,7 @@ _081103C4:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
@@ -35297,9 +35297,9 @@ sub_8110438: @ 8110438
b _08110478
.pool
_0811045C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08110478
@@ -35311,7 +35311,7 @@ _0811045C:
negs r1, r1
strh r1, [r0]
_08110478:
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A60AC
@@ -35333,13 +35333,13 @@ _08110478:
strh r0, [r6, 0x2E]
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x36]
@@ -35384,23 +35384,23 @@ _08110500:
ldrsh r0, [r1, r2]
cmp r0, 0
bne _08110548
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
b _0811055A
.pool
_08110548:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -35457,7 +35457,7 @@ _081105AE:
sub_81105B4: @ 81105B4
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -35465,9 +35465,9 @@ sub_81105B4: @ 81105B4
adds r3, 0x22
movs r1, 0
bl sub_80A8924
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _081105F0
@@ -35490,9 +35490,9 @@ _081105FC:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08110618
@@ -35655,9 +35655,9 @@ sub_8110720: @ 8110720
b _08110762
.pool
_08110740:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08110762
@@ -35676,24 +35676,24 @@ _08110762:
lsls r0, 24
cmp r0, 0
bne _081107B2
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
adds r4, r0, 0
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _081107B2
ldrb r0, [r5]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
beq _081107A0
ldrb r0, [r5]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -35712,10 +35712,10 @@ _081107B2:
adds r0, r7, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
ldr r6, =gBattleAnimArgs
@@ -35726,7 +35726,7 @@ _081107B2:
lsrs r4, 16
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -35780,9 +35780,9 @@ sub_8110850: @ 8110850
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08110870
@@ -35794,10 +35794,10 @@ _08110870:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -35805,7 +35805,7 @@ _08110870:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
@@ -35941,21 +35941,21 @@ sub_8110994: @ 8110994
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081109B0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _081109B2
.pool
_081109B0:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_081109B2:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x12
@@ -35980,7 +35980,7 @@ sub_81109F0: @ 81109F0
ldrsh r0, [r6, r1]
cmp r0, 0
beq _08110A10
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x20
@@ -36064,9 +36064,9 @@ sub_8110AB4: @ 8110AB4
bl StartSpriteAnim
adds r0, r5, 0
bl AnimateSprite
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08110AE4
@@ -36254,9 +36254,9 @@ _08110C10:
ldrsh r0, [r0, r1]
cmp r0, 0
beq _08110C6E
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08110C6E
@@ -36480,9 +36480,9 @@ sub_8110E4C: @ 8110E4C
ldrsh r0, [r4, r2]
cmp r0, 0
beq _08110E98
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08110E98
@@ -36620,32 +36620,32 @@ sub_8110F74: @ 8110F74
lsls r1, 3
ldr r0, =gTasks
adds r6, r1, r0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r1, 0xC0
lsls r1, 13
adds r0, r1
lsrs r7, r0, 16
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r2, 0xC0
@@ -36732,7 +36732,7 @@ _0811101E:
strh r0, [r6, 0x24]
strh r5, [r6, 0xA]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
@@ -37193,9 +37193,9 @@ _08111412:
sub_8111418: @ 8111418
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -37216,16 +37216,16 @@ _08111434:
sub_8111444: @ 8111444
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r2, =gBattleAnimArgs
@@ -37443,10 +37443,10 @@ sub_811160C: @ 811160C
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -37454,7 +37454,7 @@ sub_811160C: @ 811160C
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -37770,7 +37770,7 @@ sub_811188C: @ 811188C
movs r0, 0x52
bl SetGpuReg
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -37881,7 +37881,7 @@ sub_811196C: @ 811196C
.pool
_08111994:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r1, r0, 24
ldrh r0, [r4, 0x8]
@@ -37925,11 +37925,11 @@ sub_81119E0: @ 81119E0
adds r4, r0, 0
ldrh r5, [r4, 0x20]
ldrh r6, [r4, 0x22]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r1, 0
@@ -37938,7 +37938,7 @@ sub_81119E0: @ 81119E0
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -38042,16 +38042,16 @@ _08111AD2:
lsls r0, 16
cmp r0, 0
bgt _08111B96
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x30]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -38104,16 +38104,16 @@ _08111B3C:
lsls r0, 16
cmp r0, 0
bgt _08111B96
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -38285,9 +38285,9 @@ _08111C80:
adds r0, r4
movs r1, 0x50
strh r1, [r0, 0x2E]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08111CF4
@@ -38510,7 +38510,7 @@ sub_8111E78: @ 8111E78
lsls r0, 3
ldr r1, =gTasks
adds r5, r0, r1
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -38604,7 +38604,7 @@ _08111F0C:
adds r2, r4
ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
@@ -38626,7 +38626,7 @@ _08111F0C:
movs r0, 0x10
strh r0, [r5, 0xE]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -38864,7 +38864,7 @@ sub_8112170: @ 8112170
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -38888,7 +38888,7 @@ _081121AE:
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
@@ -38979,51 +38979,51 @@ sub_8112264: @ 8112264
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081122AC
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r2, 0xE0
lsls r2, 13
adds r0, r2
lsrs r5, r0, 16
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
b _081122D0
.pool
_081122AC:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r2, 0xE0
lsls r2, 13
adds r0, r2
lsrs r5, r0, 16
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
_081122D0:
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 8
movs r1, 0xE0
@@ -39166,10 +39166,10 @@ sub_81123C4: @ 81123C4
ldr r2, =gBattleAnimArgs
ldrh r0, [r2]
strh r0, [r1, 0x1C]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
@@ -39189,7 +39189,7 @@ _08112434:
_08112436:
lsls r1, r4, 16
asrs r3, r1, 16
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r2, [r0]
str r1, [sp, 0x10]
cmp r3, r2
@@ -39201,7 +39201,7 @@ _08112436:
lsls r0, r4, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08112502
@@ -39221,7 +39221,7 @@ _08112436:
beq _08112502
adds r0, r4, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
mov r10, r0
@@ -39594,9 +39594,9 @@ sub_8112758: @ 8112758
movs r0, 0x54
movs r1, 0x10
bl SetGpuReg
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _081127A0
@@ -39869,9 +39869,9 @@ sub_81129F0: @ 81129F0
adds r4, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08112A24
@@ -40064,9 +40064,9 @@ sub_8112B78: @ 8112B78
movs r1, 0xC
bl Sin
strh r0, [r5, 0x24]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08112B9C
@@ -40195,10 +40195,10 @@ sub_8112C6C: @ 8112C6C
mov r8, r0
mov r0, r8
strh r0, [r4, 0xA]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1A]
@@ -40301,9 +40301,9 @@ _08112D56:
lsls r0, 2
adds r5, r0, r1
strh r7, [r5, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
movs r1, 0
lsls r0, 24
cmp r0, 0
@@ -40561,8 +40561,8 @@ sub_8112F60: @ 8112F60
movs r2, 0x4
orrs r1, r2
strb r1, [r3]
- ldr r2, =gBankSpriteIds
- ldr r1, =gAnimBankAttacker
+ ldr r2, =gBattlerSpriteIds
+ ldr r1, =gBattleAnimAttacker
ldrb r1, [r1]
adds r1, r2
ldrb r1, [r1]
@@ -40679,21 +40679,21 @@ _08113054:
sub_8113064: @ 8113064
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _081130B4
@@ -40752,22 +40752,22 @@ sub_8113100: @ 8113100
push {r4,r5,lr}
adds r5, r0, 0
bl sub_80A6838
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08113164
@@ -40834,21 +40834,21 @@ sub_81131B4: @ 81131B4
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081131D0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _081131D2
.pool
_081131D0:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_081131D2:
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -40876,9 +40876,9 @@ _081131D2:
sub_8113224: @ 8113224
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0811323E
@@ -40898,17 +40898,17 @@ _0811323E:
sub_8113250: @ 8113250
push {r4-r7,lr}
adds r6, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r6, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
@@ -40918,7 +40918,7 @@ sub_8113250: @ 8113250
ldr r0, =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r6, 0x3A]
- ldr r4, =gBankAttacker
+ ldr r4, =gBattlerAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A861C
@@ -41106,7 +41106,7 @@ sub_81133E8: @ 81133E8
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -41133,7 +41133,7 @@ _0811342A:
strb r0, [r1, 0x8]
mov r0, sp
strb r5, [r0, 0x9]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A6190
lsls r0, 24
@@ -41354,18 +41354,18 @@ sub_81135EC: @ 81135EC
movs r1, 0x5
bl __divsi3
adds r6, r0, 0
- ldr r1, =gAnimBankAttacker
+ ldr r1, =gBattleAnimAttacker
mov r8, r1
ldrb r0, [r1]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
mov r2, r8
ldrb r0, [r2]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r3, [r5, 0x8]
@@ -41473,7 +41473,7 @@ sub_81136E8: @ 81136E8
ldr r1, =gBattleAnimArgs
ldrh r1, [r1]
strh r1, [r0, 0x8]
- ldr r1, =gAnimBankAttacker
+ ldr r1, =gBattleAnimAttacker
ldrb r4, [r1]
movs r1, 0x10
strh r1, [r0, 0xA]
@@ -41544,8 +41544,8 @@ sub_811375C: @ 811375C
cmp r4, 0x10
bne _081137DE
ldr r2, =gSprites
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -41661,7 +41661,7 @@ sub_8113888: @ 8113888
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -41690,29 +41690,29 @@ _081138C4:
sub_81138D4: @ 81138D4
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x30]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -41918,11 +41918,11 @@ sub_8113A90: @ 8113A90
adds r3, r0, 0
cmp r1, 0
bne _08113AAC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08113AAE
.pool
_08113AAC:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08113AAE:
ldrb r5, [r0]
movs r6, 0x14
@@ -42054,10 +42054,10 @@ sub_8113BAC: @ 8113BAC
lsls r1, 3
ldr r0, =gTasks
adds r5, r1, r0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
@@ -42076,7 +42076,7 @@ sub_8113BAC: @ 8113BAC
strh r1, [r5, 0x22]
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -42085,7 +42085,7 @@ sub_8113BAC: @ 8113BAC
adds r0, 0x20
strh r0, [r5, 0x26]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08113C1C
@@ -42096,7 +42096,7 @@ _08113C1C:
ldr r0, =0x0000ffc0
_08113C1E:
strh r0, [r5, 0x18]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -42415,7 +42415,7 @@ _08113EBC:
b _081140A6
.pool
_08113EF8:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -42472,10 +42472,10 @@ _08113F78:
b _08114044
.pool
_08113F84:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
@@ -42492,7 +42492,7 @@ _08113F84:
strh r1, [r5, 0x22]
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
subs r1, r0, 0x4
@@ -42500,7 +42500,7 @@ _08113F84:
adds r0, 0x4
strh r0, [r5, 0x26]
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08113FD8
@@ -42979,7 +42979,7 @@ sub_8114374: @ 8114374
_0811438A:
lsls r0, r4, 24
lsrs r0, 24
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -43014,7 +43014,7 @@ sub_81143C0: @ 81143C0
lsls r0, 24
lsrs r0, 24
mov r10, r0
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
bl sub_80A8364
lsls r0, 24
@@ -43030,7 +43030,7 @@ sub_81143C0: @ 81143C0
bl sub_80A438C
ldr r0, =gSprites
mov r9, r0
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
mov r8, r0
ldrb r0, [r6]
add r0, r8
@@ -43049,7 +43049,7 @@ sub_81143C0: @ 81143C0
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0811444E
@@ -43091,7 +43091,7 @@ sub_8114470: @ 8114470
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
bl sub_80A8364
lsls r0, 24
@@ -43106,7 +43106,7 @@ sub_8114470: @ 8114470
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081144AC
@@ -43202,15 +43202,15 @@ _0811455C:
lsls r0, 24
cmp r0, 0
bne _081145D6
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _0811458C
ldrb r0, [r4]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
bne _081145D6
@@ -43218,13 +43218,13 @@ _0811458C:
ldrb r0, [r4]
movs r5, 0x2
eors r0, r5
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _081145D6
ldr r3, =gSprites
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r4]
eors r0, r5
adds r0, r1
@@ -43262,13 +43262,13 @@ _081145D6:
b _0811465C
.pool
_08114614:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08114640
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -43279,7 +43279,7 @@ _08114614:
b _08114650
.pool
_08114640:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -43295,11 +43295,11 @@ _08114650:
lsrs r5, r0, 16
_0811465C:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
@@ -43421,7 +43421,7 @@ _08114776:
cmp r0, 0x2
bne _08114824
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r5, =gSprites
@@ -43457,8 +43457,8 @@ _081147B8:
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _08114886
- ldr r2, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r2, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -43562,7 +43562,7 @@ _081148C4:
.4byte _081148FC
_081148E4:
ldrb r0, [r2]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r2, r0, 24
b _08114902
@@ -43586,15 +43586,15 @@ _08114902:
beq _0811492E
_08114908:
adds r0, r4, 0
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0811492C
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
ldrb r2, [r0]
b _0811492E
@@ -43655,31 +43655,31 @@ _08114980:
sub_8114994: @ 8114994
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
movs r0, 0x14
strh r0, [r4, 0x2E]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -43716,16 +43716,16 @@ sub_81149FC: @ 81149FC
strh r1, [r5, 0x24]
movs r0, 0x14
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -43764,9 +43764,9 @@ sub_8114A7C: @ 8114A7C
adds r6, r0, 0
movs r1, 0x1
bl sub_80A6980
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08114A9C
@@ -43778,10 +43778,10 @@ _08114A9C:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, =gAnimBankTarget
+ ldr r5, =gBattleAnimTarget
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -43789,7 +43789,7 @@ _08114A9C:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
@@ -43814,7 +43814,7 @@ sub_8114AF0: @ 8114AF0
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A60AC
@@ -43890,10 +43890,10 @@ sub_8114B80: @ 8114B80
ldrsh r0, [r6, r1]
cmp r0, 0
bne _08114BF4
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r2, [r6, 0x2]
@@ -43901,7 +43901,7 @@ sub_8114B80: @ 8114B80
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r3, [r6, 0x4]
@@ -44092,11 +44092,11 @@ _08114D28:
.4byte _08114E8C
_08114D3C:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -44118,7 +44118,7 @@ _08114D70:
_08114D78:
ldrh r0, [r0]
strh r0, [r4, 0x22]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A6190
lsls r0, 24
@@ -44272,7 +44272,7 @@ sub_8114EB4: @ 8114EB4
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
@@ -44289,7 +44289,7 @@ sub_8114EB4: @ 8114EB4
movs r4, 0
strh r4, [r1, 0x24]
strh r4, [r1, 0x26]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -44361,7 +44361,7 @@ sub_8114F54: @ 8114F54
.pool
_08114F78:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
@@ -44438,11 +44438,11 @@ _08115004:
.4byte _081150D4
_08115018:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -44458,7 +44458,7 @@ _08115044:
_08115046:
ldrh r0, [r0]
strh r0, [r4, 0x20]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A6190
lsls r0, 24
@@ -44634,11 +44634,11 @@ sub_81151A0: @ 81151A0
adds r7, r0, 0
cmp r1, 0
bne _081151BC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _081151BE
.pool
_081151BC:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_081151BE:
ldrb r4, [r0]
movs r6, 0x18
@@ -44657,7 +44657,7 @@ _081151BE:
_081151DA:
adds r0, r4, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -44714,16 +44714,16 @@ sub_8115244: @ 8115244
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08115260
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08115262
.pool
_08115260:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08115262:
ldrb r5, [r0]
adds r0, r5, 0
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldr r2, =0x0000fff0
@@ -44818,7 +44818,7 @@ _08115340:
_08115346:
lsls r0, r5, 24
lsrs r0, 24
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08115370
@@ -44829,7 +44829,7 @@ _08115346:
adds r1, r4, 0
adds r1, 0x8
adds r1, r0
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r5, r0
ldrb r0, [r0]
strh r0, [r1]
@@ -44846,7 +44846,7 @@ _08115370:
.pool
_08115380:
ldrb r0, [r6]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1A]
@@ -45217,11 +45217,11 @@ sub_8115628: @ 8115628
adds r6, r2, 0
cmp r0, 0
beq _08115648
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
b _0811564A
.pool
_08115648:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
_0811564A:
ldrb r0, [r0]
adds r5, r0, 0
@@ -45244,7 +45244,7 @@ _0811565A:
adds r4, r0
adds r0, r5, 0
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r1, 0x20
@@ -45255,7 +45255,7 @@ _0811565A:
strh r1, [r4, 0xA]
adds r0, r5, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
movs r1, 0x40
@@ -45333,9 +45333,9 @@ sub_811572C: @ 811572C
strh r0, [r4, 0x22]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
@@ -45846,15 +45846,15 @@ sub_8115B0C: @ 8115B0C
strh r1, [r0, 0x12]
strh r5, [r0, 0x18]
movs r4, 0
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r1, [r0]
mov r9, r3
mov r8, r2
cmp r5, r1
bge _08115B74
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r3, [r0]
- ldr r7, =gAnimBankTarget
+ ldr r7, =gBattleAnimTarget
movs r0, 0x1
mov r12, r0
adds r2, r1, 0
@@ -46336,9 +46336,9 @@ sub_8115F10: @ 8115F10
lsrs r0, 24
mov r8, r0
movs r2, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r6, [r0]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r7, [r0]
ldr r4, =gBattleAnimArgs
ldrh r1, [r4]
@@ -46429,10 +46429,10 @@ _08115FD6:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
mov r9, r0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
mov r10, r0
ldrh r1, [r4, 0xC]
@@ -46450,7 +46450,7 @@ _08115FF8:
cmp r0, 0
beq _08116028
ldr r2, =gSprites
- ldr r0, =gHealthBoxesIds
+ ldr r0, =gHealthboxSpriteIds
add r0, r9
ldrb r1, [r0]
lsls r0, r1, 4
@@ -46650,13 +46650,13 @@ _0811618A:
cmp r0, 0x1
bhi _081161DC
movs r4, 0
- ldr r5, =gNoOfAllBanks
+ ldr r5, =gBattlersCount
ldrb r0, [r5]
cmp r4, r0
bcs _081161DC
ldr r2, =gSprites
mov r12, r2
- ldr r6, =gBankSpriteIds
+ ldr r6, =gBattlerSpriteIds
movs r7, 0x3
negs r7, r7
_081161BA:
@@ -46691,8 +46691,8 @@ _081161E2:
sub_81161F4: @ 81161F4
push {r4-r6,lr}
ldr r6, =gSprites
- ldr r4, =gBankSpriteIds
- ldr r5, =gAnimBankAttacker
+ ldr r4, =gBattlerSpriteIds
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
@@ -46707,7 +46707,7 @@ sub_81161F4: @ 81161F4
adds r0, r2, 0
ands r0, r3
strb r0, [r1]
- ldr r3, =gAnimBankTarget
+ ldr r3, =gBattleAnimTarget
ldrb r0, [r3]
adds r0, r4
ldrb r1, [r0]
@@ -46955,9 +46955,9 @@ _081163FC:
sub_8116420: @ 8116420
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08116444
@@ -47048,7 +47048,7 @@ sub_81164F0: @ 81164F0
adds r4, r0, 0
ldr r5, =gBattleAnimArgs
ldrb r0, [r5]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x2E]
@@ -47256,14 +47256,14 @@ _081166B8:
movs r5, 0
_081166BA:
mov r0, sp
- ldr r1, =gAnimBankAttacker
+ ldr r1, =gBattleAnimAttacker
b _081166CA
.pool
_081166C4:
movs r5, 0
_081166C6:
mov r0, sp
- ldr r1, =gAnimBankTarget
+ ldr r1, =gBattleAnimTarget
_081166CA:
ldrb r1, [r1]
strb r1, [r0]
@@ -47271,10 +47271,10 @@ _081166CA:
.pool
_081166D4:
mov r1, sp
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
strb r0, [r1]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
strb r0, [r1, 0x1]
b _0811670E
@@ -47287,13 +47287,13 @@ _081166EC:
_081166F4:
movs r5, 0
mov r2, sp
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08116706
.pool
_08116700:
movs r5, 0
mov r2, sp
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08116706:
ldrb r0, [r0]
movs r1, 0x2
@@ -47310,7 +47310,7 @@ _08116712:
cmp r4, r0
beq _0811673C
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0811673C
@@ -47867,15 +47867,15 @@ _08116BA2:
lsls r0, 24
cmp r0, 0
bne _08116C26
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _08116BD2
ldrb r0, [r5]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
bne _08116C26
@@ -47883,13 +47883,13 @@ _08116BD2:
ldrb r0, [r5]
movs r6, 0x2
eors r0, r6
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08116C26
ldr r3, =gSprites
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldrb r0, [r5]
eors r0, r6
adds r0, r1
@@ -47932,13 +47932,13 @@ _08116C26:
b _08116CAC
.pool
_08116C64:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08116C90
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -47949,7 +47949,7 @@ _08116C64:
b _08116CA0
.pool
_08116C90:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -47965,11 +47965,11 @@ _08116CA0:
lsrs r5, r0, 16
_08116CAC:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
@@ -48119,7 +48119,7 @@ _08116DF6:
movs r1, 0
bl SetGpuReg
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r4, =gSprites
movs r0, 0x8
ldrsh r1, [r5, r0]
@@ -48137,8 +48137,8 @@ _08116DF6:
ldrsh r0, [r5, r1]
cmp r0, 0x1
bne _08116E7C
- ldr r2, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r2, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -48223,11 +48223,11 @@ sub_8116F04: @ 8116F04
ldrsh r0, [r1, r2]
cmp r0, 0
bne _08116F24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08116F26
.pool
_08116F24:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08116F26:
ldrb r0, [r0]
strb r0, [r1]
@@ -48247,7 +48247,7 @@ _08116F26:
cmp r0, 0
beq _08116F5C
ldrb r0, [r1, 0x1]
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
bne _08116F5C
@@ -48306,27 +48306,27 @@ _08116FBA:
cmp r0, 0
bne _08117036
ldrb r0, [r1]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _08116FEC
ldr r0, [r4]
ldrb r0, [r0]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
cmp r0, 0
bne _08117036
_08116FEC:
ldr r0, [r4]
ldrb r0, [r0, 0x1]
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x1
bne _08117036
ldr r3, =gSprites
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
ldr r0, [r4]
ldrb r0, [r0, 0x1]
adds r0, r1
@@ -48370,11 +48370,11 @@ _08117078:
ldr r4, =gUnknown_0203A110
ldr r0, [r4]
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _081170A8
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldr r0, [r4]
ldrb r0, [r0]
lsls r0, 1
@@ -48386,7 +48386,7 @@ _08117078:
b _081170BA
.pool
_081170A8:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldr r0, [r4]
ldrb r0, [r0]
lsls r0, 1
@@ -48425,7 +48425,7 @@ sub_81170EC: @ 81170EC
lsrs r5, r0, 24
movs r0, 0
mov r8, r0
- ldr r6, =gBankSpriteIds
+ ldr r6, =gBattlerSpriteIds
ldr r4, =gUnknown_0203A110
ldr r2, [r4]
ldrb r0, [r2]
@@ -48601,7 +48601,7 @@ _08117280:
strh r4, [r1, 0xE]
ldrb r0, [r3, 0x2]
strh r0, [r1, 0x14]
- ldr r2, =gBankSpriteIds
+ ldr r2, =gBattlerSpriteIds
ldrb r0, [r3, 0x1]
adds r0, r2
ldrb r0, [r0]
@@ -49044,7 +49044,7 @@ sub_8117610: @ 8117610
lsrs r6, r0, 24
movs r4, 0
movs r2, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r3, [r0]
movs r5, 0x1
_08117620:
@@ -49096,9 +49096,9 @@ sub_8117660: @ 8117660
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0811769C
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0811769C
@@ -49196,9 +49196,9 @@ sub_8117754: @ 8117754
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
ldr r1, =gBattleAnimArgs
lsls r0, 24
lsrs r0, 24
@@ -49217,9 +49217,9 @@ sub_8117780: @ 8117780
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
ldr r1, =gBattleAnimArgs
lsls r0, 24
lsrs r0, 24
@@ -49239,10 +49239,10 @@ sub_81177AC: @ 81177AC
lsrs r3, r0, 24
ldr r5, =gBattleAnimArgs
movs r4, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r2, [r0]
movs r0, 0x2
- ldr r1, =gAnimBankTarget
+ ldr r1, =gBattleAnimTarget
eors r0, r2
ldrb r1, [r1]
cmp r0, r1
@@ -49266,17 +49266,17 @@ sub_81177E4: @ 81177E4
movs r4, 0
ldr r6, =gSprites
_081177EE:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
cmp r4, r0
beq _0811782C
lsls r0, r4, 24
lsrs r0, 24
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0811782C
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
adds r0, r4, r0
ldrb r0, [r0]
lsls r2, r0, 4
@@ -49355,7 +49355,7 @@ sub_8117854: @ 8117854
cmp r1, 0
beq _081178BA
adds r0, r6, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
bne _081178BA
@@ -49431,11 +49431,11 @@ _08117930:
.pool
_08117964:
adds r0, r7, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08117988
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r7, 1
adds r0, r1
ldrh r1, [r0]
@@ -49445,7 +49445,7 @@ _08117964:
b _08117996
.pool
_08117988:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r7, 1
adds r0, r1
ldrh r1, [r0]
@@ -49459,7 +49459,7 @@ _08117996:
lsls r0, 16
lsrs r4, r0, 16
_081179A2:
- ldr r5, =gBankSpriteIds
+ ldr r5, =gBattlerSpriteIds
adds r0, r7, r5
ldrb r1, [r0]
adds r0, r7, 0
@@ -49854,13 +49854,13 @@ _08117CD2:
_08117CE4:
cmp r0, 0x1
bne _08117CF0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08117CF6
.pool
_08117CF0:
cmp r0, 0x2
bne _08117CFC
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08117CF6:
ldrb r0, [r0]
adds r4, r0, 0
@@ -49929,13 +49929,13 @@ _08117D6E:
_08117D80:
cmp r0, 0x1
bne _08117D8C
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08117D92
.pool
_08117D8C:
cmp r0, 0x2
bne _08117D98
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08117D92:
ldrb r0, [r0]
adds r4, r0, 0
@@ -50004,13 +50004,13 @@ _08117E0A:
_08117E1C:
cmp r0, 0x1
bne _08117E28
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08117E2E
.pool
_08117E28:
cmp r0, 0x2
bne _08117E34
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08117E2E:
ldrb r0, [r0]
adds r4, r0, 0
@@ -50064,12 +50064,12 @@ sub_8117E94: @ 8117E94
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, =gAnimBankAttacker
- ldr r1, =gBankTarget
+ ldr r2, =gBattleAnimAttacker
+ ldr r1, =gBattlerTarget
ldrb r1, [r1]
strb r1, [r2]
- ldr r2, =gAnimBankTarget
- ldr r1, =gEffectBank
+ ldr r2, =gBattleAnimTarget
+ ldr r1, =gEffectBattler
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
@@ -50083,13 +50083,13 @@ sub_8117EC4: @ 8117EC4
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -50116,8 +50116,8 @@ sub_8117F10: @ 8117F10
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, =gAnimBankTarget
- ldr r1, =gBankTarget
+ ldr r2, =gBattleAnimTarget
+ ldr r1, =gBattlerTarget
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
@@ -50131,12 +50131,12 @@ sub_8117F30: @ 8117F30
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, =gAnimBankAttacker
- ldr r1, =gBankAttacker
+ ldr r2, =gBattleAnimAttacker
+ ldr r1, =gBattlerAttacker
ldrb r1, [r1]
strb r1, [r2]
- ldr r2, =gAnimBankTarget
- ldr r1, =gEffectBank
+ ldr r2, =gBattleAnimTarget
+ ldr r1, =gEffectBattler
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
@@ -50165,7 +50165,7 @@ _08117F78:
adds r3, r0
ldr r0, =gBattleSpritesDataPtr
ldr r4, [r0]
- ldr r2, =gAnimBankAttacker
+ ldr r2, =gBattleAnimAttacker
ldrb r0, [r2]
ldr r1, [r4]
lsls r0, 2
@@ -50209,7 +50209,7 @@ sub_8117FD0: @ 8117FD0
bne _08118014
ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r3, [r0]
ldr r0, [r1]
lsls r3, 2
@@ -50670,7 +50670,7 @@ _081183B4:
strh r0, [r1, 0xC]
movs r0, 0x20
strh r0, [r1, 0xE]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -51014,7 +51014,7 @@ _08118690:
strh r0, [r1, 0xE]
movs r0, 0x1
strh r0, [r1, 0x12]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -51315,7 +51315,7 @@ _08118934:
strh r0, [r1, 0xE]
movs r0, 0x1
strh r0, [r1, 0x12]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -51675,7 +51675,7 @@ _08118C50:
strh r0, [r1, 0xC]
movs r0, 0x20
strh r0, [r1, 0xE]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -51924,7 +51924,7 @@ _08118E7E:
strh r0, [r1, 0x8]
movs r0, 0xF0
strh r0, [r1, 0xC]
- ldr r2, =gUnknown_020243FC
+ ldr r2, =gIntroSlideFlags
ldrh r1, [r2]
ldr r0, =0x0000fffe
ands r0, r1
@@ -52078,7 +52078,7 @@ sub_8118FBC: @ 8118FBC
lsls r5, 16
lsrs r5, 16
adds r0, r4, 0
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
ldr r1, =gMonSpritesGfxPtr
diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s
index f3b72792d..6b894a0f1 100644
--- a/asm/battle_anim_815A0D4.s
+++ b/asm/battle_anim_815A0D4.s
@@ -87,10 +87,10 @@ sub_815A160: @ 815A160
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r6, =gAnimBankTarget
+ ldr r6, =gBattleAnimTarget
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 8
@@ -100,7 +100,7 @@ sub_815A160: @ 815A160
asrs r4, 16
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r1, r0, 0
lsls r1, 24
lsrs r1, 8
@@ -207,16 +207,16 @@ sub_815A254: @ 815A254
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
@@ -768,7 +768,7 @@ sub_815A6C4: @ 815A6C4
adds r4, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
mov r5, sp
adds r5, 0x2
@@ -776,9 +776,9 @@ sub_815A6C4: @ 815A6C4
mov r2, sp
adds r3, r5, 0
bl sub_80A8924
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815A6F8
@@ -919,9 +919,9 @@ sub_815A7EC: @ 815A7EC
lsls r0, 24
cmp r0, 0
bne _0815A840
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815A830
@@ -1017,9 +1017,9 @@ sub_815A8C8: @ 815A8C8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1251,16 +1251,16 @@ sub_815AAA4: @ 815AAA4
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815AAD0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -1502,15 +1502,15 @@ sub_815ACD0: @ 815ACD0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815ACEC
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0815ACEE
.pool
_0815ACEC:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0815ACEE:
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x2]
@@ -1518,7 +1518,7 @@ _0815ACEE:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -1618,11 +1618,11 @@ sub_815ADB0: @ 815ADB0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815ADDC
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0815ADDE
.pool
_0815ADDC:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0815ADDE:
ldrb r0, [r4]
bl sub_80A6190
@@ -1903,16 +1903,16 @@ sub_815AFF0: @ 815AFF0
movs r5, 0
strh r5, [r4, 0x8]
strh r5, [r4, 0xA]
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xC]
ldrb r0, [r6]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xE]
@@ -1922,7 +1922,7 @@ sub_815AFF0: @ 815AFF0
strh r0, [r4, 0x12]
strh r5, [r4, 0x14]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -2278,16 +2278,16 @@ _0815B2D8:
strh r1, [r5, 0x26]
movs r0, 0x14
strh r0, [r5, 0x2E]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -2320,7 +2320,7 @@ sub_815B338: @ 815B338
.pool
_0815B35C:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2351,7 +2351,7 @@ sub_815B394: @ 815B394
push {r4-r6,lr}
adds r5, r0, 0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x2E
@@ -2370,16 +2370,16 @@ _0815B3B4:
beq _0815B478
b _0815B496
_0815B3BE:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -2482,9 +2482,9 @@ _0815B496:
sub_815B49C: @ 815B49C
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815B4BC
@@ -2513,9 +2513,9 @@ sub_815B4D4: @ 815B4D4
ldrh r0, [r4, 0x2E]
adds r0, 0x48
strh r0, [r4, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815B4F8
@@ -2728,7 +2728,7 @@ sub_815B65C: @ 815B65C
cmp r0, 0
bne _0815B69C
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2770,7 +2770,7 @@ sub_815B6B4: @ 815B6B4
cmp r0, 0
bne _0815B6F4
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2814,10 +2814,10 @@ _0815B71E:
movs r0, 0x90
lsls r0, 4
strh r0, [r4, 0x30]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -2868,7 +2868,7 @@ sub_815B778: @ 815B778
cmp r0, 0
bne _0815B7B8
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2933,7 +2933,7 @@ _0815B81C:
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -2996,9 +2996,9 @@ _0815B886:
_0815B8A6:
b _0815BA7A
_0815B8A8:
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- ldr r1, =gAnimBankTarget
+ ldr r1, =gBattleAnimTarget
ldrb r1, [r1]
mov r2, r8
lsls r4, r2, 2
@@ -3020,7 +3020,7 @@ _0815B8A8:
.pool
_0815B8E0:
ldrb r0, [r5]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r1, r0, 24
_0815B8EA:
@@ -3030,7 +3030,7 @@ _0815B8EA:
adds r2, 0x4
adds r2, r0
ldr r1, =gBattleMonForms
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -3122,8 +3122,8 @@ _0815B99C:
cmp r0, 0
beq _0815B9EC
ldr r3, =gSprites
- ldr r4, =gBankSpriteIds
- ldr r2, =gAnimBankAttacker
+ ldr r4, =gBattlerSpriteIds
+ ldr r2, =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
@@ -3138,8 +3138,8 @@ _0815B99C:
.pool
_0815B9EC:
ldr r3, =gSprites
- ldr r4, =gBankSpriteIds
- ldr r2, =gAnimBankAttacker
+ ldr r4, =gBattlerSpriteIds
+ ldr r2, =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
@@ -3209,7 +3209,7 @@ _0815BA82:
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -3232,9 +3232,9 @@ _0815BAB6:
lsls r0, 24
cmp r0, 0
bne _0815BAF6
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3256,7 +3256,7 @@ _0815BAB6:
lsls r1, r0, 2
adds r1, r2
ldrh r1, [r1, 0x2]
- bl SetBankEnemyShadowSpriteCallback
+ bl SetBattlerShadowSpriteCallback
_0815BAF6:
mov r0, r8
bl DestroyAnimVisualTask
@@ -3278,8 +3278,8 @@ sub_815BB18: @ 815BB18
lsrs r0, 24
ldr r4, =gBattleAnimArgs
ldr r3, =gSprites
- ldr r2, =gBankSpriteIds
- ldr r1, =gAnimBankAttacker
+ ldr r2, =gBattlerSpriteIds
+ ldr r1, =gBattleAnimAttacker
ldrb r1, [r1]
adds r1, r2
ldrb r2, [r1]
@@ -3305,9 +3305,9 @@ sub_815BB58: @ 815BB58
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- ldr r1, =gAnimBankTarget
+ ldr r1, =gBattleAnimTarget
ldrb r1, [r1]
movs r2, 0x1
bl HandleSpeciesGfxDataChange
@@ -3390,9 +3390,9 @@ _0815BC02:
b _0815BC5C
.pool
_0815BC34:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815BC58
@@ -3621,17 +3621,17 @@ sub_815BE04: @ 815BE04
lsls r0, 16
lsrs r5, r0, 16
_0815BE2E:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, r5
strh r0, [r7, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -3996,9 +3996,9 @@ _0815C124:
b _0815C1CA
.pool
_0815C15C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r4, r0, 24
bl IsDoubleBattle
@@ -4085,9 +4085,9 @@ _0815C224:
adds r5, r0, r1
movs r0, 0
strh r0, [r5, 0xE]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4272,7 +4272,7 @@ sub_815C3A8: @ 815C3A8
cmp r0, 0
bne _0815C3E8
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -4325,9 +4325,9 @@ _0815C41E:
ldrh r0, [r4, 0x32]
adds r0, 0x80
strh r0, [r4, 0x32]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815C450
@@ -4419,7 +4419,7 @@ _0815C4BC:
subs r0, 0x1
strh r0, [r4, 0x14]
ldrb r0, [r5]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -4427,14 +4427,14 @@ _0815C4BC:
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815C508
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0815C50A
.pool
_0815C508:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0815C50A:
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4643,9 +4643,9 @@ _0815C6A8:
sub_815C6B0: @ 815C6B0
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -4683,9 +4683,9 @@ sub_815C700: @ 815C700
ldrh r0, [r4, 0x2E]
adds r0, 0x3
strh r0, [r4, 0x2E]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815C744
@@ -4758,7 +4758,7 @@ sub_815C770: @ 815C770
strh r0, [r4, 0x24]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -4991,16 +4991,16 @@ sub_815C95C: @ 815C95C
ldrsh r0, [r6, r2]
cmp r0, 0
bne _0815C990
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -5100,17 +5100,17 @@ sub_815CA20: @ 815CA20
mov r8, r0
cmp r1, 0
bne _0815CA5C
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0815CA5E
.pool
_0815CA5C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0815CA5E:
ldrb r0, [r0]
strh r0, [r2, 0x1E]
mov r1, r8
ldrb r0, [r1]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r5, r0, 24
ldr r1, =gTasks
@@ -5172,7 +5172,7 @@ _0815CAD2:
cmp r0, 0
bne _0815CAF8
ldrb r0, [r6, 0x1E]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsls r2, r5, 4
cmp r0, 0
@@ -5528,16 +5528,16 @@ _0815CDAA:
sub_815CDB4: @ 815CDB4
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -5586,14 +5586,14 @@ sub_815CDFC: @ 815CDFC
cmp r0, 0xC3
ble _0815CE48
_0815CE36:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
b _0815CE52
.pool
_0815CE48:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x1
@@ -5674,7 +5674,7 @@ sub_815CED8: @ 815CED8
lsrs r0, 24
str r0, [sp, 0x18]
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -5693,16 +5693,16 @@ sub_815CED8: @ 815CED8
b _0815D058
.pool
_0815CF18:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815CFC4
movs r0, 0
str r0, [sp, 0x1C]
- ldr r6, =gBattlePartyID
- ldr r4, =gAnimBankTarget
+ ldr r6, =gBattlerPartyIndexes
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
@@ -5733,7 +5733,7 @@ _0815CF18:
cmp r0, 0
bne _0815CFBC
adds r0, r2, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815CF9C
@@ -5769,8 +5769,8 @@ _0815CFBE:
_0815CFC4:
movs r2, 0x1
str r2, [sp, 0x1C]
- ldr r6, =gBattlePartyID
- ldr r4, =gAnimBankTarget
+ ldr r6, =gBattlerPartyIndexes
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
@@ -5801,7 +5801,7 @@ _0815CFC4:
cmp r0, 0
bne _0815D054
adds r0, r2, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815D03C
@@ -5834,21 +5834,21 @@ _0815D056:
_0815D058:
mov r10, r3
_0815D05A:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
lsrs r7, r0, 24
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
mov r2, r10
lsls r1, r2, 16
@@ -5864,7 +5864,7 @@ _0815D05A:
str r3, [sp, 0x8]
mov r0, r8
str r0, [sp, 0xC]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
str r0, [sp, 0x10]
movs r0, 0x1
@@ -6072,11 +6072,11 @@ sub_815D240: @ 815D240
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815D26C
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0815D26E
.pool
_0815D26C:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0815D26E:
ldrb r5, [r0]
movs r6, 0
@@ -6093,7 +6093,7 @@ _0815D26E:
movs r0, 0x18
strh r0, [r4, 0x18]
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -6118,7 +6118,7 @@ _0815D2B4:
strh r0, [r4, 0x24]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -6562,7 +6562,7 @@ sub_815D64C: @ 815D64C
strh r0, [r4, 0x8]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -6827,9 +6827,9 @@ sub_815D870: @ 815D870
ldrb r1, [r6]
adds r0, r5, 0
bl StartSpriteAffineAnim
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815D896
@@ -6837,10 +6837,10 @@ sub_815D870: @ 815D870
negs r0, r0
strh r0, [r6, 0x2]
_0815D896:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
@@ -6848,7 +6848,7 @@ _0815D896:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
@@ -7237,8 +7237,8 @@ sub_815DB90: @ 815DB90
lsls r0, 3
mov r1, r8
adds r4, r0, r1
- ldr r1, =gBankSpriteIds
- ldr r2, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r2, =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
@@ -7261,7 +7261,7 @@ sub_815DB90: @ 815DB90
strh r0, [r4, 0x14]
_0815DBD4:
ldrb r0, [r2]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815DC04
@@ -7373,22 +7373,22 @@ _0815DCC4:
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815DCE8
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0815DCEA
.pool
_0815DCE8:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0815DCEA:
ldrb r4, [r0]
adds r0, r4, 0
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x10]
adds r0, r4, 0
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x12]
@@ -7399,7 +7399,7 @@ _0815DCEA:
strh r0, [r5, 0x14]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -7661,7 +7661,7 @@ sub_815DF0C: @ 815DF0C
ldrh r0, [r1, 0x2]
strh r0, [r4, 0xA]
ldrb r0, [r1]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
@@ -7746,7 +7746,7 @@ sub_815DFCC: @ 815DFCC
lsrs r0, 24
movs r2, 0xD0
lsls r2, 1
- ldr r1, =gAnimBankAttacker
+ ldr r1, =gBattleAnimAttacker
ldrb r3, [r1]
ldr r1, =gBattleAnimArgs
ldrb r1, [r1]
@@ -7775,9 +7775,9 @@ sub_815DFCC: @ 815DFCC
sub_815E01C: @ 815E01C
push {r4-r6,lr}
adds r5, r0, 0
- ldr r6, =gAnimBankAttacker
+ ldr r6, =gBattleAnimAttacker
ldrb r0, [r6]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -7789,7 +7789,7 @@ sub_815E01C: @ 815E01C
_0815E038:
ldrb r0, [r6]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -7798,7 +7798,7 @@ _0815E038:
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x2]
@@ -7837,9 +7837,9 @@ _0815E09A:
lsls r0, 2
strh r0, [r5, 0x2E]
_0815E0A8:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815E0C8
@@ -7923,15 +7923,15 @@ _0815E144:
strh r0, [r6, 0x14]
strh r1, [r6, 0x16]
_0815E14E:
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815E188
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
@@ -7951,7 +7951,7 @@ _0815E17C:
_0815E188:
ldrb r0, [r5]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
@@ -7968,10 +7968,10 @@ _0815E1A8:
subs r0, r4, r0
_0815E1AC:
strh r0, [r6, 0x1E]
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
@@ -7987,16 +7987,16 @@ _0815E1D0:
asrs r0, 2
subs r0, r4, r0
strh r0, [r6, 0x20]
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x24]
@@ -8345,33 +8345,33 @@ sub_815E47C: @ 815E47C
lsls r0, 3
ldr r1, =gTasks
adds r7, r0, r1
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
mov r10, r0
ldrb r0, [r0]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x1E]
mov r1, r10
ldrb r0, [r1]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x20]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x22]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
mov r1, r8
ldrb r0, [r1]
@@ -8451,7 +8451,7 @@ _0815E4EE:
bl sub_80A68D4
mov r1, r10
ldrb r0, [r1]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -8626,11 +8626,11 @@ sub_815E6D8: @ 815E6D8
adds r6, r0, 0
cmp r1, 0
bne _0815E6F4
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0815E6F6
.pool
_0815E6F4:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0815E6F6:
ldrb r5, [r0]
ldrh r2, [r4, 0x4]
@@ -8659,7 +8659,7 @@ _0815E724:
strh r1, [r4, 0x3C]
adds r0, r5, 0
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -8827,7 +8827,7 @@ _0815E85C:
ldrh r0, [r2, 0x2]
strh r0, [r4, 0x8]
ldrb r0, [r2]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -8942,15 +8942,15 @@ sub_815E954: @ 815E954
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815E970
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
b _0815E972
.pool
_0815E970:
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
_0815E972:
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
@@ -9326,7 +9326,7 @@ sub_815EC48: @ 815EC48
ldr r0, =gTasks
adds r6, r1, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
@@ -9339,10 +9339,10 @@ sub_815EC48: @ 815EC48
lsrs r7, r0, 24
cmp r7, 0x1
bne _0815ECB4
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -9350,7 +9350,7 @@ sub_815EC48: @ 815EC48
movs r0, 0x2
eors r0, r1
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -9363,9 +9363,9 @@ _0815ECAC:
b _0815ECD2
.pool
_0815ECB4:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815ECD0
@@ -9606,18 +9606,18 @@ sub_815EE84: @ 815EE84
adds r0, r4, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _0815EEAA
.pool
_0815EEA8:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_0815EEAA:
ldrb r0, [r0]
strh r0, [r4, 0x3C]
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -9771,14 +9771,14 @@ _0815EFEC:
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r5, r0, 24
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r1, r0, 24
_0815F00C:
@@ -9991,15 +9991,15 @@ _0815F17C:
sub_815F18C: @ 815F18C
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
ldrb r0, [r4]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _0815F1B8
@@ -10057,7 +10057,7 @@ sub_815F20C: @ 815F20C
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r5, r0, 24
adds r2, r5, 0
@@ -10126,7 +10126,7 @@ _0815F2A0:
b _0815F310
.pool
_0815F2AC:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0
bl LoadBattleMonGfxAndAnimate
@@ -10135,7 +10135,7 @@ _0815F2AC:
cmp r0, 0
beq _0815F2EE
ldr r3, =gSprites
- ldr r2, =gBankSpriteIds
+ ldr r2, =gBattlerSpriteIds
ldrb r0, [r4]
adds r0, r2
ldrb r1, [r0]
@@ -10191,7 +10191,7 @@ sub_815F330: @ 815F330
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r3, r0, 24
ldr r1, =gTasks
@@ -10360,9 +10360,9 @@ _0815F482:
sub_815F48C: @ 815F48C
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankTarget
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815F4B8
@@ -10384,10 +10384,10 @@ _0815F4B8:
strb r0, [r1]
ldr r4, =0x0000ffa0
_0815F4C8:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x3
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -10639,7 +10639,7 @@ _0815F67C:
strh r1, [r0, 0x8]
ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
@@ -10764,7 +10764,7 @@ sub_815F7C4: @ 815F7C4
strh r0, [r4, 0x30]
ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
@@ -10943,7 +10943,7 @@ _0815F92C:
.4byte _0815FD8C
_0815F940:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, =gTasks
@@ -10958,9 +10958,9 @@ _0815F940:
ldrh r1, [r6, 0xA]
adds r0, r1
strh r0, [r6, 0xA]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
mov r9, r4
cmp r0, 0
@@ -11036,7 +11036,7 @@ _0815F9F4:
ldr r3, [r0, 0xC]
mov r9, r3
ldrh r6, [r0]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -11045,13 +11045,13 @@ _0815F9F4:
b _0815FB4E
.pool
_0815FA28:
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815FAC8
- ldr r7, =gBattlePartyID
+ ldr r7, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
@@ -11096,7 +11096,7 @@ _0815FA9C:
ldrh r6, [r1, 0x2]
_0815FA9E:
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -11115,7 +11115,7 @@ _0815FA9E:
b _0815FB50
.pool
_0815FAC8:
- ldr r7, =gBattlePartyID
+ ldr r7, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r7
@@ -11160,7 +11160,7 @@ _0815FB2C:
ldrh r6, [r1, 0x2]
_0815FB2E:
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -11177,10 +11177,10 @@ _0815FB2E:
_0815FB4E:
ldr r5, =0x0000ffe0
_0815FB50:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
lsls r3, r5, 16
@@ -11191,7 +11191,7 @@ _0815FB50:
str r4, [sp, 0x8]
mov r0, r9
str r0, [sp, 0xC]
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
str r0, [sp, 0x10]
movs r0, 0
@@ -11253,9 +11253,9 @@ _0815FBE8:
ldrh r2, [r6, 0xA]
adds r0, r2
strh r0, [r6, 0xA]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
mov r9, r4
cmp r0, 0
@@ -11307,18 +11307,18 @@ _0815FC56:
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815FCD6
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815FCB4
lsls r4, r5, 16
asrs r4, 16
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -11328,10 +11328,10 @@ _0815FC56:
_0815FCB4:
lsls r4, r5, 16
asrs r4, 16
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -11365,7 +11365,7 @@ _0815FCE8:
.pool
_0815FD08:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, =gTasks
@@ -11383,9 +11383,9 @@ _0815FD08:
ldr r5, =gSprites
adds r0, r5
bl sub_80A8610
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
mov r9, r4
cmp r0, 0
@@ -11425,7 +11425,7 @@ _0815FD7E:
.pool
_0815FD8C:
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, =gTasks
@@ -11440,11 +11440,11 @@ _0815FD8C:
ldrh r3, [r2, 0xA]
adds r0, r3
strh r0, [r2, 0xA]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
mov r10, r0
ldrb r0, [r0]
str r2, [sp, 0x18]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
mov r9, r4
ldr r2, [sp, 0x18]
@@ -11469,7 +11469,7 @@ _0815FD8C:
mov r1, r10
ldrb r0, [r1]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r3, r5, 0
@@ -11499,7 +11499,7 @@ _0815FE0C:
mov r2, r10
ldrb r0, [r2]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r3, r5, 0
@@ -11563,10 +11563,10 @@ _0815FE92:
asrs r1, 24
movs r0, 0x7A
bl PlaySE12WithPanning
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
@@ -11583,9 +11583,9 @@ _0815FE92:
negs r0, r0
ands r0, r1
strb r0, [r2]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -11595,7 +11595,7 @@ _0815FE92:
cmp r0, 0
bne _0815FFBC
movs r0, 0x1
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
ldr r2, =gSprites
lsls r0, 24
lsrs r0, 24
@@ -11652,9 +11652,9 @@ _0815FF6E:
ldrh r1, [r4, 0x32]
adds r0, r1
strh r0, [r4, 0x32]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0815FF9C
@@ -11721,17 +11721,17 @@ _0815FFF4:
.4byte _081600CC
.4byte _08160132
_08160008:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
@@ -11755,8 +11755,8 @@ _0816003E:
b _08160150
.pool
_08160058:
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -11811,8 +11811,8 @@ _081600B4:
strh r1, [r0, 0x26]
b _08160150
_081600CC:
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -11861,8 +11861,8 @@ _0816012A:
strh r0, [r2, 0x26]
b _08160150
_08160132:
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -11893,14 +11893,14 @@ sub_8160164: @ 8160164
ldr r0, =gTasks
adds r4, r1, r0
movs r0, 0
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0xE]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r2, 0x1
negs r2, r2
@@ -12072,9 +12072,9 @@ _081602DA:
sub_81602E0: @ 81602E0
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
ldrh r0, [r4, 0x2E]
ldrh r1, [r4, 0x30]
@@ -12115,9 +12115,9 @@ _08160326:
sub_8160338: @ 8160338
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0816037C
@@ -12166,10 +12166,10 @@ _08160396:
sub_81603A8: @ 81603A8
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimBankAttacker
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
@@ -12396,7 +12396,7 @@ sub_8160544: @ 8160544
strh r0, [r4, 0x8]
ldr r0, =gBattleAnimArgs
ldrb r0, [r0]
- bl GetAnimBankSpriteId
+ bl GetAnimBattlerSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s
index 635c02e03..ef7e609d9 100644
--- a/asm/battle_anim_8170478.s
+++ b/asm/battle_anim_8170478.s
@@ -16,7 +16,7 @@ sub_8170478: @ 8170478
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x10]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r4, [r0]
ldr r0, =gBattle_WIN0H
movs r1, 0
@@ -56,7 +56,7 @@ sub_8170478: @ 8170478
movs r1, 0x3
movs r2, 0x1
bl SetAnimBgAttribute
- ldr r0, =gHealthBoxesIds
+ ldr r0, =gHealthboxSpriteIds
adds r4, r0
ldrb r0, [r4]
ldr r1, =gSprites
@@ -212,7 +212,7 @@ sub_8170660: @ 8170660
push {r7}
lsls r0, 24
lsrs r7, r0, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
mov r8, r0
ldr r1, =gTasks
@@ -373,7 +373,7 @@ _0817076C:
movs r1, 0x1
movs r2, 0
bl SetAnimBgAttribute
- ldr r0, =gHealthBoxesIds
+ ldr r0, =gHealthboxSpriteIds
add r0, r8
ldrb r0, [r0]
lsls r1, r0, 4
@@ -434,7 +434,7 @@ sub_8170834: @ 8170834
adds r7, r1, 0
lsls r2, 24
lsrs r2, 24
- ldr r0, =gHealthBoxesIds
+ ldr r0, =gHealthboxSpriteIds
adds r2, r0
ldrb r0, [r2]
lsls r5, r0, 4
@@ -540,7 +540,7 @@ sub_8170920: @ 8170920
lsrs r4, 24
mov r1, sp
adds r1, 0x1
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r2, [r0]
mov r0, sp
bl sub_8170834
@@ -561,7 +561,7 @@ sub_817094C: @ 817094C
push {r5,r6}
lsls r0, 24
lsrs r0, 24
- ldr r1, =gHealthBoxesIds
+ ldr r1, =gHealthboxSpriteIds
adds r0, r1
ldrb r0, [r0]
ldr r1, =gSprites
@@ -628,7 +628,7 @@ sub_81709EC: @ 81709EC
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_817094C
adds r0, r4, 0
@@ -765,8 +765,8 @@ sub_8170B04: @ 8170B04
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r5, [r0]
@@ -851,17 +851,17 @@ sub_8170BB0: @ 8170BB0
sub sp, 0xC
lsls r0, 24
lsrs r5, r0, 24
- ldr r1, =gBankSpriteIds
- ldr r4, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
adds r1, r0, r1
ldrb r1, [r1]
mov r9, r1
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _08170BF8
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -872,7 +872,7 @@ sub_8170BB0: @ 8170BB0
b _08170C08
.pool
_08170BF8:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
ldrb r0, [r4]
lsls r0, 1
adds r0, r1
@@ -904,16 +904,16 @@ _08170C08:
b _08170CEE
.pool
_08170C44:
- ldr r5, =gAnimBankAttacker
+ ldr r5, =gBattleAnimAttacker
ldrb r0, [r5]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
adds r1, r0, 0
lsls r1, 24
ldr r2, =gSprites
@@ -1162,18 +1162,18 @@ sub_8170E04: @ 8170E04
adds r6, r4, r1
movs r0, 0x22
strh r0, [r6, 0x2E]
- ldr r2, =gAnimBankTarget
+ ldr r2, =gBattleAnimTarget
mov r8, r2
ldrb r0, [r2]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x30]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
subs r0, 0x10
@@ -1186,7 +1186,7 @@ sub_8170E04: @ 8170E04
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r3, [r0, 0x8]
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
mov r2, r8
ldrb r0, [r2]
adds r0, r1
@@ -1283,7 +1283,7 @@ _08170F54:
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
bl sub_80A82E4
@@ -1313,18 +1313,18 @@ _08170F54:
adds r6, r4, r0
movs r0, 0x22
strh r0, [r6, 0x2E]
- ldr r1, =gAnimBankTarget
+ ldr r1, =gBattleAnimTarget
mov r8, r1
ldrb r0, [r1]
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x30]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
subs r0, 0x10
@@ -1335,8 +1335,8 @@ _08170F54:
ldr r0, =SpriteCallbackDummy
str r0, [r4]
movs r0, 0
- bl GetBankByIdentity
- ldr r1, =gBankSpriteIds
+ bl GetBattlerAtPosition
+ ldr r1, =gBattlerSpriteIds
lsls r0, 24
lsrs r0, 24
adds r0, r1
@@ -1371,8 +1371,8 @@ sub_8171030: @ 8171030
lsrs r5, r0, 24
ldr r6, =gSprites
movs r0, 0
- bl GetBankByIdentity
- ldr r1, =gBankSpriteIds
+ bl GetBattlerAtPosition
+ ldr r1, =gBattlerSpriteIds
lsls r0, 24
lsrs r0, 24
adds r0, r1
@@ -1422,8 +1422,8 @@ sub_81710A8: @ 81710A8
lsrs r5, r0, 24
ldr r6, =gSprites
movs r0, 0
- bl GetBankByIdentity
- ldr r4, =gBankSpriteIds
+ bl GetBattlerAtPosition
+ ldr r4, =gBattlerSpriteIds
lsls r0, 24
lsrs r0, 24
adds r0, r4
@@ -1438,7 +1438,7 @@ sub_81710A8: @ 81710A8
cmp r0, 0
bge _081710F4
movs r0, 0
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
adds r0, r4
@@ -1550,7 +1550,7 @@ _08171188:
movs r2, 0x1
movs r3, 0x1C
bl LaunchBallStarsTask
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r1, [r0]
movs r0, 0
movs r2, 0xE
@@ -1584,8 +1584,8 @@ sub_81711E8: @ 81711E8
ldr r0, =sub_8171240
str r0, [r4, 0x1C]
ldr r2, =gSprites
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankTarget
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -1606,8 +1606,8 @@ _08171224:
sub_8171240: @ 8171240
push {r4-r7,lr}
adds r7, r0, 0
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankTarget
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimTarget
ldrb r0, [r0]
adds r0, r1
ldrb r4, [r0]
@@ -2333,7 +2333,7 @@ sub_81717F8: @ 81717F8
push {r7}
sub sp, 0x4
adds r6, r0, 0
- ldr r7, =gAnimBankTarget
+ ldr r7, =gBattleAnimTarget
ldrh r0, [r6, 0x36]
adds r0, 0x1
movs r1, 0
@@ -2390,7 +2390,7 @@ _08171880:
cmp r1, r0
bne _081718BC
ldr r5, =gSprites
- ldr r4, =gBankSpriteIds
+ ldr r4, =gBattlerSpriteIds
ldrb r0, [r7]
adds r0, r4
ldrb r1, [r0]
@@ -2715,7 +2715,7 @@ sub_8171AE4: @ 8171AE4
movs r2, 0x1
movs r3, 0x1C
bl LaunchBallStarsTask
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r1, [r0]
movs r0, 0x1
movs r2, 0xE
@@ -2723,8 +2723,8 @@ sub_8171AE4: @ 8171AE4
bl LaunchBallFadeMonTask
_08171B36:
ldr r6, =gSprites
- ldr r5, =gBankSpriteIds
- ldr r4, =gAnimBankTarget
+ ldr r5, =gBattlerSpriteIds
+ ldr r4, =gBattleAnimTarget
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
@@ -2791,8 +2791,8 @@ sub_8171BAC: @ 8171BAC
strb r0, [r2]
_08171BCA:
ldr r4, =gSprites
- ldr r3, =gBankSpriteIds
- ldr r2, =gAnimBankTarget
+ ldr r3, =gBattlerSpriteIds
+ ldr r2, =gBattleAnimTarget
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -2840,8 +2840,8 @@ _08171C24:
cmp r5, 0
beq _08171C8A
ldr r4, =gSprites
- ldr r3, =gBankSpriteIds
- ldr r2, =gAnimBankTarget
+ ldr r3, =gBattlerSpriteIds
+ ldr r2, =gBattleAnimTarget
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -4729,8 +4729,8 @@ sub_8172BF0: @ 8172BF0
lsrs r7, r0, 24
movs r0, 0
mov r8, r0
- ldr r0, =gBankSpriteIds
- ldr r3, =gAnimBankAttacker
+ ldr r0, =gBattlerSpriteIds
+ ldr r3, =gBattleAnimAttacker
ldrb r2, [r3]
adds r0, r2, r0
ldrb r6, [r0]
@@ -4764,7 +4764,7 @@ _08172C36:
adds r0, r4
strh r0, [r5, 0x8]
ldrb r0, [r3]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08172C78
@@ -4838,7 +4838,7 @@ _08172CDA:
adds r0, r2
strh r0, [r5, 0x8]
ldrb r0, [r3]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08172D10
@@ -4877,9 +4877,9 @@ _08172D28:
adds r0, r1
ldrb r1, [r0, 0x8]
strh r1, [r0, 0x8]
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0
@@ -4949,7 +4949,7 @@ _08172DC0:
beq _08172E4E
b _08172E84
_08172DC6:
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
bl sub_80A8364
lsls r0, 24
@@ -5009,8 +5009,8 @@ _08172E14:
strh r0, [r4, 0x26]
b _08172E84
_08172E4E:
- ldr r1, =gBankSpriteIds
- ldr r4, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r4, =gBattleAnimAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r1, [r0]
@@ -5048,7 +5048,7 @@ sub_8172E9C: @ 8172E9C
ldr r3, =gBattleAnimArgs
ldr r1, =gBattleSpritesDataPtr
ldr r2, [r1]
- ldr r1, =gAnimBankAttacker
+ ldr r1, =gBattleAnimAttacker
ldrb r1, [r1]
ldr r2, [r2]
lsls r1, 2
@@ -5068,8 +5068,8 @@ sub_8172ED0: @ 8172ED0
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, =gAnimBankTarget
- ldr r1, =gEffectBank
+ ldr r2, =gBattleAnimTarget
+ ldr r1, =gEffectBattler
ldrb r1, [r1]
strb r1, [r2]
bl DestroyAnimVisualTask
@@ -5108,7 +5108,7 @@ sub_8172EF0: @ 8172EF0
bl GetMonData
adds r4, r0, 0
adds r0, r6, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08172FC8
@@ -5234,12 +5234,12 @@ _0817303A:
ldrb r0, [r4, 0x8]
mov r8, r0
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r5, r0, 24
mov r0, r8
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0x1E
@@ -5347,7 +5347,7 @@ _08173118:
cmp r0, 0
bne _08173160
mov r0, r8
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
movs r1, 0x3F
cmp r0, 0
@@ -5575,11 +5575,11 @@ sub_817330C: @ 817330C
movs r0, 0x1E
strh r0, [r4, 0x2E]
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
ldr r5, =gBattleAnimArgs
lsrs r0, 24
@@ -5587,11 +5587,11 @@ sub_817330C: @ 817330C
adds r0, r1
strh r0, [r4, 0x32]
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x6]
@@ -5602,8 +5602,8 @@ sub_817330C: @ 817330C
adds r0, r4, 0
bl sub_80A68D4
ldr r2, =gSprites
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -5627,8 +5627,8 @@ sub_817339C: @ 817339C
push {lr}
adds r3, r0, 0
ldr r2, =gSprites
- ldr r1, =gBankSpriteIds
- ldr r0, =gAnimBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -5678,8 +5678,8 @@ sub_8173400: @ 8173400
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, =gSprites
- ldr r3, =gBankSpriteIds
- ldr r2, =gAnimBankAttacker
+ ldr r3, =gBattlerSpriteIds
+ ldr r2, =gBattleAnimAttacker
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -5732,21 +5732,21 @@ sub_817345C: @ 817345C
.pool
_08173478:
movs r0, 0
- bl GetBankByIdentity
- ldr r1, =gAnimBankAttacker
+ bl GetBattlerAtPosition
+ ldr r1, =gBattleAnimAttacker
strb r0, [r1]
movs r0, 0x1
b _08173498
.pool
_0817348C:
movs r0, 0x1
- bl GetBankByIdentity
- ldr r1, =gAnimBankAttacker
+ bl GetBattlerAtPosition
+ ldr r1, =gBattleAnimAttacker
strb r0, [r1]
movs r0, 0
_08173498:
- bl GetBankByIdentity
- ldr r1, =gAnimBankTarget
+ bl GetBattlerAtPosition
+ ldr r1, =gBattleAnimTarget
strb r0, [r1]
_081734A0:
adds r0, r4, 0
@@ -5812,13 +5812,13 @@ sub_817351C: @ 817351C
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r3, =gAnimBankAttacker
+ ldr r3, =gBattleAnimAttacker
ldr r1, =gBattleSpritesDataPtr
ldr r2, [r1]
ldr r1, [r2, 0x8]
ldrh r1, [r1]
strb r1, [r3]
- ldr r3, =gAnimBankTarget
+ ldr r3, =gBattleAnimTarget
ldr r1, [r2, 0x8]
ldrh r1, [r1]
lsrs r1, 8
diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s
index 949934e1d..def934fab 100644
--- a/asm/battle_anim_sound_tasks.s
+++ b/asm/battle_anim_sound_tasks.s
@@ -336,25 +336,25 @@ _08158DD0:
adds r2, r0, 0
cmp r1, 0
bne _08158DEC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r4, [r0]
b _08158E12
.pool
_08158DEC:
cmp r1, 0x1
bne _08158DFC
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r4, [r0]
b _08158E12
.pool
_08158DFC:
cmp r1, 0x2
bne _08158E08
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08158E0A
.pool
_08158E08:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08158E0A:
ldrb r1, [r0]
movs r0, 0x2
@@ -369,7 +369,7 @@ _08158E12:
bne _08158E38
_08158E1E:
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
bne _08158E38
@@ -379,11 +379,11 @@ _08158E1E:
.pool
_08158E38:
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08158E5C
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -393,7 +393,7 @@ _08158E38:
b _08158E6A
.pool
_08158E5C:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -461,25 +461,25 @@ _08158EE0:
adds r2, r0, 0
cmp r1, 0
bne _08158EFC
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r4, [r0]
b _08158F22
.pool
_08158EFC:
cmp r1, 0x1
bne _08158F0C
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
ldrb r4, [r0]
b _08158F22
.pool
_08158F0C:
cmp r1, 0x2
bne _08158F18
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
b _08158F1A
.pool
_08158F18:
- ldr r0, =gAnimBankTarget
+ ldr r0, =gBattleAnimTarget
_08158F1A:
ldrb r1, [r0]
movs r0, 0x2
@@ -494,7 +494,7 @@ _08158F22:
bne _08158F48
_08158F2E:
adds r0, r4, 0
- bl IsAnimBankSpriteVisible
+ bl IsBattlerSpriteVisible
lsls r0, 24
cmp r0, 0
bne _08158F48
@@ -504,11 +504,11 @@ _08158F2E:
.pool
_08158F48:
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _08158F6C
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -518,7 +518,7 @@ _08158F48:
b _08158F7A
.pool
_08158F6C:
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -705,7 +705,7 @@ sub_81590B8: @ 81590B8
.pool
_081590F8:
ldr r1, =gAnimSpeciesByBanks
- ldr r0, =gAnimBankAttacker
+ ldr r0, =gBattleAnimAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s
index 31d5d3fbe..38e0e4b0a 100644
--- a/asm/battle_frontier_1.s
+++ b/asm/battle_frontier_1.s
@@ -7171,7 +7171,7 @@ _0819270A:
ldr r4, [sp, 0x24]
cmp r4, r0
bne _08192784
- ldr r0, =gTrainerClassToNameIndex
+ ldr r0, =gFacilityClassToTrainerClass
adds r0, 0x3C
ldrb r5, [r0]
b _081927A2
@@ -12991,7 +12991,7 @@ sub_8195938: @ 8195938
push {r4,lr}
adds r3, r0, 0
movs r2, 0
- ldr r4, =gTrainers + TRAINER_TUCKER * 0x28 + 0x4 @ Tucker's name
+ ldr r4, =(gTrainers + 806 * 0x28 + 0x4) @ TRAINER_TUCKER name
_08195940:
adds r0, r3, r2
adds r1, r2, r4
@@ -16009,6 +16009,44 @@ _0819715C:
pop {r0}
bx r0
.pool
+
thumb_func_end sub_8197080
+ thumb_func_start sub_8197184
+sub_8197184: @ 8197184
+ push {r4,r5,lr}
+ adds r4, r1, 0
+ adds r5, r2, 0
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0
+ bl GetWindowAttribute
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r1, =gUnknown_0860EA6C
+ movs r2, 0x80
+ lsls r2, 1
+ lsls r4, 16
+ lsrs r4, 16
+ adds r3, r4, 0
+ bl LoadBgTiles
+ ldr r0, =gUnknown_0860EA4C
+ lsls r5, 20
+ lsrs r5, 16
+ adds r1, r5, 0
+ movs r2, 0x20
+ bl LoadPalette
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_8197184
+
+ thumb_func_start sub_81971C4
+sub_81971C4: @ 81971C4
+ push {lr}
+ bl sub_819645C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_81971C4
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s
index 98b5187c2..67f44a0b6 100644
--- a/asm/battle_frontier_2.s
+++ b/asm/battle_frontier_2.s
@@ -5,6 +5,70 @@
.text
+ thumb_func_start sub_819A44C
+sub_819A44C: @ 819A44C
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ ldrb r4, [r5, 0x5]
+ lsrs r4, 4
+ movs r0, 0x65
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsls r4, 16
+ lsrs r4, 16
+ lsrs r0, 24
+ cmp r4, r0
+ bne _0819A4BA
+ adds r0, r5, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0819A4B0
+ ldrh r1, [r5, 0x2E]
+ movs r2, 0x2E
+ ldrsh r0, [r5, r2]
+ cmp r0, 0
+ beq _0819A484
+ subs r0, r1, 0x1
+ strh r0, [r5, 0x2E]
+ b _0819A4C2
+_0819A484:
+ bl Random
+ lsls r0, 16
+ lsrs r0, 16
+ movs r1, 0x5
+ bl __umodsi3
+ lsls r0, 16
+ cmp r0, 0
+ bne _0819A4A6
+ adds r0, r5, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ movs r0, 0x20
+ strh r0, [r5, 0x2E]
+ b _0819A4C2
+_0819A4A6:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnim
+ b _0819A4C2
+_0819A4B0:
+ adds r0, r5, 0
+ movs r1, 0x1
+ bl StartSpriteAnimIfDifferent
+ b _0819A4C2
+_0819A4BA:
+ adds r0, r5, 0
+ movs r1, 0
+ bl StartSpriteAnimIfDifferent
+_0819A4C2:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_819A44C
+
thumb_func_start sub_819A4C8
sub_819A4C8: @ 819A4C8
push {lr}
@@ -12385,7 +12449,7 @@ sub_81A0C9C: @ 81A0C9C
bl sub_808BCF4
movs r0, 0
movs r1, 0x1
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
bl sub_81A0A70
pop {r0}
bx r0
@@ -14586,7 +14650,7 @@ sub_81A1EA8: @ 81A1EA8
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -14874,7 +14938,7 @@ sub_81A2134: @ 81A2134
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -15227,7 +15291,7 @@ sub_81A2460: @ 81A2460
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -15475,7 +15539,7 @@ sub_81A2698: @ 81A2698
strb r0, [r6]
ldrb r0, [r6]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r6]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -15778,7 +15842,7 @@ sub_81A2968: @ 81A2968
strb r0, [r5]
ldrb r0, [r5]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r5]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -16153,7 +16217,7 @@ sub_81A2C94: @ 81A2C94
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -16448,7 +16512,7 @@ sub_81A2F38: @ 81A2F38
strb r0, [r5]
ldrb r0, [r5]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r5]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -16526,7 +16590,7 @@ sub_81A2FF8: @ 81A2FF8
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -19573,7 +19637,7 @@ sub_81A4AA0: @ 81A4AA0
strb r0, [r4]
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -21034,7 +21098,7 @@ sub_81A5718: @ 81A5718
b _081A57D8
.pool
_081A576C:
- ldr r0, =gBattleMoveFlags
+ ldr r0, =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
@@ -29783,7 +29847,7 @@ GetTrainerEncounterMusicIdInBattlePyramind: @ 81A9F3C
lsls r0, 16
lsrs r0, 16
movs r4, 0
- ldr r3, =gTrainerClassToNameIndex
+ ldr r3, =gFacilityClassToTrainerClass
ldr r1, =gUnknown_0203BC88
ldr r2, [r1]
movs r1, 0x34
diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s
index fedb50c45..55d0bae39 100644
--- a/asm/battle_link_817C95C.s
+++ b/asm/battle_link_817C95C.s
@@ -34,32 +34,32 @@ _0817C988:
movs r1, 0x81
lsls r1, 2
adds r7, r0, r1
- ldr r5, =gBankAttacker
+ ldr r5, =gBattlerAttacker
ldrb r0, [r5]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r6, r0, 24
- ldr r0, =gEffectBank
+ ldr r0, =gEffectBattler
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldr r0, =gStringInfo
ldr r0, [r0]
ldrb r0, [r0, 0x7]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
cmp r4, 0
bne _0817CA00
- ldr r2, =gBattlePartyID
+ ldr r2, =gBattlerPartyIndexes
ldrb r0, [r5]
lsls r0, 1
adds r0, r2
@@ -70,7 +70,7 @@ _0817C988:
b _0817CA10
.pool
_0817CA00:
- ldr r2, =gBattlePartyID
+ ldr r2, =gBattlerPartyIndexes
ldrb r0, [r5]
lsls r0, 1
adds r0, r2
@@ -83,7 +83,7 @@ _0817CA10:
str r1, [sp, 0x8]
cmp r6, 0
bne _0817CA3C
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r2
@@ -94,7 +94,7 @@ _0817CA10:
b _0817CA4C
.pool
_0817CA3C:
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r2
@@ -105,12 +105,12 @@ _0817CA3C:
_0817CA4C:
adds r1, r0
str r1, [sp, 0xC]
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
ldr r1, =gStringInfo
ldr r1, [r1]
ldrh r1, [r1]
- bl GetBankMoveSlotId
+ bl GetBattlerMoveSlotId
lsls r0, 24
lsrs r0, 24
mov r10, r0
@@ -134,20 +134,20 @@ _0817CA4C:
bl _0817E0A2
.pool
_0817CA9C:
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 25
mov r8, r0
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r5, r0, 25
- ldr r0, =gEffectBank
+ ldr r0, =gEffectBattler
ldrb r0, [r0]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r3, r0, 25
ldr r1, [sp]
@@ -571,8 +571,8 @@ _0817D0DC:
adds r3, r4
lsls r3, 2
adds r3, r7, r3
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -601,8 +601,8 @@ _0817D124:
adds r2, r4
lsls r2, 2
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -634,8 +634,8 @@ _0817D16C:
adds r0, r4
lsls r0, 2
adds r5, r7, r0
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -715,8 +715,8 @@ _0817D216:
adds r2, r4
lsls r2, 2
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -775,8 +775,8 @@ _0817D296:
adds r2, r4
lsls r2, 2
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -833,8 +833,8 @@ _0817D314:
lsls r0, r4, 4
adds r3, r0
adds r3, r7, r3
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -940,8 +940,8 @@ _0817D3F2:
bne _0817D3FE
bl _0817E0A6
_0817D3FE:
- ldr r0, =gBankAttacker
- ldr r1, =gBankTarget
+ ldr r0, =gBattlerAttacker
+ ldr r1, =gBattlerTarget
ldrb r0, [r0]
ldrb r1, [r1]
cmp r0, r1
@@ -1014,8 +1014,8 @@ _0817D498:
lsls r0, r6, 4
adds r2, r0
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1091,8 +1091,8 @@ _0817D53C:
lsls r0, r6, 4
adds r2, r0
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1161,8 +1161,8 @@ _0817D5CE:
lsls r0, r6, 4
adds r2, r0
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1226,8 +1226,8 @@ _0817D65E:
lsls r0, r6, 4
adds r2, r0
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1301,8 +1301,8 @@ _0817D6F2:
strb r0, [r1]
bl _0817E0A6
_0817D704:
- ldr r5, =gBattlePartyID
- ldr r6, =gEffectBank
+ ldr r5, =gBattlerPartyIndexes
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1314,7 +1314,7 @@ _0817D704:
lsls r4, 3
adds r2, r4
adds r2, r7, r2
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r5
@@ -1353,8 +1353,8 @@ _0817D76C:
bne _0817D77E
bl _0817E0A6
_0817D77E:
- ldr r6, =gBattlePartyID
- ldr r5, =gBankAttacker
+ ldr r6, =gBattlerPartyIndexes
+ ldr r5, =gBattlerAttacker
ldrb r0, [r5]
lsls r0, 1
adds r0, r6
@@ -1395,8 +1395,8 @@ _0817D7B2:
b _0817D934
.pool
_0817D7D8:
- ldr r5, =gBattlePartyID
- ldr r6, =gEffectBank
+ ldr r5, =gBattlerPartyIndexes
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1408,7 +1408,7 @@ _0817D7D8:
lsls r4, 3
adds r2, r4
adds r2, r7, r2
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r5
@@ -1439,8 +1439,8 @@ _0817D7D8:
b _0817D88C
.pool
_0817D838:
- ldr r5, =gBattlePartyID
- ldr r6, =gEffectBank
+ ldr r5, =gBattlerPartyIndexes
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1452,7 +1452,7 @@ _0817D838:
lsls r4, 3
adds r2, r4
adds r2, r7, r2
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r5
@@ -1496,9 +1496,9 @@ _0817D8A4:
bne _0817D8B6
bl _0817E0A6
_0817D8B6:
- ldr r2, =gBattlePartyID
+ ldr r2, =gBattlerPartyIndexes
mov r8, r2
- ldr r6, =gBankAttacker
+ ldr r6, =gBattlerAttacker
ldrb r0, [r6]
lsls r0, 1
add r0, r8
@@ -1573,8 +1573,8 @@ _0817D94C:
lsls r0, r6, 4
adds r2, r0
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1627,8 +1627,8 @@ _0817D9AE:
movs r0, 0x9
b _0817E086
_0817D9C2:
- ldr r5, =gBattlePartyID
- ldr r6, =gEffectBank
+ ldr r5, =gBattlerPartyIndexes
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1640,7 +1640,7 @@ _0817D9C2:
lsls r4, 3
adds r2, r4
adds r2, r7, r2
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r5
@@ -1671,8 +1671,8 @@ _0817D9C2:
b _0817DB76
.pool
_0817DA24:
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1702,8 +1702,8 @@ _0817DA48:
b _0817E0A6
.pool
_0817DA68:
- ldr r5, =gBattlePartyID
- ldr r6, =gEffectBank
+ ldr r5, =gBattlerPartyIndexes
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1715,7 +1715,7 @@ _0817DA68:
lsls r4, 3
adds r2, r4
adds r2, r7, r2
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r5
@@ -1747,8 +1747,8 @@ _0817DA68:
b _0817DB76
.pool
_0817DACC:
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1790,8 +1790,8 @@ _0817DB10:
b _0817E0A6
.pool
_0817DB24:
- ldr r5, =gBattlePartyID
- ldr r6, =gEffectBank
+ ldr r5, =gBattlerPartyIndexes
+ ldr r6, =gEffectBattler
ldrb r0, [r6]
lsls r0, 1
adds r0, r5
@@ -1803,7 +1803,7 @@ _0817DB24:
lsls r4, 3
adds r3, r4
adds r3, r7, r3
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r5
@@ -1838,8 +1838,8 @@ _0817DB76:
b _0817E0A6
.pool
_0817DB90:
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1875,8 +1875,8 @@ _0817DBD4:
lsls r0, r1, 4
adds r3, r0
adds r3, r7, r3
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -1943,8 +1943,8 @@ _0817DC62:
adds r2, r6
lsls r2, 2
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -2021,8 +2021,8 @@ _0817DCFC:
lsls r0, r4, 4
adds r2, r0
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -2049,8 +2049,8 @@ _0817DD38:
lsls r0, r4, 4
adds r2, r0
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -2121,8 +2121,8 @@ _0817DDC8:
adds r2, r4
lsls r2, 2
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -2154,8 +2154,8 @@ _0817DE10:
adds r2, r4
lsls r2, 2
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -2253,8 +2253,8 @@ _0817DEDC:
adds r2, r4
lsls r2, 2
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -2331,8 +2331,8 @@ _0817DF70:
adds r2, r4
lsls r2, 2
adds r2, r7, r2
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -2413,8 +2413,8 @@ _0817DFE6:
negs r0, r0
ands r0, r2
strb r0, [r1]
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -2557,22 +2557,22 @@ _0817E122:
lsls r1, 2
adds r1, r0, r1
str r1, [sp, 0x8]
- ldr r2, =gBankAttacker
+ ldr r2, =gBattlerAttacker
mov r10, r2
ldrb r0, [r2]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
mov r9, r0
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r4, r0, 24
mov r1, r10
ldrb r0, [r1]
adds r1, r7, 0
- bl GetBankMoveSlotId
+ bl GetBattlerMoveSlotId
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x3
@@ -2593,7 +2593,7 @@ _0817E122:
_0817E184:
mov r2, r10
ldrb r0, [r2]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 25
lsls r0, 3
@@ -2604,7 +2604,7 @@ _0817E184:
mov r2, r10
ldrb r1, [r2]
lsls r1, 1
- ldr r2, =gBattlePartyID
+ ldr r2, =gBattlerPartyIndexes
adds r1, r2
ldrh r2, [r1]
adds r2, 0x1
@@ -2617,7 +2617,7 @@ _0817E184:
strb r1, [r0]
mov r1, r10
ldrb r0, [r1]
- bl GetBankIdentity
+ bl GetBattlerPosition
lsls r0, 24
lsrs r0, 25
lsls r0, 3
@@ -2685,7 +2685,7 @@ _0817E23C:
mov r1, r10
ldrb r0, [r1]
lsls r0, 1
- ldr r2, =gBattlePartyID
+ ldr r2, =gBattlerPartyIndexes
adds r0, r2
ldrh r1, [r0]
adds r1, 0x1
@@ -2723,7 +2723,7 @@ _0817E27A:
mov r1, r10
ldrb r0, [r1]
lsls r0, 1
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
adds r0, r1
ldrh r1, [r0]
adds r1, 0x1
@@ -2812,9 +2812,9 @@ sub_817E32C: @ 817E32C
movs r1, 0x81
lsls r1, 2
adds r4, r0, r1
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r2, r0, 24
cmp r5, 0x12
@@ -3244,14 +3244,14 @@ sub_817E684: @ 817E684
movs r2, 0x81
lsls r2, 2
adds r7, r0, r2
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r3, r0, 24
mov r0, r10
@@ -3297,8 +3297,8 @@ _0817E6F0:
.4byte _0817E760
.4byte _0817E760
_0817E760:
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -3324,13 +3324,13 @@ _0817E760:
_0817E79C:
ldr r1, =gUnknown_0860A834
add r1, r12
- ldr r7, =gBattlePartyID
+ ldr r7, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r4
lsls r2, r0, 4
ldr r4, =0x0000ffff
ldr r1, [r1]
- ldr r3, =gBankAttacker
+ ldr r3, =gBattlerAttacker
ldrh r0, [r1]
cmp r6, r0
bne _0817E7E0
@@ -3708,15 +3708,15 @@ sub_817EA80: @ 817EA80
movs r1, 0x81
lsls r1, 2
adds r5, r0, r1
- ldr r3, =gBankAttacker
+ ldr r3, =gBattlerAttacker
mov r8, r3
ldrb r0, [r3]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r2, r0, 24
lsls r0, r4, 1
@@ -4005,8 +4005,8 @@ _0817ECCC:
ldrb r0, [r0]
lsrs r0, 5
subs r6, r0, 0x1
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -4164,8 +4164,8 @@ _0817EE1C:
cmp r7, 0x1
bne _0817EEBC
adds r2, r4, 0
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -4227,7 +4227,7 @@ _0817EE8E:
b _0817EEBC
_0817EE96:
adds r2, r4, 0
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
mov r3, r8
ldrb r0, [r3]
lsls r0, 1
@@ -4269,9 +4269,9 @@ sub_817EECC: @ 817EECC
beq _0817EEE6
b _0817F1FA
_0817EEE6:
- ldr r4, =gBankAttacker
+ ldr r4, =gBattlerAttacker
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4291,7 +4291,7 @@ _0817EEF8:
bgt _0817EF10
b _0817F1FA
_0817EF10:
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
muls r0, r1
adds r0, r5
@@ -4367,7 +4367,7 @@ _0817EF8A:
beq _0817EF98
b _0817F1FA
_0817EF98:
- ldr r2, =gBankAttacker
+ ldr r2, =gBattlerAttacker
ldrb r0, [r2]
adds r0, r6
ldrb r0, [r0]
@@ -4386,11 +4386,11 @@ _0817EF98:
mov r10, r3
mov r8, r0
add r7, sp, 0x10
- ldr r4, =gBankTarget
+ ldr r4, =gBattlerTarget
mov r9, r4
_0817EFC2:
lsls r1, r5, 1
- ldr r6, =gBankAttacker
+ ldr r6, =gBattlerAttacker
ldrb r0, [r6]
movs r2, 0x58
muls r0, r2
@@ -4411,16 +4411,16 @@ _0817EFC2:
lsls r0, 24
cmp r0, 0
beq _0817F0B4
- ldr r4, =gSideAffecting
+ ldr r4, =gSideStatuses
mov r1, r9
ldrb r0, [r1]
- bl GetBankIdentity
+ bl GetBattlerPosition
movs r1, 0x1
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
- ldr r2, =gBankAttacker
+ ldr r2, =gBattlerAttacker
ldrb r0, [r2]
movs r4, 0x58
muls r0, r4
@@ -4437,7 +4437,7 @@ _0817EFC2:
str r4, [sp]
movs r4, 0
str r4, [sp, 0x4]
- ldr r6, =gBankAttacker
+ ldr r6, =gBattlerAttacker
ldrb r4, [r6]
str r4, [sp, 0x8]
mov r6, r9
@@ -4448,7 +4448,7 @@ _0817EFC2:
ldr r4, =gBattleMoveDamage
str r3, [r4]
ldr r1, =gStatuses3
- ldr r2, =gBankAttacker
+ ldr r2, =gBattlerAttacker
ldrb r0, [r2]
lsls r0, 2
adds r0, r1
@@ -4472,7 +4472,7 @@ _0817EFC2:
str r0, [r4]
_0817F06A:
ldr r0, =gProtectStructs
- ldr r6, =gBankAttacker
+ ldr r6, =gBattlerAttacker
ldrb r1, [r6]
lsls r1, 4
adds r1, r0
@@ -4513,9 +4513,9 @@ _0817F0B4:
cmp r5, 0x3
ble _0817EFC2
movs r5, 0
- ldr r3, =gBankAttacker
+ ldr r3, =gBattlerAttacker
ldr r6, =gMoveSelectionCursor
- ldr r4, =gBattlePartyID
+ ldr r4, =gBattlerPartyIndexes
mov r8, r4
movs r7, 0x64
mov r9, r7
@@ -4545,9 +4545,9 @@ _0817F0D8:
movs r7, 0
_0817F0F6:
movs r5, 0
- ldr r4, =gBankTarget
+ ldr r4, =gBattlerTarget
ldr r6, =gEnemyParty
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
add r0, r10
ldrb r3, [r0]
@@ -4582,7 +4582,7 @@ _0817F11A:
adds r6, r0, 0
lsls r6, 16
lsrs r6, 16
- ldr r2, =gBankAttacker
+ ldr r2, =gBattlerAttacker
ldrb r0, [r2]
lsls r0, 1
add r0, r8
@@ -4598,7 +4598,7 @@ _0817F11A:
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
- ldr r4, =gBankAttacker
+ ldr r4, =gBattlerAttacker
ldrb r3, [r4]
mov r2, r10
adds r0, r3, r2
@@ -4625,7 +4625,7 @@ _0817F1D4:
_0817F1DC:
ldr r2, =gBattleMoveDamage
ldr r1, =gMoveSelectionCursor
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -4695,7 +4695,7 @@ _0817F270:
cmp r2, 0x95
bne _0817F294
ldr r2, =gBattleMons
- ldr r0, =gBankAttacker
+ ldr r0, =gBattlerAttacker
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
@@ -4793,15 +4793,15 @@ _0817F324:
.pool
thumb_func_end sub_817F2A8
- thumb_func_start GetBankMoveSlotId
-GetBankMoveSlotId: @ 817F33C
+ thumb_func_start GetBattlerMoveSlotId
+GetBattlerMoveSlotId: @ 817F33C
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
lsls r1, 16
lsrs r7, r1, 16
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
ldr r6, =gEnemyParty
cmp r0, 0
@@ -4809,7 +4809,7 @@ GetBankMoveSlotId: @ 817F33C
ldr r6, =gPlayerParty
_0817F356:
movs r4, 0
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r5, 1
adds r5, r0, r1
b _0817F36E
@@ -4835,7 +4835,7 @@ _0817F388:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end GetBankMoveSlotId
+ thumb_func_end GetBattlerMoveSlotId
thumb_func_start sub_817F394
sub_817F394: @ 817F394
diff --git a/asm/battle_records.s b/asm/battle_records.s
index bcf82dbb8..f688144d9 100644
--- a/asm/battle_records.s
+++ b/asm/battle_records.s
@@ -667,7 +667,7 @@ sub_813C4BC: @ 813C4BC
strb r0, [r6]
ldrb r0, [r6]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r6]
movs r1, 0x11
bl FillWindowPixelBuffer
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index c5d0cf3ba..8a4036cec 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -1340,7 +1340,7 @@ GetFrontierTrainerFrontSpriteId: @ 8162AA0
lsls r0, 1
cmp r4, r0
bne _08162AD0
- ldr r1, =gUnknown_0831F578
+ ldr r1, =gFacilityClassToPicIndex
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldr r2, =0x00000bed
@@ -1362,7 +1362,7 @@ _08162AE4:
ldr r0, =0x0000012b
cmp r4, r0
bhi _08162B08
- ldr r2, =gUnknown_0831F578
+ ldr r2, =gFacilityClassToPicIndex
ldr r0, =gUnknown_0203BC88
ldr r1, [r0]
movs r0, 0x34
@@ -1383,7 +1383,7 @@ _08162B08:
ands r0, r1
cmp r0, 0
beq _08162B38
- ldr r4, =gUnknown_0831F578
+ ldr r4, =gFacilityClassToPicIndex
bl sub_818649C
lsls r0, 24
lsrs r0, 24
@@ -1391,7 +1391,7 @@ _08162B08:
b _08162BC8
.pool
_08162B38:
- ldr r3, =gUnknown_0831F578
+ ldr r3, =gFacilityClassToPicIndex
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldr r1, =0xfffffed4
@@ -1413,7 +1413,7 @@ _08162B64:
ands r0, r1
cmp r0, 0
bne _08162BB0
- ldr r4, =gUnknown_0831F578
+ ldr r4, =gFacilityClassToPicIndex
ldr r3, =gUnknown_08610970
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
@@ -1436,7 +1436,7 @@ _08162B64:
b _08162BC8
.pool
_08162BB0:
- ldr r5, =gUnknown_0831F578
+ ldr r5, =gFacilityClassToPicIndex
ldr r4, =gUnknown_08610970
bl sub_81864A8
lsls r0, 24
@@ -1467,7 +1467,7 @@ GetFrontierOpponentClass: @ 8162BD8
lsls r0, 1
cmp r4, r0
bne _08162C08
- ldr r1, =gTrainerClassToNameIndex
+ ldr r1, =gFacilityClassToTrainerClass
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldr r2, =0x00000bed
@@ -1499,7 +1499,7 @@ _08162C38:
ldr r0, =0x0000012b
cmp r4, r0
bhi _08162C60
- ldr r2, =gTrainerClassToNameIndex
+ ldr r2, =gFacilityClassToTrainerClass
ldr r0, =gUnknown_0203BC88
ldr r1, [r0]
movs r0, 0x34
@@ -1521,7 +1521,7 @@ _08162C60:
ands r0, r1
cmp r0, 0
beq _08162C90
- ldr r4, =gTrainerClassToNameIndex
+ ldr r4, =gFacilityClassToTrainerClass
bl sub_818649C
lsls r0, 24
lsrs r0, 24
@@ -1530,7 +1530,7 @@ _08162C60:
b _08162D1E
.pool
_08162C90:
- ldr r3, =gTrainerClassToNameIndex
+ ldr r3, =gFacilityClassToTrainerClass
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldr r1, =0xfffffed4
@@ -1553,7 +1553,7 @@ _08162CBC:
ands r0, r1
cmp r0, 0
beq _08162CF4
- ldr r5, =gTrainerClassToNameIndex
+ ldr r5, =gFacilityClassToTrainerClass
ldr r4, =gUnknown_08610970
bl sub_81864A8
lsls r0, 24
@@ -1568,7 +1568,7 @@ _08162CBC:
b _08162D1E
.pool
_08162CF4:
- ldr r4, =gTrainerClassToNameIndex
+ ldr r4, =gFacilityClassToTrainerClass
ldr r3, =gUnknown_08610970
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
@@ -1736,7 +1736,7 @@ _08162E68:
ldr r0, =0x00000c03
cmp r5, r0
bne _08162E88
- ldr r2, =gTrainers + TRAINER_STEVEN * 0x28 + 0x4 @ Steven's name
+ ldr r2, =gTrainers + 804 * 0x28 + 0x4 @ TRAINER_STEVEN name
_08162E70:
adds r0, r6, r4
adds r1, r4, r2
@@ -5354,7 +5354,7 @@ sub_8164E04: @ 8164E04
adds r0, r2
ldrh r1, [r5]
bl sub_8165B88
- ldr r6, =gBattlePartyID
+ ldr r6, =gBattlerPartyIndexes
ldrh r0, [r6, 0x2]
movs r5, 0x64
muls r0, r5
@@ -5845,7 +5845,7 @@ _08165206:
thumb_func_start GetEreaderTrainerFrontSpriteId
GetEreaderTrainerFrontSpriteId: @ 8165244
- ldr r1, =gUnknown_0831F578
+ ldr r1, =gFacilityClassToPicIndex
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldr r2, =0x00000bed
@@ -5859,7 +5859,7 @@ GetEreaderTrainerFrontSpriteId: @ 8165244
thumb_func_start GetEreaderTrainerClassId
GetEreaderTrainerClassId: @ 8165264
- ldr r1, =gTrainerClassToNameIndex
+ ldr r1, =gFacilityClassToTrainerClass
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldr r2, =0x00000bed
@@ -6193,7 +6193,7 @@ _081654DE:
adds r4, r0
adds r0, r4, 0
movs r1, 0x7
- ldr r2, =gTrainers + TRAINER_STEVEN * 0x28 + 0x4 @ Steven's name
+ ldr r2, =gTrainers + 804 * 0x28 + 0x4 @ TRAINER_STEVEN name
bl SetMonData
movs r0, 0
str r0, [sp, 0x44]
diff --git a/asm/berry_tag_screen.s b/asm/berry_tag_screen.s
deleted file mode 100644
index 8a32f5b3a..000000000
--- a/asm/berry_tag_screen.s
+++ /dev/null
@@ -1,1538 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8177C14
-sub_8177C14: @ 8177C14
- push {r4,lr}
- ldr r4, =gUnknown_0203BCF4
- ldr r0, =0x0000180c
- bl AllocZeroed
- str r0, [r4]
- ldr r0, =gSpecialVar_ItemId
- ldrh r0, [r0]
- bl ItemIdToBerryType
- ldr r1, [r4]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xC0
- lsls r2, 5
- adds r1, r2
- strh r0, [r1]
- ldr r0, =sub_8177C84
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177C14
-
- thumb_func_start sub_8177C54
-sub_8177C54: @ 8177C54
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8177C54
-
- thumb_func_start sub_8177C70
-sub_8177C70: @ 8177C70
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8177C70
-
- thumb_func_start sub_8177C84
-sub_8177C84: @ 8177C84
- push {lr}
-_08177C86:
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08177CAA
- bl sub_8177CB0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08177CAA
- bl sub_81221AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08177C86
-_08177CAA:
- pop {r0}
- bx r0
- thumb_func_end sub_8177C84
-
- thumb_func_start sub_8177CB0
-sub_8177CB0: @ 8177CB0
- push {lr}
- sub sp, 0x4
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xF
- bls _08177CC4
- b _08177DF4
-_08177CC4:
- lsls r0, 2
- ldr r1, =_08177CD8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08177CD8:
- .4byte _08177D18
- .4byte _08177D26
- .4byte _08177D2C
- .4byte _08177D40
- .4byte _08177D46
- .4byte _08177D4C
- .4byte _08177D5C
- .4byte _08177D78
- .4byte _08177D84
- .4byte _08177D8A
- .4byte _08177D90
- .4byte _08177D96
- .4byte _08177D9C
- .4byte _08177DA6
- .4byte _08177DB4
- .4byte _08177DC2
-_08177D18:
- bl SetVBlankHBlankCallbacksToNull
- bl ResetVramOamAndBgCntRegs
- bl clear_scheduled_bg_copies_to_vram
- b _08177DDC
-_08177D26:
- bl ScanlineEffect_Stop
- b _08177DDC
-_08177D2C:
- bl ResetPaletteFade
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- b _08177DDA
- .pool
-_08177D40:
- bl ResetSpriteData
- b _08177DDC
-_08177D46:
- bl FreeAllSpritePalettes
- b _08177DDC
-_08177D4C:
- bl sub_81221AC
- lsls r0, 24
- cmp r0, 0
- bne _08177DDC
- bl ResetTasks
- b _08177DDC
-_08177D5C:
- bl sub_8177E14
- ldr r0, =gUnknown_0203BCF4
- ldr r0, [r0]
- ldr r1, =0x00001808
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _08177DDC
- .pool
-_08177D78:
- bl sub_8177E88
- lsls r0, 24
- cmp r0, 0
- beq _08177E0C
- b _08177DDC
-_08177D84:
- bl sub_8178008
- b _08177DDC
-_08177D8A:
- bl sub_8178090
- b _08177DDC
-_08177D90:
- bl sub_81780F4
- b _08177DDC
-_08177D96:
- bl sub_8178338
- b _08177DDC
-_08177D9C:
- bl sub_817839C
- bl sub_8178404
- b _08177DDC
-_08177DA6:
- ldr r0, =sub_8178654
- movs r1, 0
- bl CreateTask
- b _08177DDC
- .pool
-_08177DB4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- b _08177DDC
-_08177DC2:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
-_08177DDA:
- strb r0, [r2, 0x8]
-_08177DDC:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08177E0C
- .pool
-_08177DF4:
- ldr r0, =sub_8177C70
- bl SetVBlankCallback
- ldr r0, =sub_8177C54
- bl SetMainCallback2
- movs r0, 0x1
- b _08177E0E
- .pool
-_08177E0C:
- movs r0, 0
-_08177E0E:
- add sp, 0x4
- pop {r1}
- bx r1
- thumb_func_end sub_8177CB0
-
- thumb_func_start sub_8177E14
-sub_8177E14: @ 8177E14
- push {r4,lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085EFCF0
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203BCF4
- ldr r1, [r4]
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- movs r0, 0x80
- lsls r0, 4
- adds r1, r0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl ResetAllBgsCoordinates
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177E14
-
- thumb_func_start sub_8177E88
-sub_8177E88: @ 8177E88
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, =gUnknown_0203BCF4
- ldr r0, [r1]
- ldr r2, =0x00001808
- adds r0, r2
- ldrh r0, [r0]
- adds r7, r1, 0
- cmp r0, 0x5
- bls _08177E9E
- b _08177FEC
-_08177E9E:
- lsls r0, 2
- ldr r1, =_08177EB4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08177EB4:
- .4byte _08177ECC
- .4byte _08177EF8
- .4byte _08177F1C
- .4byte _08177F3C
- .4byte _08177FA8
- .4byte _08177FC8
-_08177ECC:
- bl reset_temp_tile_data_buffers
- ldr r1, =gUnknown_08D9BB44
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r0, =gUnknown_0203BCF4
- ldr r1, [r0]
- ldr r0, =0x00001808
- adds r1, r0
- b _08177FD6
- .pool
-_08177EF8:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08177F06
- b _08177FFC
-_08177F06:
- ldr r0, =gUnknown_08D9BF98
- ldr r4, =gUnknown_0203BCF4
- ldr r1, [r4]
- bl LZDecompressWram
- ldr r1, [r4]
- b _08177FD2
- .pool
-_08177F1C:
- ldr r0, =gUnknown_08D9C13C
- ldr r1, [r7]
- movs r2, 0x80
- lsls r2, 5
- adds r1, r2
- bl LZDecompressWram
- ldr r1, [r7]
- ldr r0, =0x00001808
- adds r1, r0
- b _08177FD6
- .pool
-_08177F3C:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08177F78
- movs r2, 0
- ldr r6, =gUnknown_0203BCF4
- movs r5, 0x80
- lsls r5, 4
- ldr r4, =0x00004042
- ldr r3, =0x000003ff
-_08177F52:
- ldr r0, [r6]
- lsls r1, r2, 1
- adds r0, r5
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bls _08177F52
- b _08177F98
- .pool
-_08177F78:
- movs r2, 0
- ldr r6, =gUnknown_0203BCF4
- movs r5, 0x80
- lsls r5, 4
- ldr r4, =0x00005042
- ldr r3, =0x000003ff
-_08177F84:
- ldr r0, [r6]
- lsls r1, r2, 1
- adds r0, r5
- adds r0, r1
- strh r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bls _08177F84
-_08177F98:
- ldr r1, [r7]
- b _08177FD2
- .pool
-_08177FA8:
- ldr r0, =gUnknown_08D9BEF0
- movs r1, 0
- movs r2, 0xC0
- bl LoadCompressedPalette
- ldr r0, =gUnknown_0203BCF4
- ldr r1, [r0]
- ldr r0, =0x00001808
- adds r1, r0
- b _08177FD6
- .pool
-_08177FC8:
- ldr r0, =gUnknown_0857FDEC
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0203BCF4
- ldr r1, [r0]
-_08177FD2:
- ldr r2, =0x00001808
- adds r1, r2
-_08177FD6:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08177FFC
- .pool
-_08177FEC:
- ldr r0, =gUnknown_0857FDF4
- bl LoadCompressedObjectPalette
- movs r0, 0x1
- b _08177FFE
- .pool
-_08177FFC:
- movs r0, 0
-_08177FFE:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8177E88
-
- thumb_func_start sub_8178008
-sub_8178008: @ 8178008
- push {r4,lr}
- ldr r0, =gUnknown_085EFD28
- bl InitWindows
- bl DeactivateAllTextPrinters
- ldr r0, =gUnknown_085EFD00
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- movs r4, 0
-_08178020:
- lsls r0, r4, 24
- lsrs r0, 24
- bl PutWindowTilemap
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08178020
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178008
-
- thumb_func_start sub_817804C
-sub_817804C: @ 817804C
- push {r4-r6,lr}
- sub sp, 0x14
- ldr r6, [sp, 0x24]
- ldr r5, [sp, 0x28]
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- ldr r5, =gUnknown_085EFD20
- adds r4, r5
- str r4, [sp, 0x8]
- lsls r6, 24
- asrs r6, 24
- str r6, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r1, 0x1
- bl AddTextPrinterParameterized2
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817804C
-
- thumb_func_start sub_8178090
-sub_8178090: @ 8178090
- push {r4,lr}
- sub sp, 0x8
- movs r0, 0
- bl GetBgTilemapBuffer
- ldr r1, =gUnknown_0203BCF4
- ldr r1, [r1]
- movs r2, 0x80
- lsls r2, 5
- adds r1, r2
- movs r2, 0x80
- lsls r2, 4
- bl memcpy
- movs r0, 0x3
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r4, =gText_BerryTag
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x40
- bl GetStringCenterAlignXOffset
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x3
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_817804C
- movs r0, 0x3
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178090
-
- thumb_func_start sub_81780F4
-sub_81780F4: @ 81780F4
- push {lr}
- bl sub_8178110
- bl sub_8178174
- bl itemid_copy_name
- bl sub_81782D0
- bl sub_8178304
- pop {r0}
- bx r0
- thumb_func_end sub_81780F4
-
- thumb_func_start sub_8178110
-sub_8178110: @ 8178110
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r5, =gUnknown_0203BCF4
- ldr r0, [r5]
- movs r4, 0xC0
- lsls r4, 5
- adds r0, r4
- ldrb r0, [r0]
- bl GetBerryInfo
- adds r6, r0, 0
- ldr r0, =gStringVar1
- ldr r1, [r5]
- adds r1, r4
- ldrh r1, [r1]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, =gStringVar2
- adds r1, r6, 0
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_UnkF908Var1Var2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_817804C
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178110
-
- thumb_func_start sub_8178174
-sub_8178174: @ 8178174
- push {r4-r7,lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203BCF4
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldrb r0, [r0]
- bl GetBerryInfo
- adds r4, r0, 0
- ldr r2, =gText_SizeSlash
- movs r7, 0x1
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r6, 0
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- ldrh r0, [r4, 0x8]
- cmp r0, 0
- beq _08178230
- adds r1, r0, 0
- lsls r0, r1, 5
- subs r0, r1
- lsls r0, 2
- adds r0, r1
- lsls r0, 3
- movs r1, 0xFE
- bl __divsi3
- adds r5, r0, 0
- movs r1, 0xA
- bl __umodsi3
- cmp r0, 0x4
- bls _081781C8
- adds r5, 0xA
-_081781C8:
- adds r0, r5, 0
- movs r1, 0x64
- bl __umodsi3
- movs r1, 0xA
- bl __udivsi3
- adds r4, r0, 0
- adds r0, r5, 0
- movs r1, 0x64
- bl __udivsi3
- adds r5, r0, 0
- ldr r0, =gStringVar1
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, =gStringVar2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r4, =gStringVar4
- ldr r1, =gText_Var1DotVar2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- str r7, [sp]
- str r6, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0x28
- bl PrintTextOnWindow
- b _08178242
- .pool
-_08178230:
- ldr r2, =gText_ThreeMarks
- str r7, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0x28
- bl PrintTextOnWindow
-_08178242:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178174
-
- thumb_func_start itemid_copy_name
-itemid_copy_name: @ 8178250
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203BCF4
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldrb r0, [r0]
- bl GetBerryInfo
- adds r6, r0, 0
- ldr r2, =gText_FirmSlash
- movs r5, 0x11
- str r5, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- beq _081782B0
- ldr r0, =gBerryFirmnessStringPointers
- ldrb r1, [r6, 0x7]
- subs r1, 0x1
- lsls r1, 2
- adds r1, r0
- ldr r2, [r1]
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0x28
- bl PrintTextOnWindow
- b _081782C2
- .pool
-_081782B0:
- ldr r2, =gText_ThreeMarks
- str r5, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0x28
- bl PrintTextOnWindow
-_081782C2:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end itemid_copy_name
-
- thumb_func_start sub_81782D0
-sub_81782D0: @ 81782D0
- push {lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203BCF4
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldrb r0, [r0]
- bl GetBerryInfo
- ldr r2, [r0, 0xC]
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81782D0
-
- thumb_func_start sub_8178304
-sub_8178304: @ 8178304
- push {lr}
- sub sp, 0xC
- ldr r0, =gUnknown_0203BCF4
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldrb r0, [r0]
- bl GetBerryInfo
- ldr r2, [r0, 0x10]
- movs r0, 0x11
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178304
-
- thumb_func_start sub_8178338
-sub_8178338: @ 8178338
- push {r4,lr}
- ldr r4, =gUnknown_0203BCF4
- ldr r0, [r4]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x38
- movs r2, 0x40
- bl sub_80D50D4
- ldr r1, [r4]
- ldr r2, =0x00001802
- adds r1, r2
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178338
-
- thumb_func_start sub_817836C
-sub_817836C: @ 817836C
- push {lr}
- ldr r0, =gUnknown_0203BCF4
- ldr r0, [r0]
- ldr r1, =0x00001802
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySprite
- bl sub_80D510C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817836C
-
- thumb_func_start sub_817839C
-sub_817839C: @ 817839C
- push {r4,lr}
- movs r0, 0x40
- bl sub_80D518C
- ldr r4, =gUnknown_0203BCF4
- ldr r1, [r4]
- ldr r2, =0x00001803
- adds r1, r2
- strb r0, [r1]
- movs r0, 0x68
- bl sub_80D518C
- ldr r1, [r4]
- ldr r2, =0x00001804
- adds r1, r2
- strb r0, [r1]
- movs r0, 0x90
- bl sub_80D518C
- ldr r1, [r4]
- ldr r2, =0x00001805
- adds r1, r2
- strb r0, [r1]
- movs r0, 0xB8
- bl sub_80D518C
- ldr r1, [r4]
- ldr r2, =0x00001806
- adds r1, r2
- strb r0, [r1]
- movs r0, 0xE0
- bl sub_80D518C
- ldr r1, [r4]
- ldr r2, =0x00001807
- adds r1, r2
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817839C
-
- thumb_func_start sub_8178404
-sub_8178404: @ 8178404
- push {r4,r5,lr}
- ldr r4, =gUnknown_0203BCF4
- ldr r0, [r4]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldrb r0, [r0]
- bl GetBerryInfo
- adds r5, r0, 0
- ldrb r0, [r5, 0x15]
- cmp r0, 0
- beq _08178448
- ldr r3, =gSprites
- ldr r0, [r4]
- ldr r1, =0x00001803
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- b _08178462
- .pool
-_08178448:
- ldr r3, =gSprites
- ldr r0, [r4]
- ldr r1, =0x00001803
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
-_08178462:
- strb r1, [r0]
- adds r4, r3, 0
- ldrb r0, [r5, 0x16]
- cmp r0, 0
- beq _0817849C
- ldr r3, =gUnknown_0203BCF4
- ldr r0, [r3]
- ldr r1, =0x00001804
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- b _081784B6
- .pool
-_0817849C:
- ldr r3, =gUnknown_0203BCF4
- ldr r0, [r3]
- ldr r1, =0x00001804
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
-_081784B6:
- strb r1, [r0]
- ldrb r0, [r5, 0x17]
- cmp r0, 0
- beq _081784E8
- ldr r0, [r3]
- ldr r1, =0x00001805
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- b _08178500
- .pool
-_081784E8:
- ldr r0, [r3]
- ldr r1, =0x00001805
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
-_08178500:
- strb r1, [r0]
- ldrb r0, [r5, 0x18]
- cmp r0, 0
- beq _0817852C
- ldr r0, [r3]
- ldr r1, =0x00001806
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- b _08178544
- .pool
-_0817852C:
- ldr r0, [r3]
- ldr r1, =0x00001806
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
-_08178544:
- strb r1, [r0]
- ldrb r0, [r5, 0x19]
- cmp r0, 0
- beq _08178570
- ldr r0, [r3]
- ldr r1, =0x00001807
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- b _08178588
- .pool
-_08178570:
- ldr r0, [r3]
- ldr r1, =0x00001807
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
-_08178588:
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178404
-
- thumb_func_start sub_8178594
-sub_8178594: @ 8178594
- push {r4,lr}
- movs r4, 0
-_08178598:
- ldr r0, =gUnknown_0203BCF4
- ldr r0, [r0]
- ldr r1, =0x00001803
- adds r0, r1
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _08178598
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178594
-
- thumb_func_start sub_81785D0
-sub_81785D0: @ 81785D0
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8178610
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81785D0
-
- thumb_func_start sub_8178610
-sub_8178610: @ 8178610
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08178642
- bl sub_817836C
- bl sub_8178594
- ldr r0, =gUnknown_0203BCF4
- ldr r0, [r0]
- bl Free
- bl FreeAllWindowBuffers
- ldr r0, =bag_menu_mail_related
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08178642:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178610
-
- thumb_func_start sub_8178654
-sub_8178654: @ 8178654
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- adds r4, r2, 0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081786A6
- ldr r3, =gMain
- ldrh r0, [r3, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _08178688
- movs r1, 0x1
- negs r1, r1
- adds r0, r2, 0
- bl sub_81786AC
- b _081786A6
- .pool
-_08178688:
- cmp r1, 0x80
- bne _08178696
- adds r0, r2, 0
- movs r1, 0x1
- bl sub_81786AC
- b _081786A6
-_08178696:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _081786A6
- adds r0, r4, 0
- bl sub_81785D0
-_081786A6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8178654
-
- thumb_func_start sub_81786AC
-sub_81786AC: @ 81786AC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r2, =gTasks + 0x8
- adds r4, r0, r2
- ldr r2, =gUnknown_0203CE58
- ldrh r0, [r2, 0xE]
- ldrh r2, [r2, 0x18]
- adds r0, r2
- lsls r0, 16
- asrs r0, 16
- lsrs r7, r1, 24
- asrs r6, r1, 24
- adds r0, r6
- cmp r0, 0x2D
- bhi _08178718
- lsls r1, r0, 16
- lsrs r1, 16
- movs r0, 0x4
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- cmp r0, 0
- beq _08178718
- cmp r6, 0
- bge _081786F4
- movs r0, 0x2
- b _081786F6
- .pool
-_081786F4:
- movs r0, 0x1
-_081786F6:
- strh r0, [r4, 0x2]
- movs r0, 0
- strh r0, [r4]
- movs r0, 0x5
- bl PlaySE
- lsls r0, r7, 24
- asrs r0, 24
- bl sub_8178728
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81787AC
- str r1, [r0]
-_08178718:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81786AC
-
- thumb_func_start sub_8178728
-sub_8178728: @ 8178728
- push {r4-r6,lr}
- ldr r5, =gUnknown_0203CE70
- adds r6, r5, 0
- subs r6, 0xA
- lsls r0, 24
- asrs r4, r0, 24
- cmp r4, 0
- ble _08178764
- ldrh r0, [r6]
- cmp r0, 0x3
- bls _08178752
- ldrh r1, [r5]
- adds r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- cmp r0, 0
- bne _08178760
-_08178752:
- ldrh r0, [r6]
- adds r0, r4
- strh r0, [r6]
- b _0817877A
- .pool
-_08178760:
- ldrh r0, [r5]
- b _08178776
-_08178764:
- ldrh r1, [r6]
- cmp r1, 0x3
- bhi _08178770
- ldrh r0, [r5]
- cmp r0, 0
- bne _08178776
-_08178770:
- adds r0, r1, r4
- strh r0, [r6]
- b _0817877A
-_08178776:
- adds r0, r4
- strh r0, [r5]
-_0817877A:
- ldrh r1, [r6]
- ldrh r5, [r5]
- adds r1, r5
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x4
- bl BagGetItemIdByPocketPosition
- lsls r0, 16
- lsrs r0, 16
- bl ItemIdToBerryType
- ldr r1, =gUnknown_0203BCF4
- ldr r1, [r1]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0xC0
- lsls r2, 5
- adds r1, r2
- strh r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178728
-
- thumb_func_start sub_81787AC
-sub_81787AC: @ 81787AC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r6, r0, r1
- ldrh r0, [r6]
- adds r0, 0x10
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6]
- movs r1, 0x2
- ldrsh r0, [r6, r1]
- cmp r0, 0x1
- bne _08178828
- movs r2, 0
- ldrsh r0, [r6, r2]
- cmp r0, 0x70
- beq _08178888
- cmp r0, 0x70
- bgt _081787FE
- cmp r0, 0x40
- beq _0817881A
- cmp r0, 0x40
- bgt _081787F4
- cmp r0, 0x30
- beq _08178898
- b _081788A6
- .pool
-_081787F4:
- cmp r0, 0x50
- beq _0817888E
- cmp r0, 0x60
- beq _08178820
- b _081788A6
-_081787FE:
- cmp r0, 0xA0
- beq _08178824
- cmp r0, 0xA0
- bgt _08178810
- cmp r0, 0x80
- beq _08178882
- cmp r0, 0x90
- beq _08178878
- b _081788A6
-_08178810:
- cmp r0, 0xB0
- beq _08178872
- cmp r0, 0xC0
- beq _0817886C
- b _081788A6
-_0817881A:
- bl sub_8178110
- b _081788A6
-_08178820:
- movs r0, 0x1
- b _0817889A
-_08178824:
- movs r0, 0x2
- b _0817889A
-_08178828:
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0x70
- beq _0817887E
- cmp r0, 0x70
- bgt _0817884C
- cmp r0, 0x40
- beq _0817886C
- cmp r0, 0x40
- bgt _08178842
- cmp r0, 0x30
- beq _08178868
- b _081788A6
-_08178842:
- cmp r0, 0x50
- beq _08178872
- cmp r0, 0x60
- beq _08178878
- b _081788A6
-_0817884C:
- cmp r0, 0xA0
- beq _0817888E
- cmp r0, 0xA0
- bgt _0817885E
- cmp r0, 0x80
- beq _08178882
- cmp r0, 0x90
- beq _08178888
- b _081788A6
-_0817885E:
- cmp r0, 0xB0
- beq _08178898
- cmp r0, 0xC0
- beq _081788A2
- b _081788A6
-_08178868:
- movs r0, 0x2
- b _0817889A
-_0817886C:
- bl sub_8178304
- b _081788A6
-_08178872:
- bl sub_81782D0
- b _081788A6
-_08178878:
- bl sub_8178404
- b _081788A6
-_0817887E:
- movs r0, 0x1
- b _0817889A
-_08178882:
- bl itemid_copy_name
- b _081788A6
-_08178888:
- bl sub_8178174
- b _081788A6
-_0817888E:
- bl sub_817836C
- bl sub_8178338
- b _081788A6
-_08178898:
- movs r0, 0
-_0817889A:
- movs r1, 0
- bl FillWindowPixelBuffer
- b _081788A6
-_081788A2:
- bl sub_8178110
-_081788A6:
- movs r2, 0x2
- ldrsh r0, [r6, r2]
- cmp r0, 0x1
- bne _081788B8
- ldrh r0, [r6]
- negs r0, r0
- lsls r0, 16
- lsrs r5, r0, 16
- b _081788BA
-_081788B8:
- ldrh r5, [r6]
-_081788BA:
- ldr r2, =gSprites
- ldr r3, =gUnknown_0203BCF4
- ldr r0, [r3]
- ldr r1, =0x00001802
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x26]
- movs r4, 0
- adds r7, r2, 0
- ldr r2, =0x00001803
-_081788D6:
- ldr r0, [r3]
- adds r0, r2
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r5, [r0, 0x26]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _081788D6
- movs r4, 0x80
- lsls r4, 5
- ldrb r2, [r6, 0x2]
- movs r0, 0x1
- adds r1, r4, 0
- bl ChangeBgY
- ldrb r2, [r6, 0x2]
- movs r0, 0x2
- adds r1, r4, 0
- bl ChangeBgY
- movs r2, 0
- ldrsh r0, [r6, r2]
- cmp r0, 0
- bne _08178922
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8178654
- str r0, [r1]
-_08178922:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81787AC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest.s b/asm/contest.s
index f46c1bee9..8ea0d2d94 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -1048,7 +1048,7 @@ _080D8004:
bl sub_80DC594
bl sub_80DC5E8
bl sub_80DC7EC
- ldr r1, =gBanksByIdentity
+ ldr r1, =gBattlerPositions
strb r4, [r1]
movs r0, 0x1
strb r0, [r1, 0x1]
@@ -1058,12 +1058,12 @@ _080D8004:
strb r2, [r1, 0x3]
ldr r0, =gBattleTypeFlags
str r4, [r0]
- ldr r4, =gBankAttacker
+ ldr r4, =gBattlerAttacker
strb r2, [r4]
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
strb r3, [r0]
bl sub_80DB0C4
- ldr r2, =gBankSpriteIds
+ ldr r2, =gBattlerSpriteIds
ldrb r1, [r4]
adds r1, r2
strb r0, [r1]
@@ -2547,8 +2547,8 @@ _080D8DD0:
lsls r4, 3
adds r4, r0
strh r5, [r4, 0xC]
- ldr r1, =gBankSpriteIds
- ldr r0, =gBankAttacker
+ ldr r1, =gBattlerSpriteIds
+ ldr r0, =gBattlerAttacker
ldrb r0, [r0]
adds r0, r1
strb r5, [r0]
@@ -13796,9 +13796,9 @@ sub_80DEA20: @ 80DEA20
push {lr}
ldr r0, =SpriteCallbackDummy
bl CreateInvisibleSpriteWithCallback
- ldr r1, =gBankSpriteIds
+ ldr r1, =gBattlerSpriteIds
strb r0, [r1, 0x3]
- ldr r0, =gBankTarget
+ ldr r0, =gBattlerTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -13817,7 +13817,7 @@ sub_80DEA20: @ 80DEA20
thumb_func_start sub_80DEA5C
sub_80DEA5C: @ 80DEA5C
push {r4,lr}
- ldr r0, =gBankSpriteIds
+ ldr r0, =gBattlerSpriteIds
ldrb r0, [r0, 0x3]
lsls r4, r0, 4
adds r4, r0
@@ -13829,13 +13829,13 @@ sub_80DEA5C: @ 80DEA5C
strh r0, [r4, 0x26]
movs r0, 0x3
movs r1, 0
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
movs r0, 0x3
movs r1, 0x1
- bl GetBankPosition
+ bl GetBattlerSpriteCoord
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -13905,12 +13905,12 @@ _080DEAD0:
.4byte _080DEB60
.4byte _080DEB60
_080DEB54:
- ldr r1, =gBankTarget
+ ldr r1, =gBattlerTarget
movs r0, 0x2
b _080DEB64
.pool
_080DEB60:
- ldr r1, =gBankTarget
+ ldr r1, =gBattlerTarget
movs r0, 0x3
_080DEB64:
strb r0, [r1]
diff --git a/asm/field_specials.s b/asm/field_specials.s
index 03c0d600a..c1624cd0a 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -5764,7 +5764,7 @@ sub_813ABD4: @ 813ABD4
adds r0, r4, 0
adds r1, r4, 0
adds r2, r5, 0
- bl AddItemIconObject
+ bl AddItemIconSprite
ldr r4, =gUnknown_0203AB6C
strb r0, [r4]
lsls r0, 24
@@ -7156,14 +7156,14 @@ sub_813B7D8: @ 813B7D8
ldr r2, =c2_exit_to_overworld_1_continue_scripts_restart_music
movs r0, 0
movs r1, 0x1
- bl sub_81D6720
+ bl DoRayquazaScene
b _0813B802
.pool
_0813B7F8:
ldr r2, =c2_exit_to_overworld_1_continue_scripts_restart_music
movs r0, 0x1
movs r1, 0
- bl sub_81D6720
+ bl DoRayquazaScene
_0813B802:
pop {r0}
bx r0
diff --git a/asm/intro.s b/asm/intro.s
index 3bfae63da..c1754873c 100644
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -59,7 +59,7 @@ sub_816CC54: @ 816CC54
lsls r0, 24
cmp r0, 0
bne _0816CC66
- ldr r0, =c2_title_screen_1
+ ldr r0, =CB2_InitTitleScreen
bl SetMainCallback2
_0816CC66:
pop {r0}
@@ -337,13 +337,13 @@ _0816CEFA:
.pool
thumb_func_end c2_copyright_1
- thumb_func_start c2_show_copyright_and_intro_again_2
-c2_show_copyright_and_intro_again_2: @ 816CF0C
+ thumb_func_start CB2_InitCopyrightScreenAfterTitleScreen
+CB2_InitCopyrightScreenAfterTitleScreen: @ 816CF0C
push {lr}
bl do_copyright_screen
pop {r0}
bx r0
- thumb_func_end c2_show_copyright_and_intro_again_2
+ thumb_func_end CB2_InitCopyrightScreenAfterTitleScreen
thumb_func_start task_intro_1
@ void task_intro_1(int task_id)
diff --git a/asm/item_icon.s b/asm/item_icon.s
deleted file mode 100644
index e3fe4189a..000000000
--- a/asm/item_icon.s
+++ /dev/null
@@ -1,468 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start AllocItemIconTemporaryBuffers
-@ bool8 AllocItemIconTemporaryBuffers()
-AllocItemIconTemporaryBuffers: @ 81AFDE4
- push {r4,r5,lr}
- ldr r5, =gUnknown_0203CEBC
- movs r0, 0x90
- lsls r0, 1
- bl Alloc
- str r0, [r5]
- cmp r0, 0
- beq _081AFE1A
- ldr r4, =gUnknown_0203CEC0
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- cmp r0, 0
- beq _081AFE14
- movs r0, 0x1
- b _081AFE1C
- .pool
-_081AFE14:
- ldr r0, [r5]
- bl Free
-_081AFE1A:
- movs r0, 0
-_081AFE1C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end AllocItemIconTemporaryBuffers
-
- thumb_func_start FreeItemIconTemporaryBuffers
-@ void FreeItemIconTemporaryBuffers()
-FreeItemIconTemporaryBuffers: @ 81AFE24
- push {lr}
- ldr r0, =gUnknown_0203CEBC
- ldr r0, [r0]
- bl Free
- ldr r0, =gUnknown_0203CEC0
- ldr r0, [r0]
- bl Free
- pop {r0}
- bx r0
- .pool
- thumb_func_end FreeItemIconTemporaryBuffers
-
- thumb_func_start CopyItemIconPicTo4x4Buffer
-@ void CopyItemIconPicTo4x4Buffer(void *src, void *dest)
-CopyItemIconPicTo4x4Buffer: @ 81AFE44
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- movs r4, 0
-_081AFE4C:
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 5
- adds r0, r6, r0
- lsls r1, r4, 7
- adds r1, r5, r1
- movs r2, 0x30
- bl CpuSet
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _081AFE4C
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end CopyItemIconPicTo4x4Buffer
-
- thumb_func_start AddItemIconObject
-@ u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId)
-AddItemIconObject: @ 81AFE70
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- bl AllocItemIconTemporaryBuffers
- lsls r0, 24
- cmp r0, 0
- beq _081AFF28
- adds r0, r5, 0
- movs r1, 0
- bl GetItemIconPicOrPalette
- ldr r4, =gUnknown_0203CEBC
- ldr r1, [r4]
- bl LZDecompressWram
- ldr r0, [r4]
- ldr r4, =gUnknown_0203CEC0
- ldr r1, [r4]
- bl CopyItemIconPicTo4x4Buffer
- ldr r0, [r4]
- str r0, [sp]
- ldr r4, =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r4
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- lsls r2, r7, 16
- ldr r1, =0x0000ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- adds r0, r5, 0
- movs r1, 0x1
- bl GetItemIconPicOrPalette
- str r0, [sp, 0x8]
- add r0, sp, 0x8
- ldr r1, [r0, 0x4]
- ands r1, r4
- orrs r1, r6
- str r1, [r0, 0x4]
- bl LoadCompressedObjectPalette
- movs r0, 0x18
- bl Alloc
- adds r5, r0, 0
- ldr r0, =gUnknown_08614FF4
- adds r1, r5, 0
- movs r2, 0xC
- bl CpuSet
- strh r7, [r5]
- strh r6, [r5, 0x2]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl FreeItemIconTemporaryBuffers
- adds r0, r5, 0
- bl Free
- adds r0, r4, 0
- b _081AFF2A
- .pool
-_081AFF28:
- movs r0, 0x40
-_081AFF2A:
- add sp, 0x10
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end AddItemIconObject
-
- thumb_func_start AddItemIconObjectWithCustomObjectTemplate
-@ u8 AddItemIconObjectWithCustomObjectTemplate(struct objtemplate *objectTemplate, u16 tilesTag, u16 paletteTag, u16 itemId)
-AddItemIconObjectWithCustomObjectTemplate: @ 81AFF34
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- mov r8, r0
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- lsls r3, 16
- lsrs r5, r3, 16
- bl AllocItemIconTemporaryBuffers
- lsls r0, 24
- cmp r0, 0
- beq _081AFFEC
- adds r0, r5, 0
- movs r1, 0
- bl GetItemIconPicOrPalette
- ldr r4, =gUnknown_0203CEBC
- ldr r1, [r4]
- bl LZDecompressWram
- ldr r0, [r4]
- ldr r4, =gUnknown_0203CEC0
- ldr r1, [r4]
- bl CopyItemIconPicTo4x4Buffer
- ldr r0, [r4]
- str r0, [sp]
- ldr r4, =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r4
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- lsls r2, r7, 16
- ldr r1, =0x0000ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- adds r0, r5, 0
- movs r1, 0x1
- bl GetItemIconPicOrPalette
- str r0, [sp, 0x8]
- add r0, sp, 0x8
- ldr r1, [r0, 0x4]
- ands r1, r4
- orrs r1, r6
- str r1, [r0, 0x4]
- bl LoadCompressedObjectPalette
- movs r0, 0x18
- bl Alloc
- adds r5, r0, 0
- mov r0, r8
- adds r1, r5, 0
- movs r2, 0xC
- bl CpuSet
- strh r7, [r5]
- strh r6, [r5, 0x2]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl FreeItemIconTemporaryBuffers
- adds r0, r5, 0
- bl Free
- adds r0, r4, 0
- b _081AFFEE
- .pool
-_081AFFEC:
- movs r0, 0x40
-_081AFFEE:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end AddItemIconObjectWithCustomObjectTemplate
-
- thumb_func_start GetItemIconPicOrPalette
-@ u32 GetItemIconPicOrPalette(u16 itemId, u8 which)
-GetItemIconPicOrPalette: @ 81AFFFC
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 24
- lsrs r1, 24
- ldr r0, =0x0000ffff
- cmp r3, r0
- bne _081B0018
- ldr r3, =0x00000179
- b _081B0022
- .pool
-_081B0018:
- movs r0, 0xBC
- lsls r0, 1
- cmp r3, r0
- bls _081B0022
- movs r3, 0
-_081B0022:
- ldr r2, =gItemIconTable
- lsls r0, r1, 2
- lsls r1, r3, 3
- adds r0, r1
- adds r0, r2
- ldr r0, [r0]
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetItemIconPicOrPalette
-
- thumb_func_start sub_81B0038
-sub_81B0038: @ 81B0038
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp]
- lsls r4, 24
- lsrs r6, r4, 24
- bl reset_brm
- ldr r0, =gUnknown_0203CEC4
- mov r10, r0
- movs r0, 0x8E
- lsls r0, 2
- bl Alloc
- adds r5, r0, 0
- mov r1, r10
- str r5, [r1]
- cmp r5, 0
- bne _081B0088
- ldr r0, [sp, 0x2C]
- bl SetMainCallback2
- b _081B0194
- .pool
-_081B0088:
- ldr r3, =gUnknown_0203CEC8
- movs r1, 0xF
- mov r4, r8
- ands r1, r4
- ldrb r2, [r3, 0x8]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x8]
- ldr r0, [sp, 0x2C]
- str r0, [r3]
- movs r4, 0
- strb r7, [r3, 0xB]
- lsls r2, r6, 2
- ldrh r1, [r5, 0xA]
- movs r0, 0x3
- ands r0, r1
- orrs r0, r2
- strh r0, [r5, 0xA]
- ldr r0, [sp, 0x28]
- str r0, [r5]
- str r4, [r5, 0x4]
- ldrb r1, [r5, 0x8]
- movs r0, 0xF
- negs r0, r0
- ands r0, r1
- strb r0, [r5, 0x8]
- mov r1, r10
- ldr r2, [r1]
- ldrh r0, [r2, 0x8]
- movs r4, 0xFE
- lsls r4, 3
- adds r1, r4, 0
- orrs r0, r1
- strh r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xFE
- lsls r1, 10
- orrs r0, r1
- str r0, [r2, 0x8]
- adds r6, r3, 0
- mov r5, r8
- cmp r5, 0x4
- bne _081B00F0
- ldrb r0, [r2, 0x8]
- movs r1, 0x1
- orrs r0, r1
- b _081B00F8
- .pool
-_081B00F0:
- ldrb r1, [r2, 0x8]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
-_081B00F8:
- strb r0, [r2, 0x8]
- mov r0, r9
- cmp r0, 0xFF
- beq _081B0114
- movs r0, 0x3
- mov r1, r9
- ands r0, r1
- lsls r0, 4
- ldrb r2, [r6, 0x8]
- movs r1, 0x31
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r6, 0x8]
-_081B0114:
- movs r2, 0
- ldr r5, =gUnknown_0203CEC4
- movs r4, 0x86
- lsls r4, 2
- movs r3, 0
-_081B011E:
- ldr r0, [r5]
- lsls r1, r2, 1
- adds r0, r4
- adds r0, r1
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xF
- bls _081B011E
- movs r2, 0
- ldr r4, =gUnknown_0203CEC4
- movs r3, 0xFF
-_081B0138:
- ldr r0, [r4]
- adds r0, 0xC
- adds r0, r2
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x2
- bls _081B0138
- ldr r4, [sp]
- cmp r4, 0
- bne _081B015C
- strb r4, [r6, 0x9]
- b _081B017E
- .pool
-_081B015C:
- adds r1, r6, 0
- movs r0, 0x9
- ldrsb r0, [r1, r0]
- cmp r0, 0x5
- bgt _081B017A
- adds r1, r0, 0
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- bne _081B017E
-_081B017A:
- movs r0, 0
- strb r0, [r6, 0x9]
-_081B017E:
- ldr r2, =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- bl CalculatePlayerPartyCount
- ldr r0, =c2_811EBD0
- bl SetMainCallback2
-_081B0194:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81B0038
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 591b91775..010e83c49 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -4524,7 +4524,7 @@ ItemMenu_CheckTag: @ 81AD378
lsrs r0, 24
ldr r1, =gUnknown_0203CE54
ldr r2, [r1]
- ldr r1, =sub_8177C14
+ ldr r1, =DoBerryTagScreen
str r1, [r2]
bl unknown_ItemMenu_Confirm
pop {r0}
diff --git a/asm/item_menu_icons.s b/asm/item_menu_icons.s
index 1adc0feb7..8068e37c2 100644
--- a/asm/item_menu_icons.s
+++ b/asm/item_menu_icons.s
@@ -348,7 +348,7 @@ AddBagItemIconObject: @ 80D4F38
adds r0, r4, 0
adds r1, r4, 0
adds r2, r6, 0
- bl AddItemIconObject
+ bl AddItemIconSprite
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
@@ -527,8 +527,8 @@ _080D5082:
.pool
thumb_func_end sub_80D5070
- thumb_func_start sub_80D50D4
-sub_80D50D4: @ 80D50D4
+ thumb_func_start CreateBerryTagSprite
+CreateBerryTagSprite: @ 80D50D4
push {r4,r5,lr}
adds r4, r1, 0
adds r5, r2, 0
@@ -554,17 +554,17 @@ sub_80D50D4: @ 80D50D4
pop {r1}
bx r1
.pool
- thumb_func_end sub_80D50D4
+ thumb_func_end CreateBerryTagSprite
- thumb_func_start sub_80D510C
-sub_80D510C: @ 80D510C
+ thumb_func_start FreeBerryTagSpritePalette
+FreeBerryTagSpritePalette: @ 80D510C
push {lr}
ldr r0, =0x00007544
bl FreeSpritePaletteByTag
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D510C
+ thumb_func_end FreeBerryTagSpritePalette
thumb_func_start sub_80D511C
sub_80D511C: @ 80D511C
@@ -617,8 +617,8 @@ _080D5172:
.pool
thumb_func_end sub_80D511C
- thumb_func_start sub_80D518C
-sub_80D518C: @ 80D518C
+ thumb_func_start CreateBerryFlavorCircleSprite
+CreateBerryFlavorCircleSprite: @ 80D518C
push {lr}
adds r1, r0, 0
ldr r0, =gUnknown_0857FE10
@@ -632,6 +632,6 @@ sub_80D518C: @ 80D518C
pop {r1}
bx r1
.pool
- thumb_func_end sub_80D518C
+ thumb_func_end CreateBerryFlavorCircleSprite
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc
index a16b59366..083107c08 100644
--- a/asm/macros/battle_script.inc
+++ b/asm/macros/battle_script.inc
@@ -1373,11 +1373,11 @@
.endm
.macro jumpifmove move, jumpptr
- jumpifhalfword EQUAL, gCurrentMove, \move, \jumpptr
+ jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr
.endm
.macro jumpifnotmove move, jumpptr
- jumpifhalfword NOT_EQUAL, gCurrentMove, \move, \jumpptr
+ jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr
.endm
.macro jumpifstatus3 bank, status, jumpptr
@@ -1389,13 +1389,13 @@
.endm
.macro jumpifmovehadnoeffect jumpptr
- jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, \jumpptr
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr
.endm
.macro jumpifbattletype flags, jumpptr
- jumpifword COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
+ jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
.endm
.macro jumpifnotbattletype flags, jumpptr
- jumpifword NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
+ jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
.endm
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 08e0c3103..9c6cd1253 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -1608,7 +1608,7 @@ _08030578:
ldr r0, =gUnknown_02022D06
strh r4, [r0]
bl FreeAllWindowBuffers
- ldr r0, =c2_title_screen_1
+ ldr r0, =CB2_InitTitleScreen
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s
index 49a502d5c..af4764d76 100644
--- a/asm/mauville_old_man.s
+++ b/asm/mauville_old_man.s
@@ -800,7 +800,7 @@ sub_8120708: @ 8120708
adds r5, r0, 0
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
movs r4, 0x1
str r4, [sp]
str r4, [sp, 0x4]
diff --git a/asm/menu.s b/asm/menu.s
deleted file mode 100644
index cbea45c75..000000000
--- a/asm/menu.s
+++ /dev/null
@@ -1,5505 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start AddTextPrinterWithCallbackForMessage
-@ void AddTextPrinterWithCallbackForMessage(u8 allowSkippingDelayWithButtonPress, void ( *callback)(u16, struct TextPrinter *))
-AddTextPrinterWithCallbackForMessage: @ 8197A9C
- push {r4,r5,lr}
- sub sp, 0x10
- adds r5, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gTextFlags
- movs r4, 0x1
- ands r0, r4
- ldrb r2, [r3]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
- bl GetPlayerTextSpeed
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r2, =gStringVar4
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- bl AddTextPrinterParameterized
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AddTextPrinterWithCallbackForMessage
-
- thumb_func_start sub_8197AE8
-sub_8197AE8: @ 8197AE8
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- cmp r4, 0x1
- bne _08197B12
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_08197B12:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8197AE8
-
- thumb_func_start sub_8197B1C
-sub_8197B1C: @ 8197B1C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203CD9C
- strh r2, [r0]
- ldr r0, =gUnknown_0203CD9E
- strb r3, [r0]
- ldr r1, =sub_8197BB4
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _08197B52
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08197B52:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197B1C
-
- thumb_func_start sub_8197B64
-sub_8197B64: @ 8197B64
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203CD9C
- strh r2, [r0]
- ldr r5, =gUnknown_0203CD9E
- adds r0, r6, 0
- movs r1, 0x5
- bl GetWindowAttribute
- strb r0, [r5]
- ldr r1, =sub_8197BB4
- adds r0, r6, 0
- bl CallWindowFunction
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _08197BA2
- adds r0, r6, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08197BA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197B64
-
- thumb_func_start sub_8197BB4
-sub_8197BB4: @ 8197BB4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- mov r8, r0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r2, [sp, 0x44]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, r1, 24
- lsls r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r1, r2, 24
- lsrs r1, 24
- str r1, [sp, 0x10]
- ldr r2, =gUnknown_0203CD9C
- ldrh r1, [r2]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- lsrs r3, r0, 24
- str r3, [sp, 0xC]
- movs r3, 0xFE
- lsls r3, 24
- adds r2, r0, r3
- lsrs r2, 24
- str r2, [sp, 0x14]
- lsrs r0, r5, 24
- mov r9, r0
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- ldr r3, =gUnknown_0203CD9E
- mov r10, r3
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r0, =gUnknown_0203CD9C
- ldrh r1, [r0]
- adds r1, 0x3
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- subs r0, 0x1
- lsls r2, r0, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, =gUnknown_0203CD9C
- ldrh r1, [r3]
- adds r1, 0x4
- lsls r1, 16
- lsrs r1, 16
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x1C]
- str r0, [sp]
- str r4, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, =gUnknown_0203CD9C
- ldrh r1, [r3]
- adds r1, 0x5
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- adds r7, r0, r6
- subs r0, r7, 0x1
- lsls r2, r0, 24
- lsrs r2, 24
- str r2, [sp, 0x20]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0x20]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, =gUnknown_0203CD9C
- ldrh r1, [r3]
- adds r1, 0x6
- lsls r1, 16
- lsrs r1, 16
- lsls r2, r7, 24
- lsrs r7, r2, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, =gUnknown_0203CD9C
- ldrh r1, [r3]
- adds r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- movs r5, 0x5
- str r5, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0x14]
- mov r3, r9
- bl FillBgTilemapBufferRect
- ldr r3, =gUnknown_0203CD9C
- ldrh r1, [r3]
- adds r1, 0x9
- lsls r1, 16
- lsrs r1, 16
- adds r6, 0x1
- lsls r6, 24
- lsrs r6, 24
- str r6, [sp]
- str r5, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0x18]
- mov r3, r9
- bl FillBgTilemapBufferRect
- ldr r3, =gUnknown_0203CD9C
- ldrh r1, [r3]
- adds r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r5, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- adds r2, r7, 0
- mov r3, r9
- bl FillBgTilemapBufferRect
- ldr r3, =0x00000801
- adds r1, r3, 0
- ldr r0, =gUnknown_0203CD9C
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x10]
- add r9, r2
- mov r3, r9
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0x14]
- bl FillBgTilemapBufferRect
- ldr r3, =0x00000803
- adds r1, r3, 0
- ldr r0, =gUnknown_0203CD9C
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r10
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0x18]
- mov r3, r9
- bl FillBgTilemapBufferRect
- ldr r3, =0x00000804
- adds r1, r3, 0
- ldr r0, =gUnknown_0203CD9C
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x1C]
- str r2, [sp]
- str r4, [sp, 0x4]
- mov r3, r10
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0xC]
- mov r3, r9
- bl FillBgTilemapBufferRect
- ldr r0, =0x00000805
- adds r1, r0, 0
- ldr r2, =gUnknown_0203CD9C
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r10
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- mov r0, r8
- ldr r2, [sp, 0x20]
- mov r3, r9
- bl FillBgTilemapBufferRect
- ldr r0, =0x00000806
- adds r1, r0, 0
- ldr r2, =gUnknown_0203CD9C
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r10
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- mov r0, r8
- adds r2, r7, 0
- mov r3, r9
- bl FillBgTilemapBufferRect
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197BB4
-
- thumb_func_start sub_8197DF8
-sub_8197DF8: @ 8197DF8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =sub_8197E30
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _08197E26
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08197E26:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197DF8
-
- thumb_func_start sub_8197E30
-sub_8197E30: @ 8197E30
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFD
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0xC0
- lsls r2, 19
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8197E30
-
- thumb_func_start SetWindowBorderStyle
-@ void SetWindowBorderStyle(u8 windowId, bool copyToVram, s16 tileStart, s8 palette)
-SetWindowBorderStyle: @ 8197E80
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203CD9C
- strh r2, [r0]
- ldr r0, =gUnknown_0203CD9E
- strb r3, [r0]
- ldr r1, =DrawWindowBorder
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _08197EB6
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08197EB6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetWindowBorderStyle
-
- thumb_func_start sub_8197EC8
-sub_8197EC8: @ 8197EC8
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203CD9C
- strh r2, [r0]
- ldr r5, =gUnknown_0203CD9E
- adds r0, r6, 0
- movs r1, 0x5
- bl GetWindowAttribute
- strb r0, [r5]
- ldr r1, =DrawWindowBorder
- adds r0, r6, 0
- bl CallWindowFunction
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _08197F06
- adds r0, r6, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08197F06:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197EC8
-
- thumb_func_start DrawWindowBorder
-DrawWindowBorder: @ 8197F18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- mov r9, r0
- adds r6, r1, 0
- adds r4, r2, 0
- ldr r0, [sp, 0x38]
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r6, 24
- lsls r4, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- ldr r2, =gUnknown_0203CD9C
- ldrh r1, [r2]
- lsrs r0, r6, 24
- str r0, [sp, 0xC]
- movs r2, 0xFF
- lsls r2, 24
- adds r6, r2
- lsrs r6, 24
- lsrs r0, r4, 24
- mov r8, r0
- adds r4, r2
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- ldr r7, =gUnknown_0203CD9E
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r2, =gUnknown_0203CD9C
- ldrh r1, [r2]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r2, =gUnknown_0203CD9C
- ldrh r1, [r2]
- adds r1, 0x2
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r0, r2
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r0, =gUnknown_0203CD9C
- ldrh r1, [r0]
- adds r1, 0x3
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r0, =gUnknown_0203CD9C
- ldrh r1, [r0]
- adds r1, 0x5
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r0, =gUnknown_0203CD9C
- ldrh r1, [r0]
- adds r1, 0x6
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x14]
- add r8, r2
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r2, =gUnknown_0203CD9C
- ldrh r1, [r2]
- adds r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- ldr r2, [sp, 0xC]
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r2, =gUnknown_0203CD9C
- ldrh r1, [r2]
- adds r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- mov r3, r8
- bl FillBgTilemapBufferRect
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DrawWindowBorder
-
- thumb_func_start sub_8198070
-sub_8198070: @ 8198070
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =sub_81980A8
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _0819809E
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0819809E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8198070
-
- thumb_func_start sub_81980A8
-sub_81980A8: @ 81980A8
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 18
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81980A8
-
- thumb_func_start sub_81980F0
-sub_81980F0: @ 81980F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r4, [sp, 0x20]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r5, r3, 24
- lsls r4, 16
- lsrs r4, 16
- mov r0, sp
- movs r1, 0
- movs r2, 0x8
- bl memset
- cmp r6, 0x3
- bls _08198126
- movs r1, 0
- mov r0, sp
- strb r1, [r0]
- b _0819812A
-_08198126:
- mov r0, sp
- strb r6, [r0]
-_0819812A:
- mov r1, sp
- mov r0, r8
- strb r0, [r1, 0x2]
- movs r0, 0x2
- strb r0, [r1, 0x4]
- movs r0, 0x1E
- subs r0, r7
- strb r0, [r1, 0x1]
- strb r7, [r1, 0x3]
- strb r5, [r1, 0x5]
- strh r4, [r1, 0x6]
- ldr r4, =gUnknown_0203CDA0
- mov r0, sp
- bl AddWindow
- strb r0, [r4]
- cmp r5, 0xF
- bls _08198158
- movs r5, 0xF0
- b _0819815C
- .pool
-_08198158:
- lsls r0, r5, 28
- lsrs r5, r0, 24
-_0819815C:
- ldr r0, =gUnknown_0860F0B0
- adds r1, r5, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_0203CDA0
- ldrb r0, [r0]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81980F0
-
- thumb_func_start sub_8198180
-sub_8198180: @ 8198180
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r6, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r5, =gUnknown_0203CDA0
- ldrb r0, [r5]
- cmp r0, 0xFF
- beq _081981EE
- bl PutWindowTilemap
- ldrb r0, [r5]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0
- adds r1, r6, 0
- movs r2, 0
- bl GetStringWidth
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetWindowAttribute
- movs r2, 0xEC
- subs r2, r7
- lsls r0, 3
- subs r2, r0
- subs r2, r4
- lsls r2, 24
- lsrs r2, 24
- ldrb r0, [r5]
- ldr r1, =gUnknown_0860F0D0
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r3, 0x1
- bl box_print
- mov r0, r8
- cmp r0, 0
- beq _081981EE
- ldrb r0, [r5]
- movs r1, 0x3
- bl CopyWindowToVram
-_081981EE:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8198180
-
- thumb_func_start sub_8198204
-sub_8198204: @ 8198204
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- mov r10, r0
- adds r6, r1, 0
- ldr r0, [sp, 0x38]
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r4, 0
- ldr r0, =gUnknown_0203CDA0
- ldrb r1, [r0]
- adds r7, r0, 0
- cmp r1, 0xFF
- beq _081982C8
- cmp r2, 0
- beq _08198244
- add r0, sp, 0x14
- strb r4, [r0]
- adds r1, r0, 0
- b _0819824A
- .pool
-_08198244:
- add r1, sp, 0x14
- movs r0, 0xF
- strb r0, [r1]
-_0819824A:
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- adds r5, r7, 0
- ldrb r0, [r5]
- bl PutWindowTilemap
- ldrb r0, [r5]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- cmp r6, 0
- beq _0819829E
- movs r0, 0
- adds r1, r6, 0
- movs r2, 0
- bl GetStringWidth
- lsls r0, 16
- lsrs r4, r0, 16
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetWindowAttribute
- movs r2, 0xEC
- mov r1, r8
- subs r2, r1
- lsls r0, 3
- subs r2, r0
- subs r2, r4
- lsls r2, 24
- lsrs r2, 24
- ldrb r0, [r5]
- add r1, sp, 0x14
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r3, 0x1
- bl box_print
-_0819829E:
- ldrb r0, [r7]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- add r2, sp, 0x14
- str r2, [sp, 0x8]
- str r1, [sp, 0xC]
- mov r1, r10
- str r1, [sp, 0x10]
- movs r1, 0x1
- movs r2, 0x4
- movs r3, 0x1
- bl AddTextPrinterParameterized2
- mov r2, r9
- cmp r2, 0
- beq _081982C8
- ldrb r0, [r7]
- movs r1, 0x3
- bl CopyWindowToVram
-_081982C8:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8198204
-
- thumb_func_start sub_81982D8
-sub_81982D8: @ 81982D8
- push {lr}
- ldr r1, =gUnknown_0203CDA0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _081982E8
- movs r1, 0x3
- bl CopyWindowToVram
-_081982E8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81982D8
-
- thumb_func_start sub_81982F0
-sub_81982F0: @ 81982F0
- push {r4,lr}
- ldr r4, =gUnknown_0203CDA0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _08198308
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
-_08198308:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81982F0
-
- thumb_func_start sub_8198314
-sub_8198314: @ 8198314
- push {r4,lr}
- ldr r4, =gUnknown_0203CDA0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0819833C
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_0819833C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8198314
-
- thumb_func_start sub_8198348
-sub_8198348: @ 8198348
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, [sp, 0x18]
- mov r8, r4
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- ldr r6, [sp, 0x24]
- mov r12, r6
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r7, r5, 24
- ldr r5, =gUnknown_0203CD90
- movs r6, 0
- strb r2, [r5]
- strb r3, [r5, 0x1]
- strb r6, [r5, 0x3]
- subs r4, 0x1
- strb r4, [r5, 0x4]
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x6]
- mov r0, r8
- strb r0, [r5, 0x8]
- mov r4, r12
- strb r4, [r5, 0xB]
- cmp r7, 0
- blt _08198388
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r7, r0
- ble _08198390
-_08198388:
- strb r6, [r5, 0x2]
- b _08198392
- .pool
-_08198390:
- strb r7, [r5, 0x2]
-_08198392:
- movs r0, 0
- bl MoveMenuCursor
- ldr r0, =gUnknown_0203CD90
- ldrb r0, [r0, 0x2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8198348
-
- thumb_func_start sub_81983AC
-sub_81983AC: @ 81983AC
- push {r4-r6,lr}
- sub sp, 0x10
- ldr r4, [sp, 0x20]
- ldr r5, [sp, 0x24]
- ldr r6, [sp, 0x28]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r4, 0
- str r4, [sp, 0xC]
- bl sub_8198348
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81983AC
-
- thumb_func_start sub_81983EC
-sub_81983EC: @ 81983EC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x14
- mov r8, r0
- adds r6, r1, 0
- ldr r4, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0x1
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- mov r0, r8
- adds r1, r6, 0
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- bl sub_81983AC
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81983EC
-
- thumb_func_start RedrawMenuCursor
-@ void RedrawMenuCursor(s8 oldPos, s8 newPos)
-RedrawMenuCursor: @ 8198448
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- adds r6, r0, 0
- mov r8, r1
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r5, =gUnknown_0203CD90
- ldrb r0, [r5, 0x6]
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5, 0x6]
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r5, 0x5]
- mov r9, r1
- ldrb r2, [r5]
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r6
- ldrb r6, [r5, 0x1]
- adds r3, r6
- lsls r3, 16
- lsrs r3, 16
- str r4, [sp]
- str r0, [sp, 0x4]
- mov r0, r9
- movs r1, 0x11
- bl FillWindowPixelRect
- ldrb r0, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- ldr r2, =gText_SelectorArrow3
- ldrb r3, [r5]
- ldrb r4, [r5, 0x8]
- mov r6, r8
- muls r6, r4
- adds r4, r6, 0
- ldrb r5, [r5, 0x1]
- adds r4, r5
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- bl PrintTextOnWindow
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end RedrawMenuCursor
-
- thumb_func_start MoveMenuCursor
-@ s8 MoveMenuCursor(s8 cursorDelta)
-MoveMenuCursor: @ 81984D8
- push {r4,r5,lr}
- ldr r1, =gUnknown_0203CD90
- ldrb r5, [r1, 0x2]
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _081984FC
- ldrb r0, [r4, 0x4]
- b _0819850A
- .pool
-_081984FC:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _08198508
- ldrb r0, [r4, 0x3]
- b _0819850A
-_08198508:
- adds r0, r3, r5
-_0819850A:
- strb r0, [r4, 0x2]
- ldrb r1, [r4, 0x2]
- adds r0, r5, 0
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursor
-
- thumb_func_start MoveMenuCursorNoWrapAround
-@ s8 MoveMenuCursorNoWrapAround(s8 cursorDelta)
-MoveMenuCursorNoWrapAround: @ 819851C
- push {r4,r5,lr}
- ldr r1, =gUnknown_0203CD90
- ldrb r5, [r1, 0x2]
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _08198540
- ldrb r0, [r4, 0x3]
- b _0819854E
- .pool
-_08198540:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _0819854C
- ldrb r0, [r4, 0x4]
- b _0819854E
-_0819854C:
- adds r0, r3, r5
-_0819854E:
- strb r0, [r4, 0x2]
- ldrb r1, [r4, 0x2]
- adds r0, r5, 0
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursorNoWrapAround
-
- thumb_func_start GetMenuCursorPos
-GetMenuCursorPos: @ 8198560
- ldr r0, =gUnknown_0203CD90
- ldrb r0, [r0, 0x2]
- bx lr
- .pool
- thumb_func_end GetMenuCursorPos
-
- thumb_func_start ProcessMenuInput
-ProcessMenuInput: @ 819856C
- push {r4,lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08198598
- ldr r4, =gUnknown_0203CD90
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _08198588
- movs r0, 0x5
- bl PlaySE
-_08198588:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _081985D2
- .pool
-_08198598:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081985A6
- movs r0, 0x1
- negs r0, r0
- b _081985D2
-_081985A6:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081985BA
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _081985CA
-_081985BA:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081985CE
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_081985CA:
- bl MoveMenuCursor
-_081985CE:
- movs r0, 0x2
- negs r0, r0
-_081985D2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput
-
- thumb_func_start ProcessMenuInputNoWrapAround
-@ int ProcessMenuInputNoWrapAround()
-ProcessMenuInputNoWrapAround: @ 81985D8
- push {r4-r6,lr}
- ldr r4, =gUnknown_0203CD90
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08198608
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _081985F8
- movs r0, 0x5
- bl PlaySE
-_081985F8:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _08198650
- .pool
-_08198608:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08198616
- movs r0, 0x1
- negs r0, r0
- b _08198650
-_08198616:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08198630
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _0819864C
- b _08198646
-_08198630:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0819864C
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0819864C
-_08198646:
- movs r0, 0x5
- bl PlaySE
-_0819864C:
- movs r0, 0x2
- negs r0, r0
-_08198650:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrapAround
-
- thumb_func_start ProcessMenuInput_other
-ProcessMenuInput_other: @ 8198658
- push {r4,lr}
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08198684
- ldr r4, =gUnknown_0203CD90
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _08198674
- movs r0, 0x5
- bl PlaySE
-_08198674:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _081986BC
- .pool
-_08198684:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08198692
- movs r0, 0x1
- negs r0, r0
- b _081986BC
-_08198692:
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _081986A8
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _081986B4
-_081986A8:
- cmp r1, 0x80
- bne _081986B8
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_081986B4:
- bl MoveMenuCursor
-_081986B8:
- movs r0, 0x2
- negs r0, r0
-_081986BC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput_other
-
- thumb_func_start ProcessMenuInputNoWrapAround_other
-ProcessMenuInputNoWrapAround_other: @ 81986C4
- push {r4-r6,lr}
- ldr r4, =gUnknown_0203CD90
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081986F4
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _081986E4
- movs r0, 0x5
- bl PlaySE
-_081986E4:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0819873A
- .pool
-_081986F4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08198702
- movs r0, 0x1
- negs r0, r0
- b _0819873A
-_08198702:
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _0819871E
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _08198736
- b _08198730
-_0819871E:
- cmp r1, 0x80
- bne _08198736
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _08198736
-_08198730:
- movs r0, 0x5
- bl PlaySE
-_08198736:
- movs r0, 0x2
- negs r0, r0
-_0819873A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrapAround_other
-
- thumb_func_start PrintTextArray
-PrintTextArray: @ 8198740
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 24
- lsrs r7, r4, 24
- lsls r5, 24
- lsrs r5, 24
- movs r4, 0
- cmp r4, r5
- bcs _081987A4
-_08198774:
- lsls r0, r4, 3
- ldr r1, [sp, 0x34]
- adds r0, r1
- ldr r2, [r0]
- adds r0, r7, 0
- muls r0, r4
- add r0, r8
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- mov r1, r10
- mov r3, r9
- bl PrintTextOnWindow
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08198774
-_081987A4:
- adds r0, r6, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PrintTextArray
-
- thumb_func_start sub_81987BC
-sub_81987BC: @ 81987BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- ldr r6, [sp, 0x4C]
- ldr r7, [sp, 0x50]
- mov r8, r7
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x14]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r9, r6
- mov r0, r8
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _0819883C
-_08198804:
- lsls r0, r4, 3
- ldr r1, [sp, 0x48]
- adds r0, r1
- ldr r2, [r0]
- mov r0, r10
- muls r0, r4
- ldr r1, [sp, 0x1C]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r0, r7, 0
- ldr r1, [sp, 0x14]
- ldr r3, [sp, 0x18]
- bl sub_8199F74
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _08198804
-_0819883C:
- adds r0, r7, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81987BC
-
- thumb_func_start sub_8198854
-sub_8198854: @ 8198854
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- mov r8, r0
- adds r6, r1, 0
- adds r4, r2, 0
- adds r5, r3, 0
- ldr r7, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r7, [sp, 0x8]
- mov r0, r8
- adds r1, r6, 0
- movs r3, 0x1
- bl PrintTextArray
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8198854
-
- thumb_func_start AddItemMenuActionTextPrinters
-AddItemMenuActionTextPrinters: @ 81988A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r6, r1, 0
- mov r8, r2
- ldr r1, [sp, 0x38]
- mov r9, r1
- ldr r1, [sp, 0x3C]
- ldr r2, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- lsls r6, 24
- lsrs r6, 24
- mov r4, r8
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r7, r2, 24
- mov r0, sp
- ldrb r1, [r0, 0x10]
- strb r1, [r0, 0x4]
- strb r6, [r0, 0x5]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- mov r3, sp
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- mov r0, sp
- mov r2, r9
- strb r2, [r0, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xB]
- mov r0, sp
- mov r4, r8
- strb r4, [r0, 0x6]
- strb r4, [r0, 0x8]
- movs r4, 0
- cmp r4, r7
- bcs _0819899E
- mov r5, sp
-_0819896E:
- ldr r1, [sp, 0x48]
- adds r0, r1, r4
- ldrb r0, [r0]
- lsls r0, 3
- ldr r2, [sp, 0x44]
- adds r0, r2
- ldr r0, [r0]
- str r0, [sp]
- mov r0, r10
- muls r0, r4
- ldr r1, [sp, 0x14]
- adds r0, r1, r0
- strb r0, [r5, 0x7]
- strb r0, [r5, 0x9]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r7
- bcc _0819896E
-_0819899E:
- ldr r0, [sp, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end AddItemMenuActionTextPrinters
-
- thumb_func_start sub_81989B8
-sub_81989B8: @ 81989B8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r0
- adds r4, r1, 0
- adds r6, r2, 0
- mov r8, r3
- ldr r7, [sp, 0x30]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetFontAttribute
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r4, 0
- movs r1, 0x2
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r6, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- str r7, [sp, 0xC]
- ldr r0, [sp, 0x34]
- str r0, [sp, 0x10]
- mov r0, r9
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x1
- bl AddItemMenuActionTextPrinters
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81989B8
-
- thumb_func_start SetWindowTemplateFields
-@ void SetWindowTemplateFields(WindowTemplate *template, char bg_id, char x, char y, char w, char h, char a7, s16 a8)
-SetWindowTemplateFields: @ 8198A24
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, [sp, 0x18]
- ldr r5, [sp, 0x1C]
- ldr r6, [sp, 0x20]
- ldr r7, [sp, 0x24]
- mov r8, r7
- strb r1, [r0]
- strb r2, [r0, 0x1]
- strb r3, [r0, 0x2]
- strb r4, [r0, 0x3]
- strb r5, [r0, 0x4]
- strb r6, [r0, 0x5]
- mov r1, r8
- strh r1, [r0, 0x6]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end SetWindowTemplateFields
-
- thumb_func_start sub_8198A50
-sub_8198A50: @ 8198A50
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x18
- mov r8, r0
- ldr r0, [sp, 0x2C]
- ldr r4, [sp, 0x30]
- ldr r5, [sp, 0x34]
- ldr r6, [sp, 0x38]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- add r0, sp, 0x10
- bl SetWindowTemplateFields
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- mov r2, r8
- str r0, [r2]
- str r1, [r2, 0x4]
- mov r0, r8
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r2}
- bx r2
- thumb_func_end sub_8198A50
-
- thumb_func_start sub_8198AA4
-sub_8198AA4: @ 8198AA4
- push {r4-r6,lr}
- sub sp, 0x18
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r0, [sp, 0x28]
- ldr r1, [sp, 0x2C]
- ldr r2, [sp, 0x30]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- str r3, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- add r0, sp, 0x10
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl SetWindowTemplateFields
- add r0, sp, 0x10
- bl AddWindow
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x18
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8198AA4
-
- thumb_func_start sub_8198AF8
-sub_8198AF8: @ 8198AF8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- adds r6, r1, 0
- mov r8, r2
- mov r9, r3
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- ldr r1, [sp, 0x44]
- mov r10, r1
- lsls r6, 24
- lsrs r6, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- mov r1, r10
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r7, =gUnknown_0203CD9F
- bl AddWindow
- strb r0, [r7]
- ldrb r0, [r7]
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r5, 0
- bl SetWindowBorderStyle
- ldr r0, =gText_YesNo
- str r0, [sp, 0xC]
- add r1, sp, 0xC
- ldrb r0, [r7]
- strb r0, [r1, 0x4]
- adds r0, r1, 0
- strb r6, [r0, 0x5]
- adds r0, r6, 0
- movs r1, 0
- bl GetFontAttribute
- add r1, sp, 0xC
- add r0, r8
- strb r0, [r1, 0x6]
- adds r0, r1, 0
- mov r1, r9
- strb r1, [r0, 0x7]
- adds r1, r0, 0
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- adds r0, r1, 0
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- add r3, sp, 0xC
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- add r3, sp, 0xC
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- add r3, sp, 0xC
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x4
- bl GetFontAttribute
- add r1, sp, 0xC
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- adds r0, r6, 0
- movs r1, 0x2
- bl GetFontAttribute
- add r1, sp, 0xC
- strb r0, [r1, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetFontAttribute
- add r1, sp, 0xC
- strb r0, [r1, 0xB]
- adds r0, r1, 0
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r6, 0
- movs r1, 0x1
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7]
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- mov r0, r10
- str r0, [sp, 0x8]
- adds r0, r1, 0
- adds r1, r6, 0
- mov r2, r8
- mov r3, r9
- bl sub_81983AC
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8198AF8
-
- thumb_func_start sub_8198C34
-sub_8198C34: @ 8198C34
- push {lr}
- sub sp, 0xC
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r3, 24
- str r2, [sp]
- str r3, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r3, 0x1
- bl sub_8198AF8
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_8198C34
-
- thumb_func_start ProcessMenuInputNoWrap_
-ProcessMenuInputNoWrap_: @ 8198C58
- push {r4,lr}
- bl ProcessMenuInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _08198C6E
- bl sub_8198C78
-_08198C6E:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrap_
-
- thumb_func_start sub_8198C78
-sub_8198C78: @ 8198C78
- push {r4,lr}
- ldr r4, =gUnknown_0203CD9F
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8198070
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8198C78
-
- thumb_func_start sub_8198C94
-sub_8198C94: @ 8198C94
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- ldr r6, [sp, 0x48]
- ldr r7, [sp, 0x4C]
- mov r8, r7
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0xC]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x18]
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x1C]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r5, 0
- cmp r5, r9
- bcs _08198D3A
-_08198CE0:
- movs r4, 0
- adds r1, r5, 0x1
- mov r8, r1
- cmp r4, r6
- bcs _08198D30
- ldr r7, [sp, 0x1C]
- adds r0, r7, 0
- muls r0, r5
- ldr r1, [sp, 0x14]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r7, r0, 24
-_08198CF8:
- adds r0, r5, 0
- muls r0, r6
- adds r0, r4
- lsls r0, 3
- ldr r1, [sp, 0x50]
- adds r0, r1
- ldr r2, [r0]
- ldr r0, [sp, 0x18]
- adds r3, r0, 0
- muls r3, r4
- ldr r1, [sp, 0x10]
- adds r3, r1, r3
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r10
- ldr r1, [sp, 0xC]
- bl PrintTextOnWindow
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08198CF8
-_08198D30:
- mov r7, r8
- lsls r0, r7, 24
- lsrs r5, r0, 24
- cmp r5, r9
- bcc _08198CE0
-_08198D3A:
- mov r0, r10
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8198C94
-
- thumb_func_start sub_8198D54
-sub_8198D54: @ 8198D54
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- mov r9, r0
- mov r8, r1
- adds r4, r2, 0
- adds r5, r3, 0
- ldr r6, [sp, 0x34]
- ldr r3, [sp, 0x38]
- ldr r7, [sp, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0
- str r3, [sp, 0x14]
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- ldr r3, [sp, 0x14]
- str r3, [sp, 0xC]
- str r7, [sp, 0x10]
- mov r0, r9
- mov r1, r8
- movs r3, 0
- bl sub_8198C94
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8198D54
-
- thumb_func_start sub_8198DBC
-sub_8198DBC: @ 8198DBC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- ldr r6, [sp, 0x48]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x14]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x18]
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x1C]
- lsls r5, 24
- lsrs r5, 24
- mov r8, r5
- lsls r6, 24
- lsrs r6, 24
- mov r10, r6
- mov r0, sp
- ldrb r1, [r0, 0x10]
- strb r1, [r0, 0x4]
- strb r7, [r0, 0x5]
- adds r0, r7, 0
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r7, 0
- movs r1, 0x6
- bl GetFontAttribute
- mov r3, sp
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r7, 0
- movs r1, 0x7
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r7, 0
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- adds r0, r7, 0
- movs r1, 0x2
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xA]
- adds r0, r7, 0
- movs r1, 0x3
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xB]
- movs r6, 0
- cmp r6, r10
- bcs _08198EDE
-_08198E7A:
- movs r5, 0
- adds r2, r6, 0x1
- mov r9, r2
- cmp r5, r8
- bcs _08198ED4
- mov r4, sp
-_08198E86:
- mov r0, r8
- muls r0, r6
- adds r0, r5
- ldr r1, [sp, 0x50]
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, 3
- ldr r2, [sp, 0x4C]
- adds r0, r2
- ldr r0, [r0]
- str r0, [sp]
- ldr r1, [sp, 0x1C]
- adds r0, r1, 0
- muls r0, r5
- ldr r2, [sp, 0x14]
- adds r0, r2, r0
- strb r0, [r4, 0x6]
- adds r0, r7, 0
- movs r1, 0x1
- bl GetFontAttribute
- adds r1, r6, 0
- muls r1, r0
- ldr r0, [sp, 0x18]
- adds r1, r0, r1
- strb r1, [r4, 0x7]
- ldrb r0, [r4, 0x6]
- strb r0, [r4, 0x8]
- strb r1, [r4, 0x9]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r8
- bcc _08198E86
-_08198ED4:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r6, r0, 24
- cmp r6, r10
- bcc _08198E7A
-_08198EDE:
- ldr r0, [sp, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8198DBC
-
- thumb_func_start sub_8198EF8
-sub_8198EF8: @ 8198EF8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- mov r8, r0
- adds r3, r1, 0
- adds r4, r2, 0
- ldr r5, [sp, 0x30]
- ldr r6, [sp, 0x34]
- ldr r7, [sp, 0x38]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- adds r0, r3, 0
- movs r1, 0
- str r3, [sp, 0x14]
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- str r7, [sp, 0xC]
- ldr r0, [sp, 0x3C]
- str r0, [sp, 0x10]
- mov r0, r8
- ldr r3, [sp, 0x14]
- adds r1, r3, 0
- movs r3, 0
- bl sub_8198DBC
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8198EF8
-
- thumb_func_start sub_8198F58
-sub_8198F58: @ 8198F58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, [sp, 0x20]
- mov r12, r4
- ldr r4, [sp, 0x24]
- mov r8, r4
- ldr r4, [sp, 0x28]
- mov r9, r4
- ldr r4, [sp, 0x2C]
- mov r10, r4
- ldr r4, [sp, 0x30]
- ldr r5, [sp, 0x34]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r7, r5, 24
- ldr r5, =gUnknown_0203CD90
- movs r6, 0
- strb r2, [r5]
- strb r3, [r5, 0x1]
- strb r6, [r5, 0x3]
- subs r4, 0x1
- strb r4, [r5, 0x4]
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x6]
- mov r0, r12
- strb r0, [r5, 0x7]
- mov r4, r8
- strb r4, [r5, 0x8]
- mov r0, r9
- strb r0, [r5, 0x9]
- mov r4, r10
- strb r4, [r5, 0xA]
- cmp r7, 0
- blt _08198FAC
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r7, r0
- ble _08198FB4
-_08198FAC:
- strb r6, [r5, 0x2]
- b _08198FB6
- .pool
-_08198FB4:
- strb r7, [r5, 0x2]
-_08198FB6:
- movs r0, 0
- movs r1, 0
- bl sub_8199134
- ldr r0, =gUnknown_0203CD90
- ldrb r0, [r0, 0x2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8198F58
-
- thumb_func_start sub_8198FD4
-sub_8198FD4: @ 8198FD4
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x20
- mov r9, r0
- mov r8, r1
- mov r10, r2
- ldr r6, [sp, 0x3C]
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- ldr r2, [sp, 0x48]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r3, 24
- lsrs r3, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r2, 24
- lsrs r2, 24
- mov r0, r8
- movs r1, 0x1
- str r2, [sp, 0x18]
- str r3, [sp, 0x1C]
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- muls r1, r5
- lsls r1, 24
- lsrs r1, 24
- str r6, [sp]
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- str r5, [sp, 0xC]
- str r1, [sp, 0x10]
- ldr r2, [sp, 0x18]
- str r2, [sp, 0x14]
- mov r0, r9
- mov r1, r8
- mov r2, r10
- ldr r3, [sp, 0x1C]
- bl sub_8198F58
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8198FD4
-
- thumb_func_start sub_8199060
-sub_8199060: @ 8199060
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, r1, 24
- lsrs r7, r0, 24
- ldr r5, =gUnknown_0203CD90
- ldrb r0, [r5, 0x6]
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- mov r9, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldrb r0, [r5, 0x6]
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldrb r0, [r5, 0x9]
- mov r10, r0
- mov r0, r8
- mov r1, r10
- bl __umodsi3
- ldrb r1, [r5, 0x7]
- adds r4, r1, 0
- muls r4, r0
- ldrb r1, [r5]
- adds r4, r1
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- mov r1, r10
- bl __udivsi3
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r0
- ldrb r0, [r5, 0x1]
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r5, 0x5]
- mov r1, r9
- str r1, [sp]
- str r6, [sp, 0x4]
- movs r1, 0x11
- adds r2, r4, 0
- bl FillWindowPixelRect
- ldrb r6, [r5, 0x9]
- adds r0, r7, 0
- adds r1, r6, 0
- bl __umodsi3
- ldrb r1, [r5, 0x7]
- adds r4, r1, 0
- muls r4, r0
- ldrb r0, [r5]
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- adds r1, r6, 0
- bl __udivsi3
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r0
- ldrb r1, [r5, 0x1]
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- ldr r2, =gText_SelectorArrow3
- str r3, [sp]
- movs r3, 0
- str r3, [sp, 0x4]
- str r3, [sp, 0x8]
- adds r3, r4, 0
- bl PrintTextOnWindow
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8199060
-
- thumb_func_start sub_8199134
-sub_8199134: @ 8199134
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r1, =gUnknown_0203CD90
- ldrb r2, [r1, 0x2]
- mov r8, r2
- lsls r0, 24
- asrs r6, r0, 24
- adds r5, r1, 0
- cmp r6, 0
- beq _0819918A
- movs r7, 0x2
- ldrsb r7, [r5, r7]
- ldrb r4, [r5, 0x9]
- adds r0, r7, 0
- adds r1, r4, 0
- bl __modsi3
- adds r0, r6
- cmp r0, 0
- bge _08199174
- adds r0, r4, 0
- adds r0, 0xFF
- add r0, r8
- b _08199188
- .pool
-_08199174:
- cmp r0, r4
- blt _08199184
- adds r0, r7, 0
- adds r1, r4, 0
- bl __divsi3
- muls r0, r4
- b _08199188
-_08199184:
- mov r1, r8
- adds r0, r6, r1
-_08199188:
- strb r0, [r5, 0x2]
-_0819918A:
- mov r2, r9
- lsls r0, r2, 24
- asrs r6, r0, 24
- cmp r6, 0
- beq _081991CE
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r4, [r5, 0x9]
- adds r1, r4, 0
- bl __divsi3
- adds r1, r0, r6
- cmp r1, 0
- bge _081991B2
- ldrb r0, [r5, 0xA]
- subs r0, 0x1
- muls r0, r4
- ldrb r1, [r5, 0x2]
- adds r0, r1
- b _081991CC
-_081991B2:
- ldrb r0, [r5, 0xA]
- cmp r1, r0
- blt _081991C4
- subs r0, 0x1
- adds r1, r4, 0
- muls r1, r0
- ldrb r0, [r5, 0x2]
- subs r0, r1
- b _081991CC
-_081991C4:
- adds r0, r4, 0
- muls r0, r6
- ldrb r2, [r5, 0x2]
- adds r0, r2
-_081991CC:
- strb r0, [r5, 0x2]
-_081991CE:
- movs r1, 0x2
- ldrsb r1, [r5, r1]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- bgt _081991E4
- ldrb r1, [r5, 0x2]
- mov r0, r8
- bl sub_8199060
- b _081991E8
-_081991E4:
- mov r0, r8
- strb r0, [r5, 0x2]
-_081991E8:
- ldrb r0, [r5, 0x2]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8199134
-
- thumb_func_start sub_81991F8
-sub_81991F8: @ 81991F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- ldr r1, =gUnknown_0203CD90
- ldrb r7, [r1, 0x2]
- lsls r0, 24
- asrs r4, r0, 24
- adds r5, r1, 0
- cmp r4, 0
- beq _0819922C
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r6, [r5, 0x9]
- adds r1, r6, 0
- bl __modsi3
- adds r0, r4
- cmp r0, 0
- blt _0819922C
- cmp r0, r6
- bge _0819922C
- adds r0, r4, r7
- strb r0, [r5, 0x2]
-_0819922C:
- mov r1, r8
- lsls r0, r1, 24
- asrs r4, r0, 24
- cmp r4, 0
- beq _08199258
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r6, [r5, 0x9]
- adds r1, r6, 0
- bl __divsi3
- adds r0, r4
- cmp r0, 0
- blt _08199258
- ldrb r1, [r5, 0xA]
- cmp r0, r1
- bge _08199258
- adds r0, r6, 0
- muls r0, r4
- ldrb r1, [r5, 0x2]
- adds r0, r1
- strb r0, [r5, 0x2]
-_08199258:
- movs r1, 0x2
- ldrsb r1, [r5, r1]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- bgt _08199274
- ldrb r1, [r5, 0x2]
- adds r0, r7, 0
- bl sub_8199060
- b _08199276
- .pool
-_08199274:
- strb r7, [r5, 0x2]
-_08199276:
- ldrb r0, [r5, 0x2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81991F8
-
- thumb_func_start sub_8199284
-sub_8199284: @ 8199284
- push {r4,lr}
- ldr r4, =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081992AC
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CD90
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _0819932C
- .pool
-_081992AC:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081992BA
- movs r0, 0x1
- negs r0, r0
- b _0819932C
-_081992BA:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081992D0
- movs r0, 0x5
- bl PlaySE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08199324
-_081992D0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081992E4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- b _08199324
-_081992E4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081992F8
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08199304
-_081992F8:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _08199322
-_08199304:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0819931A
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08199328
-_0819931A:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_08199322:
- movs r1, 0
-_08199324:
- bl sub_8199134
-_08199328:
- movs r0, 0x2
- negs r0, r0
-_0819932C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8199284
-
- thumb_func_start sub_8199334
-sub_8199334: @ 8199334
- push {r4-r6,lr}
- ldr r5, =gUnknown_0203CD90
- ldrb r4, [r5, 0x2]
- ldr r6, =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0819935C
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- b _081993D2
- .pool
-_0819935C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0819936A
- movs r0, 0x1
- negs r0, r0
- b _081993D2
-_0819936A:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0819937A
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _081993BC
-_0819937A:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08199388
- movs r0, 0
- movs r1, 0x1
- b _081993BC
-_08199388:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0819939C
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081993A2
-_0819939C:
- movs r0, 0x1
- negs r0, r0
- b _081993BA
-_081993A2:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081993B8
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081993CE
-_081993B8:
- movs r0, 0x1
-_081993BA:
- movs r1, 0
-_081993BC:
- bl sub_81991F8
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _081993CE
- movs r0, 0x5
- bl PlaySE
-_081993CE:
- movs r0, 0x2
- negs r0, r0
-_081993D2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8199334
-
- thumb_func_start sub_81993D8
-sub_81993D8: @ 81993D8
- push {r4,r5,lr}
- ldr r4, =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08199400
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203CD90
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _0819947C
- .pool
-_08199400:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0819940E
- movs r0, 0x1
- negs r0, r0
- b _0819947C
-_0819940E:
- ldrh r0, [r4, 0x30]
- movs r5, 0xF0
- adds r1, r5, 0
- ands r1, r0
- cmp r1, 0x40
- bne _08199428
- movs r0, 0x5
- bl PlaySE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08199474
-_08199428:
- cmp r1, 0x80
- bne _08199438
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- b _08199474
-_08199438:
- cmp r1, 0x20
- beq _08199448
- bl sub_812210C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08199454
-_08199448:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _08199472
-_08199454:
- ldrh r1, [r4, 0x30]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0x10
- beq _0819946A
- bl sub_812210C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08199478
-_0819946A:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_08199472:
- movs r1, 0
-_08199474:
- bl sub_8199134
-_08199478:
- movs r0, 0x2
- negs r0, r0
-_0819947C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81993D8
-
- thumb_func_start sub_8199484
-sub_8199484: @ 8199484
- push {r4-r6,lr}
- ldr r6, =gUnknown_0203CD90
- ldrb r4, [r6, 0x2]
- ldr r5, =gMain
- ldrh r1, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081994AC
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- ldrsb r0, [r6, r0]
- b _0819951E
- .pool
-_081994AC:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081994BA
- movs r0, 0x1
- negs r0, r0
- b _0819951E
-_081994BA:
- ldrh r0, [r5, 0x30]
- movs r6, 0xF0
- adds r1, r6, 0
- ands r1, r0
- cmp r1, 0x40
- bne _081994CE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08199508
-_081994CE:
- cmp r1, 0x80
- bne _081994D8
- movs r0, 0
- movs r1, 0x1
- b _08199508
-_081994D8:
- cmp r1, 0x20
- beq _081994E8
- bl sub_812210C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081994EE
-_081994E8:
- movs r0, 0x1
- negs r0, r0
- b _08199506
-_081994EE:
- ldrh r1, [r5, 0x30]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0x10
- beq _08199504
- bl sub_812210C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0819951A
-_08199504:
- movs r0, 0x1
-_08199506:
- movs r1, 0
-_08199508:
- bl sub_81991F8
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _0819951A
- movs r0, 0x5
- bl PlaySE
-_0819951A:
- movs r0, 0x2
- negs r0, r0
-_0819951E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8199484
-
- thumb_func_start InitMenuInUpperLeftCorner
-@ int InitMenuInUpperLeftCorner(s8 windowId, s8 numItems, u8 initialCursorPos, bool doNotPlaySoundWhenAPressed)
-InitMenuInUpperLeftCorner: @ 8199524
- push {r4-r6,lr}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- ldr r4, =gUnknown_0203CD90
- movs r6, 0
- strb r6, [r4]
- movs r2, 0x1
- strb r2, [r4, 0x1]
- strb r6, [r4, 0x3]
- subs r1, 0x1
- strb r1, [r4, 0x4]
- strb r0, [r4, 0x5]
- strb r2, [r4, 0x6]
- movs r0, 0x10
- strb r0, [r4, 0x8]
- strb r3, [r4, 0xB]
- cmp r5, 0
- blt _08199554
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r5, r0
- ble _0819955C
-_08199554:
- strb r6, [r4, 0x2]
- b _0819955E
- .pool
-_0819955C:
- strb r5, [r4, 0x2]
-_0819955E:
- movs r0, 0
- bl MoveMenuCursor
- lsls r0, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end InitMenuInUpperLeftCorner
-
- thumb_func_start InitMenuInUpperLeftCornerPlaySoundWhenAPressed
-InitMenuInUpperLeftCornerPlaySoundWhenAPressed: @ 8199570
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0
- bl InitMenuInUpperLeftCorner
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end InitMenuInUpperLeftCornerPlaySoundWhenAPressed
-
- thumb_func_start PrintMenuTable
-PrintMenuTable: @ 819958C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- movs r5, 0
- cmp r5, r7
- bcs _081995D0
- movs r6, 0x80
- lsls r6, 17
- adds r4, r2, 0
-_081995AA:
- ldr r2, [r4]
- lsrs r0, r6, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r8
- movs r1, 0x1
- movs r3, 0x8
- bl PrintTextOnWindow
- movs r0, 0x80
- lsls r0, 21
- adds r6, r0
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, r7
- bcc _081995AA
-_081995D0:
- mov r0, r8
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PrintMenuTable
-
- thumb_func_start sub_81995E4
-sub_81995E4: @ 81995E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r9, r2
- mov r8, r3
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- mov r0, sp
- movs r1, 0
- mov r10, r1
- strb r6, [r0, 0x4]
- mov r1, sp
- movs r0, 0x1
- strb r0, [r1, 0x5]
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- movs r0, 0x1
- movs r1, 0x6
- bl GetFontAttribute
- mov r3, sp
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- movs r0, 0x1
- movs r1, 0x7
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- movs r0, 0x1
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- mov r0, sp
- mov r1, r10
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- movs r1, 0x8
- strb r1, [r0, 0x6]
- strb r1, [r0, 0x8]
- movs r4, 0
- cmp r4, r7
- bcs _081996A6
- mov r5, sp
-_0819967C:
- mov r1, r8
- adds r0, r1, r4
- ldrb r0, [r0]
- lsls r0, 3
- add r0, r9
- ldr r0, [r0]
- str r0, [sp]
- lsls r0, r4, 4
- adds r0, 0x1
- strb r0, [r5, 0x7]
- strb r0, [r5, 0x9]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r7
- bcc _0819967C
-_081996A6:
- adds r0, r6, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81995E4
-
- thumb_func_start CreateYesNoMenu
-@ void CreateYesNoMenu(struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos)
-CreateYesNoMenu: @ 81996C0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r1, =gUnknown_0203CD9F
- mov r8, r1
- bl AddWindow
- mov r2, r8
- strb r0, [r2]
- ldrb r0, [r2]
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r5, 0
- bl SetWindowBorderStyle
- ldr r0, =gText_YesNo
- str r0, [sp]
- mov r1, sp
- mov r2, r8
- ldrb r0, [r2]
- movs r2, 0
- mov r9, r2
- strb r0, [r1, 0x4]
- mov r0, sp
- movs r2, 0x1
- strb r2, [r0, 0x5]
- movs r0, 0x8
- strb r0, [r1, 0x6]
- mov r0, sp
- strb r2, [r0, 0x7]
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- movs r0, 0x1
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- movs r0, 0x1
- movs r1, 0x6
- bl GetFontAttribute
- mov r3, sp
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- movs r0, 0x1
- movs r1, 0x7
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- movs r0, 0x1
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- mov r0, sp
- mov r1, r9
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x2
- adds r2, r6, 0
- bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end CreateYesNoMenu
-
- thumb_func_start sub_81997AC
-sub_81997AC: @ 81997AC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0xC]
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- movs r7, 0
- cmp r7, r3
- bcs _08199824
-_081997D4:
- movs r4, 0
- adds r0, r7, 0x1
- mov r9, r0
- cmp r4, r6
- bcs _0819981C
- lsls r0, r7, 4
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0x80
- lsls r5, 20
-_081997EC:
- adds r0, r7, 0
- muls r0, r6
- adds r0, r4
- lsls r0, 3
- ldr r1, [sp, 0x34]
- adds r0, r1
- ldr r2, [r0]
- lsrs r3, r5, 24
- mov r0, r8
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r10
- movs r1, 0x1
- bl PrintTextOnWindow
- ldr r1, [sp, 0xC]
- lsls r0, r1, 24
- adds r5, r0
- adds r4, 0x1
- cmp r4, r6
- bcc _081997EC
-_0819981C:
- mov r7, r9
- ldr r4, [sp, 0x10]
- cmp r7, r4
- bcc _081997D4
-_08199824:
- mov r0, r10
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81997AC
-
- thumb_func_start sub_819983C
-sub_819983C: @ 819983C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x14]
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- mov r0, sp
- movs r6, 0
- ldrb r1, [r0, 0x10]
- strb r1, [r0, 0x4]
- mov r1, sp
- movs r0, 0x1
- strb r0, [r1, 0x5]
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- movs r0, 0x1
- movs r1, 0x6
- bl GetFontAttribute
- mov r3, sp
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- movs r0, 0x1
- movs r1, 0x7
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- movs r0, 0x1
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- mov r0, sp
- strb r6, [r0, 0xA]
- strb r6, [r0, 0xB]
- movs r7, 0
- cmp r7, r10
- bcs _0819992A
-_081998D6:
- movs r5, 0
- adds r2, r7, 0x1
- mov r9, r2
- cmp r5, r8
- bcs _08199920
- mov r4, sp
- lsls r0, r7, 4
- adds r6, r0, 0x1
-_081998E6:
- mov r0, r8
- muls r0, r7
- adds r0, r5
- ldr r1, [sp, 0x3C]
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, 3
- ldr r2, [sp, 0x38]
- adds r0, r2
- ldr r0, [r0]
- str r0, [sp]
- ldr r1, [sp, 0x14]
- adds r0, r1, 0
- muls r0, r5
- adds r0, 0x8
- strb r0, [r4, 0x6]
- strb r6, [r4, 0x7]
- strb r0, [r4, 0x8]
- strb r6, [r4, 0x9]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r8
- bcc _081998E6
-_08199920:
- mov r2, r9
- lsls r0, r2, 24
- lsrs r7, r0, 24
- cmp r7, r10
- bcc _081998D6
-_0819992A:
- ldr r0, [sp, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_819983C
-
- thumb_func_start sub_8199944
-sub_8199944: @ 8199944
- push {r4-r7,lr}
- ldr r4, [sp, 0x14]
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r7, r4, 24
- ldr r6, =gUnknown_0203CD90
- movs r4, 0
- mov r12, r4
- mov r4, r12
- strb r4, [r6]
- movs r5, 0x1
- strb r5, [r6, 0x1]
- strb r4, [r6, 0x3]
- adds r4, r2, 0
- muls r4, r3
- subs r4, 0x1
- strb r4, [r6, 0x4]
- strb r0, [r6, 0x5]
- strb r5, [r6, 0x6]
- strb r1, [r6, 0x7]
- movs r0, 0x10
- strb r0, [r6, 0x8]
- strb r2, [r6, 0x9]
- strb r3, [r6, 0xA]
- cmp r7, 0
- blt _08199986
- movs r0, 0x4
- ldrsb r0, [r6, r0]
- cmp r7, r0
- ble _08199990
-_08199986:
- mov r0, r12
- strb r0, [r6, 0x2]
- b _08199992
- .pool
-_08199990:
- strb r7, [r6, 0x2]
-_08199992:
- movs r0, 0
- movs r1, 0
- bl sub_8199134
- ldr r0, =gUnknown_0203CD90
- ldrb r0, [r0, 0x2]
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8199944
-
- thumb_func_start clear_scheduled_bg_copies_to_vram
-@ void clear_scheduled_bg_copies_to_vram()
-clear_scheduled_bg_copies_to_vram: @ 81999A8
- push {lr}
- ldr r0, =gUnknown_0203CDA4
- movs r1, 0
- movs r2, 0x4
- bl memset
- pop {r0}
- bx r0
- .pool
- thumb_func_end clear_scheduled_bg_copies_to_vram
-
- thumb_func_start schedule_bg_copy_tilemap_to_vram
-@ void schedule_bg_copy_tilemap_to_vram(u8 bg_id)
-schedule_bg_copy_tilemap_to_vram: @ 81999BC
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203CDA4
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- bx lr
- .pool
- thumb_func_end schedule_bg_copy_tilemap_to_vram
-
- thumb_func_start do_scheduled_bg_tilemap_copies_to_vram
-@ void do_scheduled_bg_tilemap_copies_to_vram()
-do_scheduled_bg_tilemap_copies_to_vram: @ 81999D0
- push {r4,lr}
- ldr r4, =gUnknown_0203CDA4
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _081999E4
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- strb r0, [r4]
-_081999E4:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x1
- bne _081999F4
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- strb r0, [r4, 0x1]
-_081999F4:
- ldrb r0, [r4, 0x2]
- cmp r0, 0x1
- bne _08199A04
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- strb r0, [r4, 0x2]
-_08199A04:
- ldrb r0, [r4, 0x3]
- cmp r0, 0x1
- bne _08199A14
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- strb r0, [r4, 0x3]
-_08199A14:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end do_scheduled_bg_tilemap_copies_to_vram
-
- thumb_func_start reset_temp_tile_data_buffers
-@ void reset_temp_tile_data_buffers()
-reset_temp_tile_data_buffers: @ 8199A20
- push {lr}
- ldr r3, =gUnknown_0203CDA8
- ldr r1, =gUnknown_0203CDAC
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0x7C
-_08199A2C:
- str r2, [r0]
- subs r0, 0x4
- cmp r0, r1
- bge _08199A2C
- movs r0, 0
- strh r0, [r3]
- pop {r0}
- bx r0
- .pool
- thumb_func_end reset_temp_tile_data_buffers
-
- thumb_func_start free_temp_tile_data_buffers_if_possible
-free_temp_tile_data_buffers_if_possible: @ 8199A44
- push {r4-r6,lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08199A88
- ldr r1, =gUnknown_0203CDA8
- ldrh r0, [r1]
- cmp r0, 0
- beq _08199A7C
- movs r4, 0
- ldrh r1, [r1]
- cmp r4, r1
- bge _08199A76
- ldr r5, =gUnknown_0203CDAC
- movs r6, 0
-_08199A64:
- ldr r0, [r5]
- bl Free
- stm r5!, {r6}
- adds r4, 0x1
- ldr r0, =gUnknown_0203CDA8
- ldrh r0, [r0]
- cmp r4, r0
- blt _08199A64
-_08199A76:
- ldr r1, =gUnknown_0203CDA8
- movs r0, 0
- strh r0, [r1]
-_08199A7C:
- movs r0, 0
- b _08199A8A
- .pool
-_08199A88:
- movs r0, 0x1
-_08199A8A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end free_temp_tile_data_buffers_if_possible
-
- thumb_func_start decompress_and_copy_tile_data_to_vram
-@ int decompress_and_copy_tile_data_to_vram(u8 bg_id, int src, int size, u16 offset, u8 mode)
-decompress_and_copy_tile_data_to_vram: @ 8199A90
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r6, =gUnknown_0203CDA8
- ldrh r0, [r6]
- cmp r0, 0x1F
- bhi _08199AF8
- adds r0, r4, 0
- add r1, sp, 0x4
- bl malloc_and_decompress
- adds r4, r0, 0
- cmp r5, 0
- bne _08199AC8
- ldr r5, [sp, 0x4]
-_08199AC8:
- cmp r4, 0
- beq _08199AEC
- lsls r2, r5, 16
- lsrs r2, 16
- str r7, [sp]
- mov r0, r8
- adds r1, r4, 0
- mov r3, r9
- bl copy_decompressed_tile_data_to_vram
- ldr r2, =gUnknown_0203CDAC
- ldrh r0, [r6]
- adds r1, r0, 0x1
- strh r1, [r6]
- lsls r0, 16
- lsrs r0, 14
- adds r0, r2
- str r4, [r0]
-_08199AEC:
- adds r0, r4, 0
- b _08199AFA
- .pool
-_08199AF8:
- movs r0, 0
-_08199AFA:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end decompress_and_copy_tile_data_to_vram
-
- thumb_func_start copy_decompressed_tile_data_to_vram_autofree
-@ void copy_decompressed_tile_data_to_vram_autofree(u8 bg_id, int src, u16 size, u16 offset, u8 mode)
-copy_decompressed_tile_data_to_vram_autofree: @ 8199B08
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r5, r2, 0
- ldr r2, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- lsls r2, 24
- lsrs r7, r2, 24
- adds r0, r1, 0
- add r1, sp, 0x4
- bl malloc_and_decompress
- adds r6, r0, 0
- cmp r5, 0
- bne _08199B36
- ldr r5, [sp, 0x4]
-_08199B36:
- cmp r6, 0
- beq _08199B6E
- ldr r0, =task_free_buf_after_copying_tile_data_to_vram
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, r5, 16
- lsrs r2, 16
- str r7, [sp]
- mov r0, r8
- adds r1, r6, 0
- mov r3, r9
- bl copy_decompressed_tile_data_to_vram
- ldr r2, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r6, 0
- bl SetWordTaskArg
-_08199B6E:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end copy_decompressed_tile_data_to_vram_autofree
-
- thumb_func_start task_free_buf_after_copying_tile_data_to_vram
-@ void task_free_buf_after_copying_tile_data_to_vram(int task_id)
-task_free_buf_after_copying_tile_data_to_vram: @ 8199B84
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- bl CheckForSpaceForDma3Request
- lsls r0, 16
- cmp r0, 0
- bne _08199BB4
- adds r0, r4, 0
- movs r1, 0x1
- bl GetWordTaskArg
- bl Free
- adds r0, r4, 0
- bl DestroyTask
-_08199BB4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_free_buf_after_copying_tile_data_to_vram
-
- thumb_func_start malloc_and_decompress
-@ void *malloc_and_decompress(void *src, int *size)
-malloc_and_decompress: @ 8199BC0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrb r0, [r5, 0x1]
- strb r0, [r1]
- ldrb r0, [r5, 0x2]
- strb r0, [r1, 0x1]
- ldrb r0, [r5, 0x3]
- strb r0, [r1, 0x2]
- movs r0, 0
- strb r0, [r1, 0x3]
- ldr r0, [r1]
- bl Alloc
- adds r4, r0, 0
- cmp r4, 0
- beq _08199BE8
- adds r0, r5, 0
- adds r1, r4, 0
- bl LZ77UnCompWram
-_08199BE8:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end malloc_and_decompress
-
- thumb_func_start copy_decompressed_tile_data_to_vram
-@ s16 copy_decompressed_tile_data_to_vram(u8 bg_id, int src, u16 size, u16 offset, u8 mode)
-copy_decompressed_tile_data_to_vram: @ 8199BF0
- push {r4,lr}
- adds r4, r1, 0
- ldr r1, [sp, 0x8]
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _08199C18
- cmp r1, 0x1
- beq _08199C20
- ldr r0, =0x0000ffff
- b _08199C2A
- .pool
-_08199C18:
- adds r1, r4, 0
- bl LoadBgTiles
- b _08199C26
-_08199C20:
- adds r1, r4, 0
- bl LoadBgTilemap
-_08199C26:
- lsls r0, 16
- lsrs r0, 16
-_08199C2A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end copy_decompressed_tile_data_to_vram
-
- thumb_func_start sub_8199C30
-sub_8199C30: @ 8199C30
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r5, r2, 0
- ldr r4, [sp, 0x28]
- ldr r2, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- lsls r5, 24
- lsrs r5, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x4]
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- bl GetBgTilemapBuffer
- mov r8, r0
- adds r0, r5, r4
- cmp r5, r0
- bge _08199CA8
- mov r9, r0
-_08199C6E:
- ldr r3, [sp]
- ldr r1, [sp, 0x4]
- adds r0, r3, r1
- adds r7, r5, 0x1
- cmp r3, r0
- bge _08199CA0
- lsls r6, r5, 5
- ldr r1, =0x00000fff
- mov r12, r1
- mov r1, r10
- lsls r5, r1, 12
- adds r4, r0, 0
-_08199C86:
- adds r1, r6, r3
- lsls r1, 1
- add r1, r8
- ldrh r2, [r1]
- mov r0, r12
- ands r0, r2
- orrs r0, r5
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r4
- blt _08199C86
-_08199CA0:
- lsls r0, r7, 24
- lsrs r5, r0, 24
- cmp r5, r9
- blt _08199C6E
-_08199CA8:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8199C30
-
- thumb_func_start sub_8199CBC
-sub_8199CBC: @ 8199CBC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r1
- ldr r1, [sp, 0x24]
- ldr r4, [sp, 0x28]
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp]
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- bl GetBgTilemapBuffer
- adds r7, r0, 0
- movs r0, 0
- cmp r0, r8
- bcs _08199D2A
-_08199CF4:
- movs r2, 0
- adds r6, r0, 0x1
- cmp r2, r5
- bcs _08199D22
- adds r4, r0, 0
- muls r4, r5
- ldr r1, [sp]
- adds r0, r1
- lsls r3, r0, 5
-_08199D06:
- adds r1, r4, r2
- lsls r1, 1
- add r1, r10
- adds r0, r3, r2
- add r0, r9
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r5
- bcc _08199D06
-_08199D22:
- lsls r0, r6, 24
- lsrs r0, 24
- cmp r0, r8
- bcc _08199CF4
-_08199D2A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8199CBC
-
- thumb_func_start sub_8199D3C
-sub_8199D3C: @ 8199D3C
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- ldr r0, [sp, 0x14]
- adds r4, r2, 0
- muls r4, r3
- cmp r0, 0x1
- bne _08199D64
- adds r3, r6, 0
- movs r2, 0
- cmp r2, r4
- bge _08199D8C
-_08199D54:
- adds r1, r3, r2
- ldrb r0, [r1]
- adds r0, r5
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, r4
- blt _08199D54
- b _08199D8C
-_08199D64:
- cmp r4, 0
- ble _08199D8C
- movs r0, 0xFC
- lsls r0, 8
- mov r12, r0
- ldr r0, =0x000003ff
- adds r7, r0, 0
- adds r3, r6, 0
- adds r2, r4, 0
-_08199D76:
- ldrh r0, [r3]
- mov r1, r12
- ands r1, r0
- adds r0, r5
- ands r0, r7
- orrs r1, r0
- strh r1, [r3]
- adds r3, 0x2
- subs r2, 0x1
- cmp r2, 0
- bne _08199D76
-_08199D8C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8199D3C
-
- thumb_func_start sub_8199D98
-sub_8199D98: @ 8199D98
- push {lr}
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- pop {r0}
- bx r0
- thumb_func_end sub_8199D98
-
- thumb_func_start sub_8199DF0
-sub_8199DF0: @ 8199DF0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r2
- mov r9, r3
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- movs r1, 0x4
- bl GetBgAttribute
- lsls r0, 16
- movs r7, 0x40
- cmp r0, 0
- bne _08199E16
- movs r7, 0x20
-_08199E16:
- adds r0, r5, 0
- movs r1, 0x1
- bl GetBgAttribute
- adds r4, r0, 0
- adds r0, r5, 0
- movs r1, 0xA
- bl GetBgAttribute
- lsls r4, 16
- lsrs r4, 2
- lsls r0, 16
- lsrs r0, 16
- add r0, r8
- muls r0, r7
- adds r4, r0
- lsls r0, r6, 24
- lsls r1, r6, 16
- orrs r0, r1
- lsls r1, r6, 8
- orrs r0, r1
- orrs r0, r6
- movs r1, 0xC0
- lsls r1, 19
- adds r4, r1
- mov r2, r9
- muls r2, r7
- lsls r2, 16
- lsrs r2, 16
- adds r1, r4, 0
- movs r3, 0x1
- bl RequestDma3Fill
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8199DF0
-
- thumb_func_start box_print
-box_print: @ 8199E64
- push {r4-r6,lr}
- sub sp, 0x10
- adds r4, r1, 0
- ldr r6, [sp, 0x20]
- ldr r5, [sp, 0x24]
- ldr r1, [sp, 0x28]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r1, [sp]
- mov r1, sp
- strb r0, [r1, 0x4]
- mov r0, sp
- strb r4, [r0, 0x5]
- strb r2, [r0, 0x6]
- strb r3, [r0, 0x7]
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- adds r0, r4, 0
- movs r1, 0x2
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xA]
- adds r0, r4, 0
- movs r1, 0x3
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xB]
- mov r3, sp
- ldrb r2, [r3, 0xC]
- movs r1, 0x10
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3, 0xC]
- mov r2, sp
- ldrb r0, [r6, 0x1]
- lsls r0, 4
- movs r4, 0xF
- strb r0, [r2, 0xC]
- ldrb r2, [r6]
- adds r0, r4, 0
- ands r0, r2
- ldrb r2, [r3, 0xD]
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- mov r2, sp
- ldrb r0, [r6, 0x2]
- lsls r0, 4
- ands r1, r4
- orrs r1, r0
- strb r1, [r2, 0xD]
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end box_print
-
- thumb_func_start AddTextPrinterParameterized2
-@ void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, u8 speed, u8 *str)
-AddTextPrinterParameterized2: @ 8199EEC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- adds r5, r1, 0
- ldr r1, [sp, 0x28]
- mov r8, r1
- ldr r1, [sp, 0x2C]
- mov r9, r1
- ldr r6, [sp, 0x30]
- ldr r1, [sp, 0x34]
- ldr r4, [sp, 0x38]
- str r4, [sp]
- mov r4, sp
- strb r0, [r4, 0x4]
- mov r0, sp
- strb r5, [r0, 0x5]
- strb r2, [r0, 0x6]
- strb r3, [r0, 0x7]
- mov r2, sp
- ldrb r0, [r0, 0x6]
- strb r0, [r2, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x7]
- strb r0, [r2, 0x9]
- mov r0, sp
- mov r2, r8
- strb r2, [r0, 0xA]
- mov r2, r9
- strb r2, [r0, 0xB]
- ldrb r3, [r4, 0xC]
- movs r2, 0x10
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r4, 0xC]
- mov r3, sp
- ldrb r0, [r6, 0x1]
- lsls r0, 4
- movs r5, 0xF
- strb r0, [r3, 0xC]
- ldrb r3, [r6]
- adds r0, r5, 0
- ands r0, r3
- ldrb r3, [r4, 0xD]
- ands r2, r3
- orrs r2, r0
- strb r2, [r4, 0xD]
- mov r3, sp
- ldrb r0, [r6, 0x2]
- lsls r0, 4
- ands r2, r5
- orrs r2, r0
- strb r2, [r3, 0xD]
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end AddTextPrinterParameterized2
-
- thumb_func_start sub_8199F74
-sub_8199F74: @ 8199F74
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r6, r1, 0
- ldr r4, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- mov r8, r1
- ldr r7, [sp, 0x34]
- ldr r5, [sp, 0x38]
- ldr r1, [sp, 0x3C]
- mov r9, r1
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- str r2, [sp]
- mov r1, sp
- strb r0, [r1, 0x4]
- mov r0, sp
- strb r6, [r0, 0x5]
- strb r3, [r0, 0x6]
- strb r4, [r0, 0x7]
- strb r3, [r0, 0x8]
- strb r4, [r0, 0x9]
- strb r5, [r0, 0xA]
- mov r1, r9
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r5, 0x10
- negs r5, r5
- adds r0, r5, 0
- ands r0, r1
- strb r0, [r2, 0xC]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r4, 0xF
- adds r1, r4, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- mov r2, sp
- adds r1, r4, 0
- ands r1, r0
- ldrb r0, [r2, 0xD]
- ands r5, r0
- orrs r5, r1
- strb r5, [r2, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- mov r2, sp
- lsls r0, 4
- ldrb r1, [r2, 0xD]
- ands r4, r1
- orrs r4, r0
- strb r4, [r2, 0xD]
- mov r0, sp
- mov r1, r8
- adds r2, r7, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8199F74
-
- thumb_func_start sub_819A024
-sub_819A024: @ 819A024
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r2, 16
- lsrs r4, r2, 16
- lsls r3, 16
- lsrs r5, r3, 16
- movs r2, 0
- ldr r0, =gSaveBlock2Ptr
- ldr r3, [r0]
- ldrb r0, [r3]
- ldr r6, =gStringVar4
- cmp r0, 0xFF
- beq _0819A04C
-_0819A042:
- adds r2, 0x1
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0819A042
-_0819A04C:
- adds r0, r6, 0
- bl StringExpandPlaceholders
- lsls r3, r4, 24
- lsrs r3, 24
- lsls r0, r5, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x1
- adds r2, r6, 0
- bl PrintTextOnWindow
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_819A024
-
- thumb_func_start sub_819A080
-sub_819A080: @ 819A080
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, [sp, 0x48]
- ldr r4, [sp, 0x4C]
- ldr r1, [sp, 0x50]
- ldr r5, [sp, 0x54]
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x8]
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- lsls r4, 16
- lsrs r4, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r2, [sp, 0x4]
- ldrh r0, [r2, 0x4]
- ldr r2, [sp, 0xC]
- subs r0, r2
- ldr r2, [sp, 0x8]
- adds r2, r1, r2
- str r2, [sp, 0x10]
- cmp r0, r1
- bge _0819A0CC
- ldr r1, [sp, 0x8]
- adds r0, r1
- str r0, [sp, 0x10]
-_0819A0CC:
- ldr r2, [sp, 0x4]
- ldrh r1, [r2, 0x6]
- subs r0, r1, r4
- cmp r0, r5
- bge _0819A0DE
- adds r0, r3, r1
- subs r0, r4
- str r0, [sp, 0x14]
- b _0819A0E2
-_0819A0DE:
- adds r5, r3, r5
- str r5, [sp, 0x14]
-_0819A0E2:
- ldr r0, [sp]
- ldrh r1, [r0, 0x4]
- movs r2, 0x7
- adds r0, r1, 0
- ands r0, r2
- adds r1, r0
- asrs r1, 3
- str r1, [sp, 0x18]
- ldr r0, [sp, 0x4]
- ldrh r1, [r0, 0x4]
- adds r0, r1, 0
- ands r0, r2
- adds r1, r0
- asrs r1, 3
- str r1, [sp, 0x1C]
- mov r12, r3
- mov r8, r4
- ldr r1, [sp, 0x14]
- cmp r12, r1
- blt _0819A10C
- b _0819A24A
-_0819A10C:
- ldr r5, [sp, 0x8]
- ldr r6, [sp, 0xC]
- mov r2, r12
- adds r2, 0x1
- str r2, [sp, 0x20]
- mov r0, r8
- adds r0, 0x1
- str r0, [sp, 0x24]
- ldr r1, [sp, 0x10]
- cmp r5, r1
- blt _0819A124
- b _0819A23A
-_0819A124:
- movs r7, 0x1
- movs r2, 0xF0
- mov r10, r2
- movs r0, 0xF
- mov r9, r0
-_0819A12E:
- asrs r0, r5, 1
- movs r1, 0x3
- ands r0, r1
- ldr r2, [sp]
- ldr r1, [r2]
- adds r1, r0
- asrs r0, r5, 3
- lsls r0, 5
- adds r1, r0
- mov r2, r12
- asrs r0, r2, 3
- ldr r2, [sp, 0x18]
- muls r0, r2
- lsls r0, 5
- adds r1, r0
- mov r2, r12
- lsls r0, r2, 29
- lsrs r0, 27
- adds r3, r1, r0
- asrs r0, r6, 1
- movs r1, 0x3
- ands r0, r1
- ldr r2, [sp, 0x4]
- ldr r1, [r2]
- adds r1, r0
- asrs r0, r6, 3
- lsls r0, 5
- adds r1, r0
- mov r2, r8
- asrs r0, r2, 3
- ldr r2, [sp, 0x1C]
- muls r0, r2
- lsls r0, 5
- adds r1, r0
- mov r2, r8
- lsls r0, r2, 29
- lsrs r0, 27
- adds r4, r1, r0
- adds r0, r4, 0
- ands r0, r7
- cmp r0, 0
- beq _0819A1DA
- subs r4, 0x1
- adds r0, r6, 0
- ands r0, r7
- cmp r0, 0
- beq _0819A1B2
- ldrh r0, [r4]
- ldr r2, =0x00000fff
- ands r2, r0
- adds r0, r5, 0
- ands r0, r7
- cmp r0, 0
- beq _0819A1A8
- ldrb r1, [r3]
- mov r0, r10
- ands r0, r1
- lsls r0, 8
- b _0819A22A
- .pool
-_0819A1A8:
- ldrb r1, [r3]
- mov r0, r9
- ands r0, r1
- lsls r0, 12
- b _0819A22A
-_0819A1B2:
- ldrh r0, [r4]
- ldr r2, =0x0000f0ff
- ands r2, r0
- adds r0, r5, 0
- ands r0, r7
- cmp r0, 0
- beq _0819A1D0
- ldrb r1, [r3]
- mov r0, r10
- ands r0, r1
- lsls r0, 4
- b _0819A22A
- .pool
-_0819A1D0:
- ldrb r1, [r3]
- mov r0, r9
- ands r0, r1
- lsls r0, 8
- b _0819A22A
-_0819A1DA:
- adds r0, r6, 0
- ands r0, r7
- cmp r0, 0
- beq _0819A206
- ldrh r0, [r4]
- ldr r2, =0x0000ff0f
- ands r2, r0
- adds r0, r5, 0
- ands r0, r7
- cmp r0, 0
- beq _0819A1FC
- ldrb r1, [r3]
- mov r0, r10
- b _0819A228
- .pool
-_0819A1FC:
- ldrb r1, [r3]
- mov r0, r9
- ands r0, r1
- lsls r0, 4
- b _0819A22A
-_0819A206:
- ldrh r0, [r4]
- ldr r2, =0x0000fff0
- ands r2, r0
- adds r0, r5, 0
- ands r0, r7
- cmp r0, 0
- beq _0819A224
- ldrb r1, [r3]
- mov r0, r10
- ands r0, r1
- lsrs r0, 4
- b _0819A22A
- .pool
-_0819A224:
- ldrb r1, [r3]
- mov r0, r9
-_0819A228:
- ands r0, r1
-_0819A22A:
- orrs r2, r0
- strh r2, [r4]
- adds r5, 0x1
- adds r6, 0x1
- ldr r0, [sp, 0x10]
- cmp r5, r0
- bge _0819A23A
- b _0819A12E
-_0819A23A:
- ldr r1, [sp, 0x20]
- mov r12, r1
- ldr r2, [sp, 0x24]
- mov r8, r2
- ldr r0, [sp, 0x14]
- cmp r12, r0
- bge _0819A24A
- b _0819A10C
-_0819A24A:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_819A080
-
- thumb_func_start sub_819A25C
-sub_819A25C: @ 819A25C
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- lsrs r0, 16
- bl GetValidMonIconPalettePtr
- adds r1, r4, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_819A25C
-
- thumb_func_start sub_819A27C
-sub_819A27C: @ 819A27C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r4, r3, 0
- ldr r5, [sp, 0x18]
- lsls r6, 24
- lsrs r6, 24
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r2, 0x1
- bl GetMonIconPtr
- adds r1, r0, 0
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl BlitBitmapToWindow
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_819A27C
-
- thumb_func_start sub_819A2BC
-sub_819A2BC: @ 819A2BC
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _0819A2DC
- cmp r1, 0x1
- ble _0819A2D2
- cmp r1, 0x2
- beq _0819A2E4
-_0819A2D2:
- ldr r0, =gFireRedMenuElements1_Pal
- b _0819A2E6
- .pool
-_0819A2DC:
- ldr r0, =gFireRedMenuElements2_Pal
- b _0819A2E6
- .pool
-_0819A2E4:
- ldr r0, =gFireRedMenuElements3_Pal
-_0819A2E6:
- adds r1, r2, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_819A2BC
-
- thumb_func_start blit_move_info_icon
-@ void blit_move_info_icon(u8 windowId, u8 a2, u16 x, u16 y)
-blit_move_info_icon: @ 819A2F8
- push {r4,r5,lr}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r4, =gUnknown_0860F0D4
- lsrs r1, 22
- adds r1, r4
- ldrh r5, [r1, 0x2]
- lsls r5, 5
- ldr r4, =gFireRedMenuElements_Gfx
- adds r5, r4
- movs r4, 0x80
- str r4, [sp]
- str r4, [sp, 0x4]
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- ldrb r2, [r1]
- str r2, [sp, 0x10]
- ldrb r1, [r1, 0x1]
- str r1, [sp, 0x14]
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0
- bl BlitBitmapRectToWindow
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end blit_move_info_icon
-
- thumb_func_start sub_819A344
-sub_819A344: @ 819A344
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r2, 24
- lsrs r2, 24
- adds r5, r1, 0
- movs r1, 0xFC
- strb r1, [r5]
- adds r5, 0x1
- movs r0, 0x1
- strb r0, [r5]
- adds r5, 0x1
- strb r2, [r5]
- adds r5, 0x1
- strb r1, [r5]
- adds r5, 0x1
- movs r0, 0x3
- strb r0, [r5]
- adds r5, 0x1
- adds r2, 0x1
- strb r2, [r5]
- adds r5, 0x1
- cmp r3, 0x4
- bhi _0819A43C
- lsls r0, r3, 2
- ldr r1, =_0819A384
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0819A384:
- .4byte _0819A398
- .4byte _0819A3A8
- .4byte _0819A3D6
- .4byte _0819A404
- .4byte _0819A414
-_0819A398:
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringCopy
- b _0819A43C
- .pool
-_0819A3A8:
- bl IsNationalPokedexEnabled
- cmp r0, 0
- beq _0819A3B8
- movs r0, 0x1
- bl pokedex_count
- b _0819A3BE
-_0819A3B8:
- movs r0, 0x1
- bl sub_80C0844
-_0819A3BE:
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- movs r0, 0xFF
- strb r0, [r5]
- b _0819A43C
-_0819A3D6:
- ldr r4, =gSaveBlock2Ptr
- ldr r0, [r4]
- ldrh r1, [r0, 0xE]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- movs r0, 0xF0
- strb r0, [r5]
- adds r5, 0x1
- ldr r0, [r4]
- ldrb r1, [r0, 0x10]
- adds r0, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- b _0819A43C
- .pool
-_0819A404:
- ldr r0, =gMapHeader
- ldrb r1, [r0, 0x14]
- adds r0, r5, 0
- bl sub_81245DC
- b _0819A43C
- .pool
-_0819A414:
- ldr r4, =0x00000867
- movs r6, 0
- adds r7, r5, 0x1
-_0819A41A:
- lsls r0, r4, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0819A42A
- adds r6, 0x1
-_0819A42A:
- adds r4, 0x1
- ldr r0, =0x0000086e
- cmp r4, r0
- ble _0819A41A
- adds r0, r6, 0
- subs r0, 0x5F
- strb r0, [r5]
- movs r0, 0xFF
- strb r0, [r7]
-_0819A43C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_819A344
-
- thumb_func_start sub_819A44C
-sub_819A44C: @ 819A44C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrb r4, [r5, 0x5]
- lsrs r4, 4
- movs r0, 0x65
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsls r4, 16
- lsrs r4, 16
- lsrs r0, 24
- cmp r4, r0
- bne _0819A4BA
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0819A4B0
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _0819A484
- subs r0, r1, 0x1
- strh r0, [r5, 0x2E]
- b _0819A4C2
-_0819A484:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _0819A4A6
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0x20
- strh r0, [r5, 0x2E]
- b _0819A4C2
-_0819A4A6:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
- b _0819A4C2
-_0819A4B0:
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnimIfDifferent
- b _0819A4C2
-_0819A4BA:
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
-_0819A4C2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_819A44C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s
deleted file mode 100644
index 5089ae909..000000000
--- a/asm/new_menu_helpers.s
+++ /dev/null
@@ -1,1178 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8197184
-sub_8197184: @ 8197184
- push {r4,r5,lr}
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl GetWindowAttribute
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0860EA6C
- movs r2, 0x80
- lsls r2, 1
- lsls r4, 16
- lsrs r4, 16
- adds r3, r4, 0
- bl LoadBgTiles
- ldr r0, =gUnknown_0860EA4C
- lsls r5, 20
- lsrs r5, 16
- adds r1, r5, 0
- movs r2, 0x20
- bl LoadPalette
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197184
-
- thumb_func_start sub_81971C4
-sub_81971C4: @ 81971C4
- push {lr}
- bl sub_819645C
- pop {r0}
- bx r0
- thumb_func_end sub_81971C4
-
- thumb_func_start sub_81971D0
-sub_81971D0: @ 81971D0
- push {lr}
- ldr r0, =gUnknown_0860F098
- bl InitWindows
- ldr r0, =gUnknown_0203CD8C
- movs r1, 0xFF
- strb r1, [r0]
- ldr r0, =gUnknown_0203CD8D
- strb r1, [r0]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81971D0
-
- thumb_func_start sub_81971F4
-sub_81971F4: @ 81971F4
- push {lr}
- bl FreeAllWindowBuffers
- pop {r0}
- bx r0
- thumb_func_end sub_81971F4
-
- thumb_func_start sub_8197200
-sub_8197200: @ 8197200
- push {lr}
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- bl DeactivateAllTextPrinters
- bl sub_81973A4
- pop {r0}
- bx r0
- thumb_func_end sub_8197200
-
- thumb_func_start sub_8197224
-sub_8197224: @ 8197224
- push {lr}
- bl RunTextPrinters
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_8197224
-
- thumb_func_start AddTextPrinterParameterized
-@ u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor)
-AddTextPrinterParameterized: @ 8197238
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r7, [sp, 0x28]
- ldr r4, [sp, 0x2C]
- mov r8, r4
- ldr r5, [sp, 0x30]
- ldr r6, [sp, 0x34]
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- str r2, [sp]
- mov r2, sp
- movs r4, 0
- strb r0, [r2, 0x4]
- mov r0, sp
- strb r1, [r0, 0x5]
- strb r4, [r0, 0x6]
- movs r1, 0x1
- strb r1, [r0, 0x7]
- strb r4, [r0, 0x8]
- strb r1, [r0, 0x9]
- strb r4, [r0, 0xA]
- strb r4, [r0, 0xB]
- mov r4, sp
- ldrb r2, [r4, 0xC]
- subs r1, 0x11
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r4, 0xC]
- mov r0, sp
- mov r2, r8
- lsls r2, 4
- movs r4, 0xF
- strb r2, [r0, 0xC]
- mov r2, sp
- ands r5, r4
- ldrb r0, [r2, 0xD]
- ands r1, r0
- orrs r1, r5
- strb r1, [r2, 0xD]
- mov r0, sp
- lsrs r6, 20
- ands r1, r4
- orrs r1, r6
- strb r1, [r0, 0xD]
- ldr r2, =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- mov r0, sp
- adds r1, r3, 0
- adds r2, r7, 0
- bl AddTextPrinter
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end AddTextPrinterParameterized
-
- thumb_func_start AddTextPrinterForMessage
-@ void AddTextPrinterForMessage(u8 allowSkippingDelayWithButtonPress)
-AddTextPrinterForMessage: @ 81972C4
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- ldr r3, =gTextFlags
- movs r4, 0x1
- ands r0, r4
- ldrb r2, [r3]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
- bl GetPlayerTextSpeed
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r2, =gStringVar4
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- bl AddTextPrinterParameterized
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AddTextPrinterForMessage
-
- thumb_func_start AddTextPrinterForMessage_2
-@ void AddTextPrinterForMessage_2(u8 allowSkippingDelayWithButtonPress)
-AddTextPrinterForMessage_2: @ 8197310
- push {r4,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gTextFlags
- movs r4, 0x1
- ands r0, r4
- ldrb r2, [r3]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3]
- bl GetPlayerTextSpeed
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r2, =gStringVar4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- bl AddTextPrinterParameterized
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AddTextPrinterForMessage_2
-
- thumb_func_start AddTextPrinterWithCustomSpeedForMessage
-@ void AddTextPrinterWithCustomSpeedForMessage(u8 allowSkippingDelayWithButtonPress, u8 speed)
-AddTextPrinterWithCustomSpeedForMessage: @ 819735C
- push {r4,r5,lr}
- sub sp, 0x10
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r4, =gTextFlags
- movs r5, 0x1
- ands r0, r5
- ldrb r2, [r4]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r4]
- ldr r2, =gStringVar4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- bl AddTextPrinterParameterized
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AddTextPrinterWithCustomSpeedForMessage
-
- thumb_func_start sub_81973A4
-sub_81973A4: @ 81973A4
- push {lr}
- movs r1, 0x80
- lsls r1, 2
- movs r0, 0
- movs r2, 0xF0
- bl copy_textbox_border_tile_patterns_to_vram
- movs r1, 0x85
- lsls r1, 2
- movs r0, 0
- movs r2, 0xE0
- bl sub_809882C
- pop {r0}
- bx r0
- thumb_func_end sub_81973A4
-
- thumb_func_start sub_81973C4
-sub_81973C4: @ 81973C4
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =sub_81975F4
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _081973F2
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_081973F2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81973C4
-
- thumb_func_start sub_81973FC
-sub_81973FC: @ 81973FC
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =sub_81974A4
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0819742A
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0819742A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81973FC
-
- thumb_func_start sub_8197434
-sub_8197434: @ 8197434
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =sub_8197804
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _08197462
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08197462:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197434
-
- thumb_func_start sub_819746C
-sub_819746C: @ 819746C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =sub_81977BC
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _0819749A
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0819749A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_819746C
-
- thumb_func_start sub_81974A4
-sub_81974A4: @ 81974A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- adds r4, r2, 0
- ldr r2, [sp, 0x3C]
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsls r4, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x14]
- movs r3, 0x85
- lsls r3, 2
- lsrs r0, r1, 24
- str r0, [sp, 0xC]
- movs r2, 0xFF
- lsls r2, 24
- adds r2, r1
- mov r8, r2
- lsrs r2, 24
- lsrs r0, r4, 24
- mov r9, r0
- movs r0, 0xFF
- lsls r0, 24
- adds r4, r0
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r6, 0xE
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r1, r3, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000215
- ldr r2, [sp, 0x10]
- str r2, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000216
- ldr r3, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r0, r3, r2
- lsls r0, 24
- mov r10, r0
- lsrs r2, r0, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- mov r5, r9
- ldr r0, [sp, 0x14]
- add r0, r9
- cmp r9, r0
- bge _08197578
- mov r3, r8
- str r3, [sp, 0x18]
- movs r6, 0x1
- movs r0, 0xE
- mov r8, r0
-_0819753E:
- lsls r4, r5, 24
- lsrs r4, 24
- str r6, [sp]
- str r6, [sp, 0x4]
- mov r2, r8
- str r2, [sp, 0x8]
- adds r0, r7, 0
- ldr r1, =0x00000217
- ldr r3, [sp, 0x18]
- lsrs r2, r3, 24
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- str r6, [sp]
- str r6, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- adds r0, r7, 0
- ldr r1, =0x00000219
- mov r3, r10
- lsrs r2, r3, 24
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- adds r5, 0x1
- ldr r0, [sp, 0x14]
- add r0, r9
- cmp r5, r0
- blt _0819753E
-_08197578:
- ldr r1, =0x0000021a
- ldr r2, [sp, 0xC]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r4, [sp, 0x14]
- add r4, r9
- lsls r4, 24
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r6, 0xE
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r1, =0x0000021b
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- movs r1, 0x87
- lsls r1, 2
- ldr r3, [sp, 0xC]
- ldr r0, [sp, 0x10]
- adds r2, r3, r0
- lsls r2, 24
- lsrs r2, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r7, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81974A4
-
- thumb_func_start sub_81975F4
-sub_81975F4: @ 81975F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- adds r6, r0, 0
- adds r5, r2, 0
- mov r8, r3
- ldr r2, [sp, 0x44]
- lsls r6, 24
- lsrs r6, 24
- lsls r0, r1, 24
- lsls r5, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r1, r2, 24
- lsrs r1, 24
- str r1, [sp, 0x10]
- ldr r1, =0x00000201
- lsrs r2, r0, 24
- str r2, [sp, 0xC]
- movs r3, 0xFE
- lsls r3, 24
- adds r2, r0, r3
- lsrs r2, 24
- str r2, [sp, 0x14]
- lsrs r0, r5, 24
- mov r10, r0
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r3, 0xF
- mov r9, r3
- str r3, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000203
- ldr r0, [sp, 0xC]
- subs r0, 0x1
- lsls r2, r0, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r0, r9
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r1, 0x81
- lsls r1, 2
- mov r0, r8
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x1C]
- str r0, [sp]
- str r4, [sp, 0x4]
- mov r2, r9
- str r2, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000205
- ldr r7, [sp, 0xC]
- add r7, r8
- subs r0, r7, 0x1
- lsls r2, r0, 24
- lsrs r2, 24
- str r2, [sp, 0x20]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r9
- str r3, [sp, 0x8]
- adds r0, r6, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000206
- lsls r2, r7, 24
- lsrs r7, r2, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r0, r9
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000207
- str r4, [sp]
- movs r5, 0x5
- str r5, [sp, 0x4]
- mov r2, r9
- str r2, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000209
- add r8, r4
- mov r3, r8
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp]
- str r5, [sp, 0x4]
- mov r0, r9
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r1, =0x0000020a
- str r4, [sp]
- str r5, [sp, 0x4]
- mov r2, r9
- str r2, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000a01
- ldr r3, [sp, 0x10]
- add r10, r3
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r9
- str r2, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000a03
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r9
- str r3, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000a04
- ldr r0, [sp, 0x1C]
- str r0, [sp]
- str r4, [sp, 0x4]
- mov r2, r9
- str r2, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0xC]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000a05
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r9
- str r3, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x20]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r1, =0x00000a06
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r0, r9
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- mov r3, r10
- bl FillBgTilemapBufferRect
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81975F4
-
- thumb_func_start sub_81977BC
-sub_81977BC: @ 81977BC
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 18
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0xE
- str r1, [sp, 0x8]
- movs r1, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81977BC
-
- thumb_func_start sub_8197804
-sub_8197804: @ 8197804
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFD
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0xC0
- lsls r2, 19
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0xE
- str r1, [sp, 0x8]
- movs r1, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8197804
-
- thumb_func_start SetStandardWindowBorderStyle
-@ void SetStandardWindowBorderStyle(u8 windowId, bool copyToVram)
-SetStandardWindowBorderStyle: @ 8197854
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x85
- lsls r2, 2
- movs r3, 0xE
- bl SetWindowBorderStyle
- pop {r0}
- bx r0
- thumb_func_end SetStandardWindowBorderStyle
-
- thumb_func_start sub_819786C
-sub_819786C: @ 819786C
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- movs r6, 0x80
- lsls r6, 2
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0xF0
- bl copy_textbox_border_tile_patterns_to_vram
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- movs r3, 0xF
- bl sub_8197B1C
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_819786C
-
- thumb_func_start sub_819789C
-sub_819789C: @ 819789C
- push {lr}
- ldr r0, =gUnknown_0860F074
- movs r1, 0xE0
- movs r2, 0x14
- bl LoadPalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_819789C
-
- thumb_func_start sub_81978B0
-sub_81978B0: @ 81978B0
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, =gUnknown_0860F074
- movs r2, 0x14
- bl LoadPalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81978B0
-
- thumb_func_start sub_81978C8
-sub_81978C8: @ 81978C8
- ldr r0, =gUnknown_0860F074
- bx lr
- .pool
- thumb_func_end sub_81978C8
-
- thumb_func_start sub_81978D0
-sub_81978D0: @ 81978D0
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _081978DC
- movs r1, 0
-_081978DC:
- ldr r0, =gUnknown_0860F074
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81978D0
-
- thumb_func_start DisplayItemMessageOnField
-@ void DisplayItemMessageOnField(u8 taskId, u8 *str, void ( *callback)(u8 taskId))
-DisplayItemMessageOnField: @ 81978EC
- push {r4-r6,lr}
- sub sp, 0x10
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_81973A4
- bl GetPlayerTextSpeed
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- adds r0, r4, 0
- movs r1, 0
- movs r3, 0xF
- bl DisplayMessageAndContinueTask
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end DisplayItemMessageOnField
-
- thumb_func_start sub_8197930
-sub_8197930: @ 8197930
- push {lr}
- ldr r0, =gUnknown_0860F0A8
- movs r1, 0x85
- lsls r1, 2
- movs r2, 0xE
- movs r3, 0
- bl CreateYesNoMenu
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197930
-
- thumb_func_start sub_8197948
-sub_8197948: @ 8197948
- push {lr}
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =gUnknown_0860F0A8
- movs r1, 0x85
- lsls r1, 2
- movs r2, 0xE
- bl CreateYesNoMenu
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8197948
-
- thumb_func_start sub_8197964
-sub_8197964: @ 8197964
- push {lr}
- ldr r0, =gTextFlags
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08197988
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- lsls r0, 29
- lsrs r0, 29
- b _0819798A
- .pool
-_08197988:
- movs r0, 0x1
-_0819798A:
- pop {r1}
- bx r1
- thumb_func_end sub_8197964
-
- thumb_func_start GetPlayerTextSpeed
-GetPlayerTextSpeed: @ 8197990
- push {lr}
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x14]
- lsls r0, r1, 29
- lsrs r0, 29
- cmp r0, 0x2
- bls _081979AC
- movs r0, 0x8
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x14]
-_081979AC:
- bl sub_8197964
- ldr r1, =gUnknown_0860F094
- adds r0, r1
- ldrb r0, [r0]
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetPlayerTextSpeed
-
- thumb_func_start sub_81979C4
-sub_81979C4: @ 81979C4
- push {r4,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r4, =gUnknown_0203CD8C
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _081979F6
- lsls r0, r1, 25
- movs r1, 0x80
- lsls r1, 18
- adds r0, r1
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- ldr r0, =0x00000139
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x16
- movs r2, 0x1
- movs r3, 0x7
- bl sub_8198AA4
- strb r0, [r4]
-_081979F6:
- ldrb r0, [r4]
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81979C4
-
- thumb_func_start GetStartMenuWindowId
-GetStartMenuWindowId: @ 8197A08
- ldr r0, =gUnknown_0203CD8C
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end GetStartMenuWindowId
-
- thumb_func_start remove_start_menu_window_maybe
-remove_start_menu_window_maybe: @ 8197A14
- push {r4,lr}
- ldr r4, =gUnknown_0203CD8C
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _08197A26
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_08197A26:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end remove_start_menu_window_maybe
-
- thumb_func_start sub_8197A30
-sub_8197A30: @ 8197A30
- movs r0, 0x80
- lsls r0, 2
- bx lr
- thumb_func_end sub_8197A30
-
- thumb_func_start sub_8197A38
-sub_8197A38: @ 8197A38
- movs r0, 0x85
- lsls r0, 2
- bx lr
- thumb_func_end sub_8197A38
-
- thumb_func_start AddMapNamePopUpWindow
-AddMapNamePopUpWindow: @ 8197A40
- push {r4,lr}
- sub sp, 0xC
- ldr r4, =gUnknown_0203CD8D
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _08197A66
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0xE
- str r0, [sp, 0x4]
- adds r0, 0xF9
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0xA
- bl sub_8198AA4
- strb r0, [r4]
-_08197A66:
- ldrb r0, [r4]
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end AddMapNamePopUpWindow
-
- thumb_func_start GetMapNamePopUpWindowId
-GetMapNamePopUpWindowId: @ 8197A74
- ldr r0, =gUnknown_0203CD8D
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end GetMapNamePopUpWindowId
-
- thumb_func_start RemoveMapNamePopUpWindow
-RemoveMapNamePopUpWindow: @ 8197A80
- push {r4,lr}
- ldr r4, =gUnknown_0203CD8D
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _08197A92
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_08197A92:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end RemoveMapNamePopUpWindow
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 0dc03a1e2..991ad3623 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -4,6 +4,192 @@
.syntax unified
.text
+
+ thumb_func_start sub_81B0038
+sub_81B0038: @ 81B0038
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ ldr r4, [sp, 0x24]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ lsls r1, 24
+ lsrs r1, 24
+ mov r9, r1
+ lsls r2, 24
+ lsrs r7, r2, 24
+ lsls r3, 24
+ lsrs r3, 24
+ str r3, [sp]
+ lsls r4, 24
+ lsrs r6, r4, 24
+ bl reset_brm
+ ldr r0, =gUnknown_0203CEC4
+ mov r10, r0
+ movs r0, 0x8E
+ lsls r0, 2
+ bl Alloc
+ adds r5, r0, 0
+ mov r1, r10
+ str r5, [r1]
+ cmp r5, 0
+ bne _081B0088
+ ldr r0, [sp, 0x2C]
+ bl SetMainCallback2
+ b _081B0194
+ .pool
+_081B0088:
+ ldr r3, =gUnknown_0203CEC8
+ movs r1, 0xF
+ mov r4, r8
+ ands r1, r4
+ ldrb r2, [r3, 0x8]
+ movs r0, 0x10
+ negs r0, r0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3, 0x8]
+ ldr r0, [sp, 0x2C]
+ str r0, [r3]
+ movs r4, 0
+ strb r7, [r3, 0xB]
+ lsls r2, r6, 2
+ ldrh r1, [r5, 0xA]
+ movs r0, 0x3
+ ands r0, r1
+ orrs r0, r2
+ strh r0, [r5, 0xA]
+ ldr r0, [sp, 0x28]
+ str r0, [r5]
+ str r4, [r5, 0x4]
+ ldrb r1, [r5, 0x8]
+ movs r0, 0xF
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r5, 0x8]
+ mov r1, r10
+ ldr r2, [r1]
+ ldrh r0, [r2, 0x8]
+ movs r4, 0xFE
+ lsls r4, 3
+ adds r1, r4, 0
+ orrs r0, r1
+ strh r0, [r2, 0x8]
+ ldr r0, [r2, 0x8]
+ movs r1, 0xFE
+ lsls r1, 10
+ orrs r0, r1
+ str r0, [r2, 0x8]
+ adds r6, r3, 0
+ mov r5, r8
+ cmp r5, 0x4
+ bne _081B00F0
+ ldrb r0, [r2, 0x8]
+ movs r1, 0x1
+ orrs r0, r1
+ b _081B00F8
+ .pool
+_081B00F0:
+ ldrb r1, [r2, 0x8]
+ movs r0, 0x2
+ negs r0, r0
+ ands r0, r1
+_081B00F8:
+ strb r0, [r2, 0x8]
+ mov r0, r9
+ cmp r0, 0xFF
+ beq _081B0114
+ movs r0, 0x3
+ mov r1, r9
+ ands r0, r1
+ lsls r0, 4
+ ldrb r2, [r6, 0x8]
+ movs r1, 0x31
+ negs r1, r1
+ ands r1, r2
+ orrs r1, r0
+ strb r1, [r6, 0x8]
+_081B0114:
+ movs r2, 0
+ ldr r5, =gUnknown_0203CEC4
+ movs r4, 0x86
+ lsls r4, 2
+ movs r3, 0
+_081B011E:
+ ldr r0, [r5]
+ lsls r1, r2, 1
+ adds r0, r4
+ adds r0, r1
+ strh r3, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0xF
+ bls _081B011E
+ movs r2, 0
+ ldr r4, =gUnknown_0203CEC4
+ movs r3, 0xFF
+_081B0138:
+ ldr r0, [r4]
+ adds r0, 0xC
+ adds r0, r2
+ ldrb r1, [r0]
+ orrs r1, r3
+ strb r1, [r0]
+ adds r0, r2, 0x1
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r2, 0x2
+ bls _081B0138
+ ldr r4, [sp]
+ cmp r4, 0
+ bne _081B015C
+ strb r4, [r6, 0x9]
+ b _081B017E
+ .pool
+_081B015C:
+ adds r1, r6, 0
+ movs r0, 0x9
+ ldrsb r0, [r1, r0]
+ cmp r0, 0x5
+ bgt _081B017A
+ adds r1, r0, 0
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, =gPlayerParty
+ adds r0, r1
+ movs r1, 0xB
+ bl GetMonData
+ cmp r0, 0
+ bne _081B017E
+_081B017A:
+ movs r0, 0
+ strb r0, [r6, 0x9]
+_081B017E:
+ ldr r2, =gTextFlags
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ bl CalculatePlayerPartyCount
+ ldr r0, =c2_811EBD0
+ bl SetMainCallback2
+_081B0194:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_81B0038
thumb_func_start sub_81B01B0
sub_81B01B0: @ 81B01B0
@@ -16041,14 +16227,14 @@ _081B8AF8:
b _081B8B24
_081B8AFC:
adds r0, r4, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _081B8B1E
adds r0, r5, 0
bl sub_81B8F38
lsls r0, 24
- ldr r2, =gBattlePartyID
+ ldr r2, =gBattlerPartyIndexes
lsls r1, r4, 1
adds r1, r2
lsrs r0, 24
@@ -16060,7 +16246,7 @@ _081B8B1E:
lsls r0, 24
lsrs r4, r0, 24
_081B8B24:
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r0, [r0]
cmp r4, r0
bcc _081B8AFC
@@ -16115,8 +16301,8 @@ _081B8BA8:
ldr r1, =gUnknown_0203CEE8
movs r0, 0x1
strb r0, [r1]
- ldr r1, =gBattlePartyID
- ldr r0, =gBankInMenu
+ ldr r1, =gBattlerPartyIndexes
+ ldr r0, =gBattlerInMenuId
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -16148,9 +16334,9 @@ _081B8BFC:
b _081B8C42
.pool
_081B8C20:
- ldr r0, =gBankInMenu
+ ldr r0, =gBattlerInMenuId
ldrb r0, [r0]
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, 1
adds r0, r1
ldrb r0, [r0]
@@ -16228,9 +16414,9 @@ _081B8CBE:
bne _081B8CFC
movs r5, 0x1
movs r0, 0
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
mov r2, sp
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, 24
lsrs r0, 23
adds r0, r1
@@ -16255,16 +16441,16 @@ _081B8CF0:
_081B8CFC:
movs r5, 0x2
movs r0, 0
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
mov r1, sp
- ldr r4, =gBattlePartyID
+ ldr r4, =gBattlerPartyIndexes
lsls r0, 24
lsrs r0, 23
adds r0, r4
ldrh r0, [r0]
strb r0, [r1]
movs r0, 0x2
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
mov r1, sp
lsls r0, 24
lsrs r0, 23
@@ -16339,24 +16525,24 @@ sub_81B8D88: @ 81B8D88
lsrs r7, r1, 24
lsls r0, 24
lsrs r0, 24
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _081B8DB0
movs r0, 0
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x2
b _081B8DBC
_081B8DB0:
movs r0, 0x1
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x3
_081B8DBC:
- bl GetBankByIdentity
+ bl GetBattlerAtPosition
lsls r0, 24
lsrs r6, r0, 24
bl sub_81B1250
@@ -16388,7 +16574,7 @@ _081B8DF0:
bne _081B8E28
movs r3, 0x1
mov r2, sp
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r1
ldrh r0, [r0]
@@ -16412,7 +16598,7 @@ _081B8E1A:
_081B8E28:
movs r3, 0x2
mov r1, sp
- ldr r2, =gBattlePartyID
+ ldr r2, =gBattlerPartyIndexes
lsls r0, r4, 1
adds r0, r2
ldrh r0, [r0]
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 5d9314f80..1ae5b4d14 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -463,7 +463,7 @@ sub_816B21C: @ 816B21C
adds r4, r0, 0
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
movs r0, 0x1
str r0, [sp]
movs r0, 0
@@ -599,7 +599,7 @@ mapldr_080EBC0C: @ 816B33C
bl sub_81973A4
movs r0, 0
movs r1, 0x1
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r0, =sub_816B368
movs r1, 0
bl CreateTask
@@ -2179,7 +2179,7 @@ sub_816C060: @ 816C060
adds r0, r4, 0
adds r1, r4, 0
adds r2, r6, 0
- bl AddItemIconObject
+ bl AddItemIconSprite
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
@@ -2540,7 +2540,7 @@ bx_battle_menu_t3: @ 816C3A4
bne _0816C3F2
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
movs r1, 0x6
ldrsh r0, [r5, r1]
cmp r0, 0
diff --git a/asm/pokemon_1.s b/asm/pokemon_1.s
index 15b4af009..5dbfb2ee3 100644
--- a/asm/pokemon_1.s
+++ b/asm/pokemon_1.s
@@ -581,7 +581,7 @@ _080689E4:
beq _080689CE
_080689F4:
adds r0, r5, 0
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
beq _080689CE
@@ -827,7 +827,7 @@ _08068BE0:
ldrb r0, [r1, 0x13]
lsls r0, 3
orrs r2, r0
- ldr r1, =gTrainerClassToNameIndex
+ ldr r1, =gFacilityClassToTrainerClass
ldr r0, =gUnknown_08329D54
lsls r2, 1
adds r2, r0
diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s
index 49b205967..2184b22b2 100644
--- a/asm/pokemon_item_effect.s
+++ b/asm/pokemon_item_effect.s
@@ -77,7 +77,7 @@ ExecuteTableBasedItemEffect: @ 806BD28
cmp r0, 0
beq _0806BDA8
ldr r2, =gEnigmaBerries
- ldr r0, =gBankInMenu
+ ldr r0, =gBattlerInMenuId
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
@@ -100,8 +100,8 @@ _0806BDBC:
lsrs r0, 24
_0806BDC4:
str r0, [sp, 0x34]
- ldr r1, =gStringBank
- ldr r0, =gBankInMenu
+ ldr r1, =gPotentialItemEffectBattler
+ ldr r0, =gBattlerInMenuId
ldrb r2, [r0]
strb r2, [r1]
ldr r0, =gMain
@@ -114,23 +114,23 @@ _0806BDC4:
lsrs r1, r0, 24
cmp r1, 0
beq _0806BE64
- ldr r0, =gActiveBank
+ ldr r0, =gActiveBattler
strb r2, [r0]
ldrb r0, [r0]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
negs r1, r0
orrs r1, r0
lsrs r1, 31
str r1, [sp, 0x1C]
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldr r4, [sp, 0xC]
subs r4, 0xD
ldrb r0, [r0]
cmp r1, r0
bge _0806BE70
- ldr r2, =gBattlePartyID
+ ldr r2, =gBattlerPartyIndexes
lsls r0, r1, 1
adds r0, r2
ldrh r3, [r0]
@@ -148,7 +148,7 @@ _0806BE3C:
ldr r1, [sp, 0x1C]
adds r1, 0x2
str r1, [sp, 0x1C]
- ldr r0, =gNoOfAllBanks
+ ldr r0, =gBattlersCount
ldrb r0, [r0]
cmp r1, r0
bge _0806BE70
@@ -165,7 +165,7 @@ _0806BE3C:
b _0806BE70
.pool
_0806BE64:
- ldr r0, =gActiveBank
+ ldr r0, =gActiveBattler
strb r1, [r0]
movs r3, 0x4
str r3, [sp, 0x38]
@@ -200,7 +200,7 @@ _0806BE9A:
ands r0, r1
cmp r0, 0
beq _0806BECC
- ldr r0, =gActiveBank
+ ldr r0, =gActiveBattler
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
@@ -297,7 +297,7 @@ _0806BF76:
cmp r0, 0
beq _0806BFA4
ldr r1, =gBattleMons
- ldr r0, =gActiveBank
+ ldr r0, =gActiveBattler
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
@@ -323,7 +323,7 @@ _0806BFA4:
bl _0806CD4C
_0806BFB2:
ldr r6, =gBattleMons
- ldr r5, =gActiveBank
+ ldr r5, =gActiveBattler
ldrb r0, [r5]
movs r4, 0x58
muls r0, r4
@@ -362,7 +362,7 @@ _0806BFFC:
cmp r3, 0
beq _0806C042
ldr r7, =gBattleMons
- ldr r5, =gActiveBank
+ ldr r5, =gActiveBattler
ldrb r0, [r5]
movs r4, 0x58
muls r0, r4
@@ -396,7 +396,7 @@ _0806C042:
bl _0806CD4C
_0806C050:
ldr r6, =gBattleMons
- ldr r5, =gActiveBank
+ ldr r5, =gActiveBattler
ldrb r0, [r5]
movs r4, 0x58
muls r0, r4
@@ -433,7 +433,7 @@ _0806C08C:
cmp r3, 0
beq _0806C0D2
ldr r7, =gBattleMons
- ldr r5, =gActiveBank
+ ldr r5, =gActiveBattler
ldrb r0, [r5]
movs r4, 0x58
muls r0, r4
@@ -467,7 +467,7 @@ _0806C0D2:
bl _0806CD4C
_0806C0E0:
ldr r6, =gBattleMons
- ldr r5, =gActiveBank
+ ldr r5, =gActiveBattler
ldrb r0, [r5]
movs r4, 0x58
muls r0, r4
@@ -506,9 +506,9 @@ _0806C120:
cmp r0, 0
beq _0806C168
ldr r5, =gSideTimers
- ldr r4, =gActiveBank
+ ldr r4, =gActiveBattler
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
@@ -519,7 +519,7 @@ _0806C120:
cmp r0, 0
bne _0806C168
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
@@ -965,7 +965,7 @@ _0806C4FC:
ldr r3, [sp, 0x38]
cmp r3, 0x4
beq _0806C55C
- ldr r2, =gAbsentBankFlags
+ ldr r2, =gAbsentBattlerFlags
ldr r1, =gBitTable
lsls r0, r3, 2
adds r0, r1
@@ -973,7 +973,7 @@ _0806C4FC:
ldrb r0, [r2]
bics r0, r1
strb r0, [r2]
- ldr r1, =gBattlePartyID
+ ldr r1, =gBattlerPartyIndexes
lsls r0, r3, 1
adds r0, r1
ldrb r0, [r0]
@@ -983,14 +983,14 @@ _0806C4FC:
lsrs r1, 24
ldr r0, [sp, 0x38]
bl CopyPlayerPartyMonToBattleData
- ldr r0, =gActiveBank
+ ldr r0, =gActiveBattler
ldrb r0, [r0]
b _0806C574
.pool
_0806C55C:
- ldr r3, =gAbsentBankFlags
+ ldr r3, =gAbsentBattlerFlags
ldr r1, =gBitTable
- ldr r2, =gActiveBank
+ ldr r2, =gActiveBattler
ldrb r0, [r2]
eors r0, r4
lsls r0, 2
@@ -1001,7 +1001,7 @@ _0806C55C:
strb r0, [r3]
ldrb r0, [r2]
_0806C574:
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0806C5B2
@@ -1135,9 +1135,9 @@ _0806C65E:
ands r0, r3
cmp r0, 0
bne _0806C6EC
- ldr r4, =gActiveBank
+ ldr r4, =gActiveBattler
ldrb r0, [r4]
- bl GetBankSide
+ bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _0806C6EC
@@ -1155,9 +1155,9 @@ _0806C6AE:
movs r0, 0
movs r1, 0
movs r2, 0
- bl EmitGetMonData
+ bl BtlController_EmitGetMonData
ldrb r0, [r4]
- bl MarkBufferBankForExecution
+ bl MarkBattlerForControllerExec
strb r5, [r4]
b _0806C6EC
.pool
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 8fc10ba29..2ff444f56 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -211,7 +211,7 @@ _080C72AC:
bl sub_81973A4
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -627,7 +627,7 @@ sub_80C75FC: @ 80C75FC
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
adds r0, r4, 0
movs r1, 0x5
mov r2, r8
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index a04939c12..a94d69b96 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5756,7 +5756,7 @@ sub_81C6F90: @ 81C6F90
adds r0, r4, 0
adds r1, r4, 0
adds r2, r6, 0
- bl AddItemIconObject
+ bl AddItemIconSprite
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 2b5450d3e..680752c85 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -7890,7 +7890,7 @@ _081CAF34:
adds r0, r5, 0
bl sub_81D1BD0
adds r4, r0, 0
- ldr r0, =gUnknown_0831F578
+ ldr r0, =gFacilityClassToPicIndex
adds r0, r4, r0
ldrb r0, [r0]
b _081CAF6C
@@ -28880,7 +28880,7 @@ sub_81D5530: @ 81D5530
lsls r1, 24
adds r0, r1
lsrs r0, 24
- ldr r2, =gTrainerClassToNameIndex
+ ldr r2, =gFacilityClassToTrainerClass
ldr r1, =gUnknown_0203CF58
ldr r1, [r1]
adds r1, 0x16
@@ -28947,7 +28947,7 @@ sub_81D5588: @ 81D5588
adds r3, r0
ldrb r4, [r3, 0x1B]
bl sub_81D5710
- ldr r0, =gUnknown_0831F578
+ ldr r0, =gFacilityClassToPicIndex
adds r4, r0
ldrb r0, [r4]
pop {r4}
@@ -30656,7 +30656,7 @@ sub_81D63C8: @ 81D63C8
ldrb r4, [r3, 0x1B]
bl sub_81D5710
movs r2, 0
- ldr r0, =gTrainerClassToNameIndex
+ ldr r0, =gFacilityClassToTrainerClass
adds r4, r0
ldrb r3, [r4]
ldr r1, =gUnknown_0862A3B4
diff --git a/asm/rayquaza_scene.s b/asm/rayquaza_scene.s
deleted file mode 100644
index 8832d3942..000000000
--- a/asm/rayquaza_scene.s
+++ /dev/null
@@ -1,5972 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81D6720
-sub_81D6720: @ 81D6720
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r4, r0, 0
- adds r5, r1, 0
- mov r8, r2
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r6, =gUnknown_0203CF60
- ldr r0, =0x00002018
- bl AllocZeroed
- str r0, [r6]
- ldr r1, =0x00002006
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r6]
- mov r1, r8
- str r1, [r0]
- ldr r1, =0x00002007
- adds r0, r1
- strb r5, [r0]
- ldr r0, =sub_81D6774
- bl SetMainCallback2
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D6720
-
- thumb_func_start sub_81D6774
-sub_81D6774: @ 81D6774
- push {lr}
- bl SetVBlankHBlankCallbacksToNull
- bl clear_scheduled_bg_copies_to_vram
- bl ScanlineEffect_Stop
- bl FreeAllSpritePalettes
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- movs r0, 0
- movs r1, 0xF0
- movs r2, 0x20
- bl FillPalette
- ldr r1, =gUnknown_0862A6A0
- ldr r0, =gUnknown_0203CF60
- ldr r0, [r0]
- ldr r2, =0x00002006
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl CreateTask
- ldr r0, =sub_81D67D0
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D6774
-
- thumb_func_start sub_81D67D0
-sub_81D67D0: @ 81D67D0
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_81D67D0
-
- thumb_func_start sub_81D67EC
-sub_81D67EC: @ 81D67EC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81D67EC
-
- thumb_func_start sub_81D6800
-sub_81D6800: @ 81D6800
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081D6830
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r4, =gUnknown_0203CF60
- ldr r0, [r4]
- ldr r0, [r0]
- bl SetMainCallback2
- ldr r0, [r4]
- bl Free
- adds r0, r5, 0
- bl DestroyTask
-_081D6830:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D6800
-
- thumb_func_start sub_81D6840
-sub_81D6840: @ 81D6840
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r6, r3, 0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _081D68B2
- ldr r2, =gUnknown_0203CF60
- ldr r1, [r2]
- ldr r4, =0x00002007
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081D6888
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81D6800
- b _081D68B0
- .pool
-_081D6888:
- ldr r4, =0x00002006
- adds r1, r4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r2, [r2]
- ldr r1, =0x00002004
- adds r0, r2, r1
- strh r5, [r0]
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r3, =gUnknown_0862A6A0
- adds r2, r4
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
-_081D68B0:
- str r0, [r1]
-_081D68B2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D6840
-
- thumb_func_start sub_81D68C8
-sub_81D68C8: @ 81D68C8
- push {lr}
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- ldr r1, =0x00001888
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, =gPlttBufferUnfaded
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gPlttBufferFaded
- strh r1, [r0]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D68C8
-
- thumb_func_start sub_81D6904
-sub_81D6904: @ 81D6904
- push {lr}
- movs r0, 0x48
- movs r1, 0x3F
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x3F
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_81D6904
-
- thumb_func_start sub_81D691C
-sub_81D691C: @ 81D691C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- bl sub_81D750C
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081D697E
- movs r0, 0
- ldrsh r1, [r5, r0]
- cmp r1, 0x40
- bne _081D6954
- bl sub_81D7438
- b _081D6978
- .pool
-_081D6954:
- cmp r1, 0x90
- bne _081D695E
- bl sub_81D7480
- b _081D6978
-_081D695E:
- cmp r1, 0x94
- beq _081D6974
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- bne _081D6978
- adds r0, r4, 0
- movs r1, 0
- bl sub_81D75B4
- b _081D697E
-_081D6974:
- bl sub_81D74C8
-_081D6978:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_081D697E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81D691C
-
- thumb_func_start sub_81D6984
-sub_81D6984: @ 81D6984
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, =gUnknown_0862A72C
- mov r8, r0
- movs r1, 0x58
- movs r2, 0x48
- movs r3, 0x3
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, =gSprites
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r0, r6, 0
- adds r0, 0x1C
- adds r0, r4, r0
- ldr r1, =sub_81D6A20
- str r1, [r0]
- adds r0, r6, 0
- adds r0, 0x2E
- adds r4, r0
- mov r0, r8
- movs r1, 0x38
- movs r2, 0x68
- movs r3, 0x3
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- ldr r0, =gUnknown_0862A750
- movs r1, 0x4B
- movs r2, 0x65
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x2]
- ldr r0, =gUnknown_0862A774
- movs r1, 0x6D
- movs r2, 0x72
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAnim
- adds r0, r5, 0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D6984
-
- thumb_func_start sub_81D6A20
-sub_81D6A20: @ 81D6A20
- push {r4,lr}
- adds r3, r0, 0
- movs r0, 0x2E
- adds r0, r3
- mov r12, r0
- ldrh r0, [r0, 0xA]
- adds r0, 0x1
- movs r1, 0x1F
- ands r0, r1
- mov r1, r12
- strh r0, [r1, 0xA]
- cmp r0, 0
- bne _081D6A84
- ldrh r1, [r3, 0x20]
- movs r2, 0x20
- ldrsh r0, [r3, r2]
- cmp r0, 0x48
- beq _081D6A84
- subs r0, r1, 0x1
- strh r0, [r3, 0x20]
- ldr r2, =gSprites
- movs r4, 0x2E
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- mov r0, r12
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- mov r0, r12
- movs r4, 0x4
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
-_081D6A84:
- adds r0, r3, 0
- adds r0, 0x2B
- ldrb r3, [r0]
- cmp r3, 0x1
- beq _081D6AE4
- cmp r3, 0x1
- bgt _081D6A9C
- cmp r3, 0
- beq _081D6AA6
- b _081D6B68
- .pool
-_081D6A9C:
- cmp r3, 0x2
- beq _081D6B24
- cmp r3, 0x3
- beq _081D6AE4
- b _081D6B68
-_081D6AA6:
- ldr r2, =gSprites
- mov r0, r12
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- mov r0, r12
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
- mov r0, r12
- movs r4, 0x4
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- mov r0, r12
- movs r4, 0x4
- ldrsh r1, [r0, r4]
- b _081D6B5E
- .pool
-_081D6AE4:
- ldr r2, =gSprites
- mov r0, r12
- movs r3, 0x2
- ldrsh r1, [r0, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x24]
- mov r4, r12
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r3, 0
- strh r3, [r0, 0x26]
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x1
- negs r1, r1
- b _081D6B58
- .pool
-_081D6B24:
- ldr r2, =gSprites
- mov r3, r12
- movs r4, 0x2
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x24]
- movs r0, 0x2
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r3, 0x1
- strh r3, [r0, 0x26]
- mov r4, r12
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000fffe
-_081D6B58:
- strh r1, [r0, 0x24]
- movs r0, 0x4
- ldrsh r1, [r4, r0]
-_081D6B5E:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
-_081D6B68:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D6A20
-
- thumb_func_start sub_81D6B7C
-sub_81D6B7C: @ 81D6B7C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r5, =gUnknown_0862A81C
- adds r0, r5, 0
- movs r1, 0x88
- movs r2, 0x60
- movs r3, 0x1
- bl CreateSprite
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r6, =gSprites
- lsls r4, r0, 4
- add r4, r8
- lsls r4, 2
- adds r0, r6, 0
- adds r0, 0x1C
- adds r0, r4, r0
- ldr r1, =sub_81D6D20
- str r1, [r0]
- adds r0, r6, 0
- adds r0, 0x2E
- adds r4, r0
- adds r0, r5, 0
- movs r1, 0xA8
- movs r2, 0x60
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4]
- adds r0, r5, 0
- movs r1, 0x88
- movs r2, 0x70
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4]
- orrs r0, r1
- strh r0, [r4]
- adds r0, r5, 0
- movs r1, 0xA8
- movs r2, 0x70
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4, 0x2]
- adds r0, r5, 0
- movs r1, 0x88
- movs r2, 0x80
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- orrs r0, r1
- strh r0, [r4, 0x2]
- adds r0, r5, 0
- movs r1, 0xA8
- movs r2, 0x80
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4, 0x4]
- adds r0, r5, 0
- movs r1, 0x68
- movs r2, 0x80
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r0, r5, 0
- movs r1, 0x88
- movs r2, 0x80
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4, 0x6]
- adds r0, r5, 0
- movs r1, 0xB8
- movs r2, 0x80
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- orrs r0, r1
- strh r0, [r4, 0x6]
- ldr r0, =gUnknown_0862A84C
- movs r1, 0xD0
- movs r2, 0x84
- movs r3, 0
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4, 0x8]
- ldr r0, =gUnknown_0862A864
- movs r1, 0xC8
- movs r2, 0x78
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x8]
- orrs r0, r1
- strh r0, [r4, 0x8]
- ldrh r1, [r4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAnim
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x2
- bl StartSpriteAnim
- ldrh r1, [r4, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x3
- bl StartSpriteAnim
- ldrb r1, [r4, 0x2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x4
- bl StartSpriteAnim
- ldrh r1, [r4, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- bl StartSpriteAnim
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x6
- bl StartSpriteAnim
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x7
- bl StartSpriteAnim
- ldrb r1, [r4, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x8
- bl StartSpriteAnim
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D6B7C
-
- thumb_func_start sub_81D6D20
-sub_81D6D20: @ 81D6D20
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r3, r4, 0
- adds r3, 0x2E
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- movs r1, 0x1F
- ands r0, r1
- strh r0, [r3, 0xA]
- ldr r7, =gSprites
- cmp r0, 0
- bne _081D6E0E
- ldrh r1, [r4, 0x20]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x98
- beq _081D6E0E
- adds r0, r1, 0x1
- strh r0, [r4, 0x20]
- ldrh r1, [r4, 0x2E]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r4, 0x2E]
- movs r2, 0xFF
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0x2]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0x4]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0x6]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x8]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0x8]
- ands r2, r0
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
-_081D6E0E:
- adds r6, r7, 0
- movs r5, 0xFF
- ldrb r1, [r3, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x2B
- ldrb r2, [r0]
- cmp r2, 0x1
- beq _081D6EE0
- cmp r2, 0x1
- bgt _081D6E34
- cmp r2, 0
- beq _081D6E40
- b _081D6FC8
- .pool
-_081D6E34:
- cmp r2, 0x2
- bne _081D6E3A
- b _081D6F68
-_081D6E3A:
- cmp r2, 0x3
- beq _081D6EE0
- b _081D6FC8
-_081D6E40:
- strh r2, [r4, 0x26]
- ldrh r1, [r3]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r0, [r3]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x2]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x4]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x6]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x8]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x8]
- ands r1, r5
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- b _081D6FC6
-_081D6EE0:
- movs r2, 0x1
- strh r2, [r4, 0x26]
- ldrh r1, [r3]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3, 0x2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x8]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3, 0x8]
- b _081D6FBE
-_081D6F68:
- strh r2, [r4, 0x26]
- ldrh r1, [r3]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r0, [r3]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x2]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x8]
- ands r1, r5
-_081D6FBE:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
-_081D6FC6:
- strh r2, [r0, 0x26]
-_081D6FC8:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D6D20
-
- thumb_func_start sub_81D6FD0
-sub_81D6FD0: @ 81D6FD0
- push {lr}
- bl sub_81D67EC
- bl ScanlineEffect_InitHBlankDmaTransfer
- pop {r0}
- bx r0
- thumb_func_end sub_81D6FD0
-
- thumb_func_start sub_81D6FE0
-sub_81D6FE0: @ 81D6FE0
- push {r4,lr}
- bl ResetVramOamAndBgCntRegs
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_0862A888
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- adds r1, 0x4
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00000804
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00001004
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- bl ResetAllBgsCoordinates
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D6FE0
-
- thumb_func_start sub_81D706C
-sub_81D706C: @ 81D706C
- push {r4,lr}
- sub sp, 0x4
- bl reset_temp_tile_data_buffers
- ldr r1, =gRaySceneClouds_Gfx
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
-_081D7082:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D7082
- ldr r0, =gRaySceneClouds2_Tilemap
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- adds r1, 0x4
- bl LZDecompressWram
- ldr r0, =gRaySceneClouds1_Tilemap
- ldr r1, [r4]
- ldr r2, =0x00000804
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneClouds3_Tilemap
- ldr r1, [r4]
- ldr r2, =0x00001004
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneClouds_Pal
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- ldr r0, =gUnknown_0862A8C4
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862A8F8
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862A924
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862A9D4
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AA14
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AA34
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862A8CC
- bl LoadCompressedObjectPalette
- ldr r0, =gUnknown_0862A9DC
- bl LoadCompressedObjectPalette
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D706C
-
- thumb_func_start sub_81D7134
-sub_81D7134: @ 81D7134
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, =gTasks + 0x8
- adds r5, r6, r7
- bl ScanlineEffect_Clear
- bl sub_81D6FE0
- bl sub_81D706C
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r1, =gScanlineEffectRegBuffers
- ldr r2, =0x010003c0
- add r0, sp, 0x4
- bl CpuFastSet
- ldr r2, =gUnknown_0862A87C
- ldr r0, [r2]
- ldr r1, [r2, 0x4]
- ldr r2, [r2, 0x8]
- bl ScanlineEffect_SetParams
- strh r4, [r5]
- ldr r0, =sub_81D7228
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x2]
- ldr r0, =gUnknown_0203CF60
- ldr r0, [r0]
- ldr r1, =0x00002006
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081D71CC
- bl sub_81D6984
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x4]
- bl sub_81D6B7C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x6]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, =sub_81D691C
- str r1, [r0]
- b _081D71EE
- .pool
-_081D71CC:
- bl sub_81D7664
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x4]
- bl sub_81D78BC
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x6]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, =sub_81D736C
- str r1, [r0]
- bl StopMapMusic
-_081D71EE:
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =sub_81D6FD0
- bl SetVBlankCallback
- movs r0, 0x53
- bl PlaySE
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7134
-
- thumb_func_start sub_81D7228
-sub_81D7228: @ 81D7228
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r3, r1, r0
- movs r1, 0x18
- ldr r7, =gUnknown_0203CF60
- ldr r4, =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r5, r4, r0
-_081D7244:
- lsls r0, r1, 16
- asrs r1, r0, 16
- adds r6, r0, 0
- cmp r1, 0x2F
- bgt _081D726C
- lsls r1, 1
- adds r2, r1, r4
- ldrh r0, [r3]
- lsrs r0, 8
- strh r0, [r2]
- adds r1, r5
- ldrh r0, [r3]
- b _081D72CA
- .pool
-_081D726C:
- cmp r1, 0x3F
- bgt _081D7280
- lsls r1, 1
- adds r2, r1, r4
- ldrh r0, [r3, 0x2]
- lsrs r0, 8
- strh r0, [r2]
- adds r1, r5
- ldrh r0, [r3, 0x2]
- b _081D72CA
-_081D7280:
- cmp r1, 0x4B
- bgt _081D7294
- lsls r1, 1
- adds r2, r1, r4
- ldrh r0, [r3, 0x4]
- lsrs r0, 8
- strh r0, [r2]
- adds r1, r5
- ldrh r0, [r3, 0x4]
- b _081D72CA
-_081D7294:
- cmp r1, 0x53
- bgt _081D72A8
- lsls r1, 1
- adds r2, r1, r4
- ldrh r0, [r3, 0x6]
- lsrs r0, 8
- strh r0, [r2]
- adds r1, r5
- ldrh r0, [r3, 0x6]
- b _081D72CA
-_081D72A8:
- cmp r1, 0x57
- bgt _081D72BC
- lsls r1, 1
- adds r2, r1, r4
- ldrh r0, [r3, 0x8]
- lsrs r0, 8
- strh r0, [r2]
- adds r1, r5
- ldrh r0, [r3, 0x8]
- b _081D72CA
-_081D72BC:
- lsls r1, 1
- adds r2, r1, r4
- ldrh r0, [r3, 0xA]
- lsrs r0, 8
- strh r0, [r2]
- adds r1, r5
- ldrh r0, [r3, 0xA]
-_081D72CA:
- lsrs r0, 8
- strh r0, [r1]
- movs r1, 0x80
- lsls r1, 9
- adds r0, r6, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x5B
- ble _081D7244
- ldr r0, [r7]
- ldr r1, =0x00002006
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081D7324
- movs r1, 0xE0
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r3, 0x2]
- adds r0, r1
- strh r0, [r3, 0x2]
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r3, 0x4]
- adds r0, r1
- strh r0, [r3, 0x4]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r3, 0x6]
- adds r0, r1
- strh r0, [r3, 0x6]
- ldrh r0, [r3, 0x8]
- adds r0, 0xC0
- b _081D735E
- .pool
-_081D7324:
- movs r1, 0xC0
- lsls r1, 2
- adds r0, r1, 0
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- movs r1, 0xA0
- lsls r1, 2
- adds r0, r1, 0
- ldrh r1, [r3, 0x2]
- adds r0, r1
- strh r0, [r3, 0x2]
- movs r1, 0x80
- lsls r1, 2
- adds r0, r1, 0
- ldrh r1, [r3, 0x4]
- adds r0, r1
- strh r0, [r3, 0x4]
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r3, 0x6]
- adds r0, r1
- strh r0, [r3, 0x6]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r3, 0x8]
- adds r0, r1
-_081D735E:
- strh r0, [r3, 0x8]
- ldrh r0, [r3, 0xA]
- adds r0, 0x80
- strh r0, [r3, 0xA]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D7228
-
- thumb_func_start sub_81D736C
-sub_81D736C: @ 81D736C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r7, =gTasks + 0x8
- adds r4, r0, r7
- bl sub_81D750C
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _081D742E
- movs r0, 0
- ldrsh r1, [r4, r0]
- cmp r1, 0x20
- beq _081D739C
- cmp r1, 0x70
- bne _081D73AC
-_081D739C:
- bl sub_81D7438
- b _081D7428
- .pool
-_081D73AC:
- cmp r1, 0xD8
- bne _081D73B6
- bl sub_81D7480
- b _081D7428
-_081D73B6:
- cmp r1, 0xDC
- bne _081D73C0
- bl sub_81D74C8
- b _081D7428
-_081D73C0:
- movs r0, 0xBE
- lsls r0, 1
- cmp r1, r0
- beq _081D73D8
- adds r0, 0x20
- cmp r1, r0
- bne _081D7428
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_81D75B4
- b _081D742E
-_081D73D8:
- movs r1, 0x91
- lsls r1, 2
- movs r0, 0x50
- bl SetGpuReg
- adds r2, r7, 0
- subs r2, 0x8
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, =sub_81D752C
- str r1, [r0]
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- strh r6, [r0, 0x8]
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r4, 0x4]
- strh r1, [r0, 0xC]
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r4, 0x6]
- strh r1, [r0, 0xE]
- bl ScanlineEffect_Stop
-_081D7428:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_081D742E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D736C
-
- thumb_func_start sub_81D7438
-sub_81D7438: @ 81D7438
- push {r4,lr}
- sub sp, 0xC
- movs r0, 0x57
- bl PlaySE
- ldr r0, =0x00007fff
- ldr r1, =0x0000ffff
- str r1, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl sub_80A2C44
- ldr r0, =0xffff0000
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl sub_80A2C44
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7438
-
- thumb_func_start sub_81D7480
-sub_81D7480: @ 81D7480
- push {r4,lr}
- sub sp, 0xC
- movs r0, 0x57
- bl PlaySE
- ldr r0, =0x00007fff
- ldr r1, =0x0000ffff
- str r1, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0x10
- bl sub_80A2C44
- ldr r0, =0xffff0000
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0x10
- bl sub_80A2C44
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7480
-
- thumb_func_start sub_81D74C8
-sub_81D74C8: @ 81D74C8
- push {r4,lr}
- sub sp, 0xC
- ldr r0, =0x00007fff
- ldr r1, =0x0000ffff
- str r1, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x4
- movs r2, 0x10
- movs r3, 0
- bl sub_80A2C44
- ldr r0, =0xffff0000
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- str r1, [sp, 0x8]
- movs r1, 0x4
- movs r2, 0x10
- movs r3, 0
- bl sub_80A2C44
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D74C8
-
- thumb_func_start sub_81D750C
-sub_81D750C: @ 81D750C
- push {lr}
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0x2
- movs r2, 0x1
- bl ChangeBgX
- movs r1, 0x80
- lsls r1, 4
- movs r0, 0x2
- movs r2, 0x2
- bl ChangeBgY
- pop {r0}
- bx r0
- thumb_func_end sub_81D750C
-
- thumb_func_start sub_81D752C
-sub_81D752C: @ 81D752C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r5, r1, r0
- movs r0, 0x4
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- bl sub_81D7860
- movs r0, 0x6
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl sub_81D7D14
- movs r0, 0x1
- bl GetBgY
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x1
- bl GetBgY
- cmp r0, 0
- beq _081D757A
- movs r0, 0x80
- lsls r0, 8
- cmp r4, r0
- bls _081D7586
-_081D757A:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0x1
- movs r2, 0x2
- bl ChangeBgY
-_081D7586:
- ldrh r2, [r5]
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x10
- beq _081D75A6
- adds r2, 0x1
- strh r2, [r5]
- lsls r1, r2, 8
- movs r0, 0x10
- subs r0, r2
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_081D75A6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D752C
-
- thumb_func_start sub_81D75B4
-sub_81D75B4: @ 81D75B4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x54
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- lsls r4, 24
- asrs r4, 24
- movs r1, 0
- str r1, [sp]
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81D7600
- str r1, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D75B4
-
- thumb_func_start sub_81D7600
-sub_81D7600: @ 81D7600
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, =gTasks + 0x8
- adds r5, r6, r7
- bl sub_81D750C
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081D7652
- ldrb r0, [r5, 0x2]
- bl DestroyTask
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0
- bl SetVBlankCallback
- bl ScanlineEffect_Stop
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- strh r4, [r5]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, =sub_81D6840
- str r1, [r0]
-_081D7652:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7600
-
- thumb_func_start sub_81D7664
-sub_81D7664: @ 81D7664
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, =gUnknown_0862A8D4
- mov r8, r0
- movs r1, 0x62
- movs r2, 0x48
- movs r3, 0x3
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, =gSprites
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- adds r0, r6, 0
- adds r0, 0x1C
- adds r0, r4, r0
- ldr r1, =sub_81D7700
- str r1, [r0]
- adds r0, r6, 0
- adds r0, 0x2E
- adds r4, r0
- mov r0, r8
- movs r1, 0x42
- movs r2, 0x68
- movs r3, 0x3
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- ldr r0, =gUnknown_0862A900
- movs r1, 0x55
- movs r2, 0x65
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x2]
- ldr r0, =gUnknown_0862A92C
- movs r1, 0x77
- movs r2, 0x72
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAnim
- adds r0, r5, 0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D7664
-
- thumb_func_start sub_81D7700
-sub_81D7700: @ 81D7700
- push {r4,lr}
- adds r3, r0, 0
- movs r0, 0x2E
- adds r0, r3
- mov r12, r0
- ldrh r0, [r0, 0xA]
- adds r0, 0x1
- movs r1, 0xF
- ands r0, r1
- mov r1, r12
- strh r0, [r1, 0xA]
- movs r1, 0x7
- ands r1, r0
- cmp r1, 0
- bne _081D7768
- ldrh r1, [r3, 0x20]
- movs r2, 0x20
- ldrsh r0, [r3, r2]
- cmp r0, 0x48
- beq _081D7768
- subs r0, r1, 0x1
- strh r0, [r3, 0x20]
- ldr r2, =gSprites
- movs r4, 0x2E
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- mov r0, r12
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
- mov r0, r12
- movs r4, 0x4
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x1
- strh r1, [r0, 0x20]
-_081D7768:
- adds r0, r3, 0
- adds r0, 0x2B
- ldrb r3, [r0]
- cmp r3, 0x1
- beq _081D77C8
- cmp r3, 0x1
- bgt _081D7780
- cmp r3, 0
- beq _081D778A
- b _081D784C
- .pool
-_081D7780:
- cmp r3, 0x2
- beq _081D7808
- cmp r3, 0x3
- beq _081D77C8
- b _081D784C
-_081D778A:
- ldr r2, =gSprites
- mov r0, r12
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- mov r0, r12
- movs r4, 0x2
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
- mov r0, r12
- movs r4, 0x4
- ldrsh r1, [r0, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- mov r0, r12
- movs r4, 0x4
- ldrsh r1, [r0, r4]
- b _081D7842
- .pool
-_081D77C8:
- ldr r2, =gSprites
- mov r0, r12
- movs r3, 0x2
- ldrsh r1, [r0, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x24]
- mov r4, r12
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r3, 0
- strh r3, [r0, 0x26]
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x1
- negs r1, r1
- b _081D783C
- .pool
-_081D7808:
- ldr r2, =gSprites
- mov r3, r12
- movs r4, 0x2
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x24]
- movs r0, 0x2
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r3, 0x1
- strh r3, [r0, 0x26]
- mov r4, r12
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000fffe
-_081D783C:
- strh r1, [r0, 0x24]
- movs r0, 0x4
- ldrsh r1, [r4, r0]
-_081D7842:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x26]
-_081D784C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7700
-
- thumb_func_start sub_81D7860
-sub_81D7860: @ 81D7860
- push {r4,lr}
- adds r1, r0, 0
- adds r3, r1, 0
- adds r3, 0x2E
- ldrh r2, [r1, 0x22]
- movs r4, 0x22
- ldrsh r0, [r1, r4]
- cmp r0, 0xA0
- bgt _081D78B0
- adds r0, r2, 0
- adds r0, 0x8
- strh r0, [r1, 0x22]
- ldr r2, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r1, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- movs r4, 0x2
- ldrsh r1, [r3, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- movs r0, 0x4
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
-_081D78B0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7860
-
- thumb_func_start sub_81D78BC
-sub_81D78BC: @ 81D78BC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r5, =gUnknown_0862A9E4
- adds r0, r5, 0
- movs r1, 0x7E
- movs r2, 0x60
- movs r3, 0x1
- bl CreateSprite
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r6, =gSprites
- lsls r4, r0, 4
- add r4, r8
- lsls r4, 2
- adds r0, r6, 0
- adds r0, 0x1C
- adds r0, r4, r0
- ldr r1, =sub_81D7A60
- str r1, [r0]
- adds r0, r6, 0
- adds r0, 0x2E
- adds r4, r0
- adds r0, r5, 0
- movs r1, 0x9E
- movs r2, 0x60
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4]
- adds r0, r5, 0
- movs r1, 0x7E
- movs r2, 0x70
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4]
- orrs r0, r1
- strh r0, [r4]
- adds r0, r5, 0
- movs r1, 0x9E
- movs r2, 0x70
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4, 0x2]
- adds r0, r5, 0
- movs r1, 0x7E
- movs r2, 0x80
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x2]
- orrs r0, r1
- strh r0, [r4, 0x2]
- adds r0, r5, 0
- movs r1, 0x9E
- movs r2, 0x80
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4, 0x4]
- adds r0, r5, 0
- movs r1, 0x5E
- movs r2, 0x80
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x4]
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r0, r5, 0
- movs r1, 0x7E
- movs r2, 0x80
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4, 0x6]
- adds r0, r5, 0
- movs r1, 0xAE
- movs r2, 0x80
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x6]
- orrs r0, r1
- strh r0, [r4, 0x6]
- ldr r0, =gUnknown_0862AA1C
- movs r1, 0xC6
- movs r2, 0x84
- movs r3, 0
- bl CreateSprite
- lsls r0, 8
- strh r0, [r4, 0x8]
- ldr r0, =gUnknown_0862AA3C
- movs r1, 0xBE
- movs r2, 0x78
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x8]
- orrs r0, r1
- strh r0, [r4, 0x8]
- ldrh r1, [r4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAnim
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x2
- bl StartSpriteAnim
- ldrh r1, [r4, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x3
- bl StartSpriteAnim
- ldrb r1, [r4, 0x2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x4
- bl StartSpriteAnim
- ldrh r1, [r4, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- bl StartSpriteAnim
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x6
- bl StartSpriteAnim
- ldrh r1, [r4, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x7
- bl StartSpriteAnim
- ldrb r1, [r4, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x8
- bl StartSpriteAnim
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D78BC
-
- thumb_func_start sub_81D7A60
-sub_81D7A60: @ 81D7A60
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r3, r4, 0
- adds r3, 0x2E
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- movs r1, 0xF
- ands r0, r1
- strh r0, [r3, 0xA]
- movs r1, 0x7
- ands r1, r0
- ldr r7, =gSprites
- cmp r1, 0
- bne _081D7B52
- ldrh r1, [r4, 0x20]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x98
- beq _081D7B52
- adds r0, r1, 0x1
- strh r0, [r4, 0x20]
- ldrh r1, [r4, 0x2E]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r4, 0x2E]
- movs r2, 0xFF
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0x2]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0x4]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0x6]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r1, [r3, 0x8]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
- ldrh r0, [r3, 0x8]
- ands r2, r0
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r7
- ldrh r1, [r0, 0x20]
- adds r1, 0x1
- strh r1, [r0, 0x20]
-_081D7B52:
- adds r6, r7, 0
- movs r5, 0xFF
- ldrb r1, [r3, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x2B
- ldrb r2, [r0]
- cmp r2, 0x1
- beq _081D7C24
- cmp r2, 0x1
- bgt _081D7B78
- cmp r2, 0
- beq _081D7B84
- b _081D7D0C
- .pool
-_081D7B78:
- cmp r2, 0x2
- bne _081D7B7E
- b _081D7CAC
-_081D7B7E:
- cmp r2, 0x3
- beq _081D7C24
- b _081D7D0C
-_081D7B84:
- strh r2, [r4, 0x26]
- ldrh r1, [r3]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r0, [r3]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x2]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x4]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x6]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x8]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x8]
- ands r1, r5
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- b _081D7D0A
-_081D7C24:
- movs r2, 0x1
- strh r2, [r4, 0x26]
- ldrh r1, [r3]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3, 0x2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x8]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrb r1, [r3, 0x8]
- b _081D7D02
-_081D7CAC:
- strh r2, [r4, 0x26]
- ldrh r1, [r3]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r0, [r3]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x2]
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x26]
- ldrh r1, [r3, 0x8]
- ands r1, r5
-_081D7D02:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
-_081D7D0A:
- strh r2, [r0, 0x26]
-_081D7D0C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D7A60
-
- thumb_func_start sub_81D7D14
-sub_81D7D14: @ 81D7D14
- push {lr}
- adds r2, r0, 0
- movs r0, 0x2E
- adds r0, r2
- mov r12, r0
- ldrh r1, [r2, 0x22]
- movs r3, 0x22
- ldrsh r0, [r2, r3]
- cmp r0, 0xA0
- bgt _081D7E08
- adds r0, r1, 0
- adds r0, 0x8
- strh r0, [r2, 0x22]
- ldr r3, =gSprites
- ldrh r1, [r2, 0x2E]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- ldrh r0, [r2, 0x2E]
- movs r2, 0xFF
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- mov r0, r12
- ldrh r1, [r0, 0x2]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- mov r1, r12
- ldrh r0, [r1, 0x2]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- mov r0, r12
- ldrh r1, [r0, 0x4]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- mov r1, r12
- ldrh r0, [r1, 0x4]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- mov r0, r12
- ldrh r1, [r0, 0x6]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- mov r1, r12
- ldrh r0, [r1, 0x6]
- adds r1, r2, 0
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- mov r0, r12
- ldrh r1, [r0, 0x8]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- mov r1, r12
- ldrh r0, [r1, 0x8]
- ands r2, r0
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
-_081D7E08:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7D14
-
- thumb_func_start sub_81D7E10
-sub_81D7E10: @ 81D7E10
- push {r4,lr}
- bl ResetVramOamAndBgCntRegs
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_0862AA54
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- adds r1, 0x4
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00000804
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00001004
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- bl ResetAllBgsCoordinates
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7E10
-
- thumb_func_start sub_81D7E9C
-sub_81D7E9C: @ 81D7E9C
- push {r4,lr}
- sub sp, 0x4
- bl reset_temp_tile_data_buffers
- ldr r1, =gRaySceneClouds_Gfx
- movs r4, 0
- str r4, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gRaySceneOvercast_Gfx
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gRaySceneRayquaza_Gfx
- str r4, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
-_081D7ED0:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D7ED0
- ldr r0, =gRaySceneClouds2_Tilemap
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- adds r1, 0x4
- bl LZDecompressWram
- ldr r0, =gRaySceneOvercast_Tilemap
- ldr r1, [r4]
- ldr r2, =0x00000804
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneRayquaza_Tilemap
- ldr r1, [r4]
- ldr r2, =0x00001004
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneRayquaza_Pal
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- ldr r0, =gUnknown_0862AA90
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AA98
- bl LoadCompressedObjectPalette
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7E9C
-
- thumb_func_start sub_81D7F4C
-sub_81D7F4C: @ 81D7F4C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r5, =gTasks + 0x8
- adds r6, r4, r5
- movs r0, 0xE8
- lsls r0, 1
- bl PlayNewMapMusic
- bl sub_81D7E10
- bl sub_81D7E9C
- movs r1, 0x94
- lsls r1, 2
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x00000808
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, =sub_81D67EC
- bl SetVBlankCallback
- ldr r0, =sub_81D81A4
- movs r1, 0
- bl CreateTask
- movs r0, 0
- strh r0, [r6]
- strh r0, [r6, 0x2]
- subs r5, 0x8
- adds r4, r5
- ldr r0, =sub_81D7FC0
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D7F4C
-
- thumb_func_start sub_81D7FC0
-sub_81D7FC0: @ 81D7FC0
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r0, 0
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _081D802A
- cmp r5, 0x1
- bgt _081D7FE8
- cmp r5, 0
- beq _081D7FF4
- b _081D815A
- .pool
-_081D7FE8:
- cmp r5, 0x2
- beq _081D80A4
- cmp r5, 0x3
- bne _081D7FF2
- b _081D8124
-_081D7FF2:
- b _081D815A
-_081D7FF4:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- bne _081D8024
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- strh r5, [r4, 0x4]
- movs r0, 0x1E
- strh r0, [r4, 0x6]
- strh r5, [r4, 0x8]
- movs r0, 0x7
- strh r0, [r4, 0xA]
- strh r5, [r4, 0x2]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _081D815A
-_081D8024:
- adds r0, r1, 0x1
- strh r0, [r4, 0x2]
- b _081D815A
-_081D802A:
- ldrh r1, [r4, 0x6]
- ldrh r3, [r4, 0x4]
- adds r0, r1, r3
- strh r0, [r4, 0x4]
- ldrh r2, [r4, 0xA]
- ldrh r3, [r4, 0x8]
- adds r0, r2, r3
- strh r0, [r4, 0x8]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _081D8046
- subs r0, r1, 0x3
- strh r0, [r4, 0x6]
-_081D8046:
- lsls r0, r2, 16
- cmp r0, 0
- beq _081D8050
- subs r0, r2, 0x1
- strh r0, [r4, 0xA]
-_081D8050:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0xFF
- ble _081D8078
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r4, 0x4]
- movs r1, 0
- strh r1, [r4, 0x6]
- movs r0, 0xC
- strh r0, [r4, 0xC]
- movs r3, 0x1
- negs r3, r3
- adds r0, r3, 0
- strh r0, [r4, 0xE]
- strh r1, [r4, 0x2]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_081D8078:
- movs r1, 0xF0
- lsls r1, 7
- movs r2, 0xC0
- lsls r2, 5
- ldrh r0, [r4, 0x8]
- adds r0, 0x20
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- str r0, [sp, 0x4]
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- str r0, [sp, 0x8]
- movs r0, 0
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r3, 0x78
- bl SetBgAffine
- b _081D815A
-_081D80A4:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- movs r1, 0xF0
- lsls r1, 7
- movs r2, 0xC0
- lsls r2, 5
- ldrh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 18
- adds r0, 0x20
- ldrh r3, [r4, 0x8]
- adds r0, r3
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- str r0, [sp, 0x4]
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- str r0, [sp, 0x8]
- movs r5, 0
- str r5, [sp, 0xC]
- movs r0, 0x2
- movs r3, 0x78
- bl SetBgAffine
- ldrh r0, [r4, 0xE]
- ldrh r1, [r4, 0xC]
- adds r0, r1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0xC
- beq _081D80F4
- movs r0, 0xC
- negs r0, r0
- cmp r1, r0
- bne _081D815A
-_081D80F4:
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- negs r0, r0
- strh r0, [r4, 0xE]
- movs r3, 0x2
- ldrsh r1, [r4, r3]
- ldr r0, =0x00000127
- cmp r1, r0
- ble _081D815A
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0x6
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _081D815A
- .pool
-_081D8124:
- ldrh r0, [r4, 0x4]
- adds r0, 0x10
- strh r0, [r4, 0x4]
- movs r1, 0xF0
- lsls r1, 7
- movs r2, 0xC0
- lsls r2, 5
- ldrh r0, [r4, 0x8]
- adds r0, 0x20
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- str r0, [sp, 0x4]
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- str r0, [sp, 0x8]
- movs r0, 0
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r3, 0x78
- bl SetBgAffine
- adds r0, r6, 0
- bl sub_81D8164
-_081D815A:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81D7FC0
-
- thumb_func_start sub_81D8164
-sub_81D8164: @ 81D8164
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081D8192
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81D6840
- str r0, [r1]
-_081D8192:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8164
-
- thumb_func_start sub_81D81A4
-sub_81D81A4: @ 81D81A4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r1, [r4, 0x2]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081D8254
- ldr r0, =gUnknown_0862AAA0
- ldr r3, =gUnknown_0862AAB8
- movs r1, 0
- ldrsh r2, [r4, r1]
- lsls r2, 1
- adds r1, r2, r3
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 18
- movs r6, 0xF0
- lsls r6, 15
- adds r1, r6
- asrs r1, 16
- adds r3, 0x1
- adds r2, r3
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r2, 18
- movs r3, 0xA0
- lsls r3, 15
- adds r2, r3
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r1
- movs r0, 0
- ldrsb r0, [r4, r0]
- strh r0, [r3, 0x2E]
- ldrb r2, [r3, 0x1]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- movs r2, 0x3
- orrs r0, r2
- strb r0, [r3, 0x1]
- ldrb r0, [r3, 0x5]
- ands r1, r0
- movs r0, 0x8
- orrs r1, r0
- strb r1, [r3, 0x5]
- adds r0, r3, 0
- bl InitSpriteAffineAnim
- ldrh r1, [r4]
- movs r6, 0
- ldrsh r0, [r4, r6]
- cmp r0, 0x9
- bne _081D8250
- adds r0, r5, 0
- bl DestroyTask
- b _081D825A
- .pool
-_081D8250:
- adds r0, r1, 0x1
- strh r0, [r4]
-_081D8254:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
-_081D825A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81D81A4
-
- thumb_func_start sub_81D8260
-sub_81D8260: @ 81D8260
- push {lr}
- adds r2, r0, 0
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _081D8270
- strh r0, [r2, 0x24]
- b _081D829A
-_081D8270:
- ldr r1, =gUnknown_0862AAB8
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r3, [r2, 0x24]
- adds r0, r3
- strh r0, [r2, 0x24]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r2, 0x26]
- adds r0, r1
-_081D829A:
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- movs r1, 0xF
- ands r0, r1
- strh r0, [r2, 0x30]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8260
-
- thumb_func_start sub_81D82B0
-sub_81D82B0: @ 81D82B0
- push {r4,lr}
- bl ResetVramOamAndBgCntRegs
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_0862AACC
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- adds r1, 0x4
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00000804
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00001004
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00001804
- adds r1, r0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl ResetAllBgsCoordinates
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D82B0
-
- thumb_func_start sub_81D8358
-sub_81D8358: @ 81D8358
- push {r4-r7,lr}
- sub sp, 0xC
- bl reset_temp_tile_data_buffers
- ldr r1, =gRaySceneRayquazaLight_Gfx
- movs r4, 0
- str r4, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gRaySceneOvercast2_Gfx
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- add r7, sp, 0x8
-_081D8380:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _081D8380
- ldr r0, =gRaySceneRayquazaLight_Tilemap
- ldr r5, =gUnknown_0203CF60
- ldr r1, [r5]
- adds r1, 0x4
- bl LZDecompressWram
- ldr r0, =gRaySceneOvercast2_Tilemap
- ldr r1, [r5]
- ldr r4, =0x00001804
- adds r1, r4
- bl LZDecompressWram
- str r6, [sp, 0x4]
- ldr r1, [r5]
- ldr r0, =0x00001004
- adds r1, r0
- ldr r2, =0x01000200
- add r0, sp, 0x4
- bl CpuFastSet
- ldr r1, [r5]
- adds r4, r1, r4
- ldr r0, =0x00000804
- adds r1, r0
- movs r2, 0x80
- lsls r2, 2
- adds r0, r4, 0
- bl CpuFastSet
- str r6, [sp, 0x8]
- ldr r1, [r5]
- ldr r0, =0x00000904
- adds r1, r0
- ldr r2, =0x010000d0
- adds r0, r7, 0
- bl CpuFastSet
- ldr r0, =gRaySceneOvercast2_Pal
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- ldr r0, =gPlttBufferUnfaded
- ldr r1, =0x00007fff
- strh r1, [r0]
- ldr r0, =gPlttBufferFaded
- strh r1, [r0]
- ldr r0, =gUnknown_0862AAFC
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AB04
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AB0C
- bl LoadCompressedObjectPalette
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8358
-
- thumb_func_start sub_81D844C
-sub_81D844C: @ 81D844C
- push {r4,r5,lr}
- movs r0, 0x6
- bl GetGpuReg
- lsls r0, 16
- lsrs r2, r0, 16
- adds r1, r2, 0
- subs r1, 0x18
- lsls r0, r1, 16
- lsrs r0, 16
- cmp r0, 0x6F
- bhi _081D848C
- ldr r0, =gUnknown_0203CF60
- ldr r0, [r0]
- ldr r3, =0x00002008
- adds r0, r3
- movs r3, 0
- ldrsh r0, [r0, r3]
- cmp r1, r0
- bgt _081D848C
- ldr r1, =0x04000052
- ldr r3, =0x00000d08
- b _081D8492
- .pool
-_081D848C:
- ldr r1, =0x04000052
- movs r3, 0x80
- lsls r3, 5
-_081D8492:
- adds r0, r3, 0
- strh r0, [r1]
- cmp r2, 0
- bne _081D84E0
- ldr r0, =gUnknown_0203CF60
- ldr r1, [r0]
- ldr r2, =0x00002008
- adds r3, r1, r2
- ldrh r4, [r3]
- movs r1, 0
- ldrsh r2, [r3, r1]
- ldr r1, =0x00001fff
- adds r5, r0, 0
- cmp r2, r1
- bgt _081D84D4
- cmp r2, 0x27
- bgt _081D84C8
- adds r0, r4, 0x4
- b _081D84D2
- .pool
-_081D84C8:
- cmp r2, 0x4F
- bgt _081D84D0
- adds r0, r4, 0x2
- b _081D84D2
-_081D84D0:
- adds r0, r4, 0x1
-_081D84D2:
- strh r0, [r3]
-_081D84D4:
- ldr r1, [r5]
- ldr r2, =0x0000200a
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_081D84E0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D844C
-
- thumb_func_start sub_81D84EC
-sub_81D84EC: @ 81D84EC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r6, =gTasks + 0x8
- adds r5, r4, r6
- bl sub_81D82B0
- bl sub_81D8358
- ldr r1, =0x00001e41
- movs r0, 0x50
- bl SetGpuRegBits
- movs r0, 0x80
- lsls r0, 5
- mov r8, r0
- movs r0, 0x52
- mov r1, r8
- bl SetGpuReg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, =sub_81D67EC
- bl SetVBlankCallback
- ldr r0, =gUnknown_0203CF60
- ldr r0, [r0]
- ldr r1, =0x00002008
- adds r2, r0, r1
- movs r1, 0
- strh r1, [r2]
- ldr r2, =0x0000200a
- adds r0, r2
- strh r1, [r0]
- strh r1, [r5]
- strh r1, [r5, 0x2]
- strh r1, [r5, 0x4]
- strh r1, [r5, 0x6]
- mov r0, r8
- strh r0, [r5, 0x8]
- subs r6, 0x8
- adds r4, r6
- ldr r0, =sub_81D857C
- str r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D84EC
-
- thumb_func_start sub_81D857C
-sub_81D857C: @ 81D857C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bhi _081D8674
- lsls r0, 2
- ldr r1, =_081D85A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081D85A8:
- .4byte _081D85BC
- .4byte _081D85DC
- .4byte _081D861A
- .4byte _081D863A
- .4byte _081D8656
-_081D85BC:
- ldrh r1, [r5, 0x2]
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- cmp r0, 0x8
- bne _081D8634
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- strh r4, [r5, 0x2]
- b _081D864E
-_081D85DC:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _081D8674
- ldrh r2, [r5, 0x2]
- movs r3, 0x2
- ldrsh r0, [r5, r3]
- cmp r0, 0xA
- bne _081D8614
- strh r1, [r5, 0x2]
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- ldr r0, =sub_81D844C
- bl SetHBlankCallback
- movs r0, 0x3
- bl EnableInterrupts
- b _081D8674
- .pool
-_081D8614:
- adds r0, r2, 0x1
- strh r0, [r5, 0x2]
- b _081D8674
-_081D861A:
- ldrh r1, [r5, 0x2]
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- cmp r0, 0x50
- bne _081D8634
- movs r0, 0
- strh r0, [r5, 0x2]
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- bl sub_81D86CC
- b _081D8674
-_081D8634:
- adds r0, r1, 0x1
- strh r0, [r5, 0x2]
- b _081D8674
-_081D863A:
- ldrh r0, [r5, 0x2]
- adds r0, 0x1
- strh r0, [r5, 0x2]
- lsls r0, 16
- movs r1, 0xB8
- lsls r1, 17
- cmp r0, r1
- bne _081D8674
- movs r0, 0
- strh r0, [r5, 0x2]
-_081D864E:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- b _081D8674
-_081D8656:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81D8684
- str r1, [r0]
-_081D8674:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D857C
-
- thumb_func_start sub_81D8684
-sub_81D8684: @ 81D8684
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081D86B8
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81D6840
- str r0, [r1]
-_081D86B8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8684
-
- thumb_func_start sub_81D86CC
-sub_81D86CC: @ 81D86CC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, =gUnknown_0862AB14
- movs r1, 0xA0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r5, r6, 4
- adds r5, r6
- lsls r5, 2
- ldr r4, =gSprites + 0x2E
- adds r0, r5, r4
- mov r8, r0
- ldr r0, =gUnknown_0862AB2C
- movs r2, 0x30
- negs r2, r2
- movs r1, 0xB8
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- strh r0, [r1]
- adds r3, r4, 0
- subs r3, 0x2E
- subs r4, 0x12
- adds r4, r5, r4
- ldr r0, =sub_81D874C
- str r0, [r4]
- adds r5, r3
- ldrb r0, [r5, 0x5]
- movs r2, 0xC
- orrs r0, r2
- strb r0, [r5, 0x5]
- movs r4, 0
- ldrsh r1, [r1, r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x5]
- orrs r1, r2
- strb r1, [r0, 0x5]
- adds r0, r6, 0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D86CC
-
- thumb_func_start sub_81D874C
-sub_81D874C: @ 81D874C
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r5, 0
- adds r4, 0x2E
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _081D8764
- movs r0, 0xC
- strh r0, [r4, 0x6]
- movs r0, 0x8
- b _081D87C2
-_081D8764:
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bne _081D8774
- movs r0, 0x9
- strh r0, [r4, 0x6]
- movs r0, 0x7
- b _081D87C2
-_081D8774:
- movs r0, 0x86
- lsls r0, 1
- cmp r1, r0
- bne _081D8784
- movs r0, 0x8
- strh r0, [r4, 0x6]
- movs r0, 0x6
- b _081D87C2
-_081D8784:
- movs r0, 0x8C
- lsls r0, 1
- cmp r1, r0
- bne _081D8794
- movs r0, 0x7
- strh r0, [r4, 0x6]
- movs r0, 0x5
- b _081D87C2
-_081D8794:
- movs r0, 0x92
- lsls r0, 1
- cmp r1, r0
- bne _081D87A4
- movs r0, 0x6
- strh r0, [r4, 0x6]
- movs r0, 0x4
- b _081D87C2
-_081D87A4:
- movs r0, 0x98
- lsls r0, 1
- cmp r1, r0
- bne _081D87B4
- movs r0, 0x5
- strh r0, [r4, 0x6]
- movs r0, 0x3
- b _081D87C2
-_081D87B4:
- movs r0, 0xA0
- lsls r0, 1
- cmp r1, r0
- bne _081D87C4
- movs r0, 0x4
- strh r0, [r4, 0x6]
- movs r0, 0x2
-_081D87C2:
- strh r0, [r4, 0x8]
-_081D87C4:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- movs r2, 0x6
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _081D87EE
- ldrh r0, [r5, 0x24]
- subs r0, 0x1
- strh r0, [r5, 0x24]
- ldr r2, =gSprites
- movs r0, 0
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- subs r1, 0x1
- strh r1, [r0, 0x24]
-_081D87EE:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- movs r2, 0x8
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _081D8818
- ldrh r0, [r5, 0x26]
- adds r0, 0x1
- strh r0, [r5, 0x26]
- ldr r2, =gSprites
- movs r0, 0
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x1
- strh r1, [r0, 0x26]
-_081D8818:
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D874C
-
- thumb_func_start sub_81D8828
-sub_81D8828: @ 81D8828
- push {r4,lr}
- bl ResetVramOamAndBgCntRegs
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_0862AB44
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- adds r1, 0x4
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00000804
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00001004
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00001804
- adds r1, r0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl ResetAllBgsCoordinates
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0xC1
- lsls r1, 6
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8828
-
- thumb_func_start sub_81D88D0
-sub_81D88D0: @ 81D88D0
- push {r4,lr}
- sub sp, 0x4
- bl reset_temp_tile_data_buffers
- ldr r1, =gRaySceneRayquazaChase_Gfx
- movs r4, 0
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gRaySceneChaseStreaks_Gfx
- str r4, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gRaySceneChaseBg_Gfx
- str r4, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
-_081D8904:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D8904
- ldr r0, =gRayChaseRayquazaChase2_Tilemap
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- adds r1, 0x4
- bl LZDecompressWram
- ldr r0, =gRayChaseRayquazaChase_Tilemap
- ldr r1, [r4]
- ldr r2, =0x00000804
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneChaseStreaks_Tilemap
- ldr r1, [r4]
- ldr r2, =0x00001004
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneChaseBg_Tilemap
- ldr r1, [r4]
- ldr r2, =0x00001804
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneChase_Pal
- movs r1, 0
- movs r2, 0x80
- bl LoadCompressedPalette
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D88D0
-
- thumb_func_start sub_81D8980
-sub_81D8980: @ 81D8980
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r5, =gTasks + 0x8
- adds r6, r4, r5
- bl sub_81D8828
- bl sub_81D88D0
- bl sub_81D68C8
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, =sub_81D67EC
- bl SetVBlankCallback
- movs r0, 0
- strh r0, [r6]
- strh r0, [r6, 0x2]
- ldr r0, =sub_81D8AD8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x4]
- subs r5, 0x8
- adds r4, r5
- ldr r0, =sub_81D89E0
- str r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8980
-
- thumb_func_start sub_81D89E0
-sub_81D89E0: @ 81D89E0
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- bl sub_81D8BB4
- ldrh r1, [r4, 0x6]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _081D8A16
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bgt _081D8A16
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x59
- bgt _081D8A16
- movs r0, 0x67
- bl PlaySE
-_081D8A16:
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
- movs r0, 0
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _081D8A5C
- cmp r5, 0x1
- bgt _081D8A34
- cmp r5, 0
- beq _081D8A3E
- b _081D8AC6
- .pool
-_081D8A34:
- cmp r5, 0x2
- beq _081D8A8C
- cmp r5, 0x3
- beq _081D8AA8
- b _081D8AC6
-_081D8A3E:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- bne _081D8AA2
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- strh r5, [r4, 0x2]
- b _081D8A9A
-_081D8A5C:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x7F
- bne _081D8AA2
- movs r0, 0
- strh r0, [r4, 0x2]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldr r2, =gTasks
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, =sub_81D8B2C
- b _081D8AC4
- .pool
-_081D8A8C:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0xC
- bne _081D8AA2
- movs r0, 0
- strh r0, [r4, 0x2]
-_081D8A9A:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _081D8AC6
-_081D8AA2:
- adds r0, r1, 0x1
- strh r0, [r4, 0x2]
- b _081D8AC6
-_081D8AA8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81D8BEC
-_081D8AC4:
- str r1, [r0]
-_081D8AC6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D89E0
-
- thumb_func_start sub_81D8AD8
-sub_81D8AD8: @ 81D8AD8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r5, r1, r0
- ldrh r1, [r5, 0x1E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081D8B1C
- bl Random
- movs r4, 0x7
- adds r1, r4, 0
- ands r1, r0
- subs r1, 0x4
- lsls r1, 8
- movs r0, 0x1
- movs r2, 0
- bl ChangeBgX
- bl Random
- ands r4, r0
- subs r4, 0x4
- lsls r4, 8
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0
- bl ChangeBgY
-_081D8B1C:
- ldrh r0, [r5, 0x1E]
- adds r0, 0x1
- strh r0, [r5, 0x1E]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8AD8
-
- thumb_func_start sub_81D8B2C
-sub_81D8B2C: @ 81D8B2C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r4, r1, r0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081D8B70
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- movs r0, 0xA
- strh r0, [r4, 0x2]
- movs r1, 0x1
- negs r1, r1
- adds r0, r1, 0
- b _081D8BAA
- .pool
-_081D8B70:
- cmp r0, 0x1
- bne _081D8BAC
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r1, 8
- movs r0, 0x1
- movs r2, 0x2
- bl ChangeBgX
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r1, 8
- movs r0, 0x1
- movs r2, 0x1
- bl ChangeBgY
- ldrh r0, [r4, 0x4]
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xA
- negs r1, r1
- cmp r0, r1
- bne _081D8BAC
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- negs r0, r0
-_081D8BAA:
- strh r0, [r4, 0x4]
-_081D8BAC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81D8B2C
-
- thumb_func_start sub_81D8BB4
-sub_81D8BB4: @ 81D8BB4
- push {r4,lr}
- movs r4, 0x80
- lsls r4, 3
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0x2
- bl ChangeBgX
- movs r0, 0x2
- adds r1, r4, 0
- movs r2, 0x1
- bl ChangeBgY
- movs r4, 0x80
- lsls r4, 4
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0x2
- bl ChangeBgX
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl ChangeBgY
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81D8BB4
-
- thumb_func_start sub_81D8BEC
-sub_81D8BEC: @ 81D8BEC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r5, r1, 3
- ldr r6, =gTasks + 0x8
- adds r4, r5, r6
- bl sub_81D8BB4
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081D8C26
- movs r0, 0
- bl SetVBlankCallback
- bl sub_81D6904
- ldrb r0, [r4, 0x4]
- bl DestroyTask
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, =sub_81D6840
- str r1, [r0]
-_081D8C26:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8BEC
-
- thumb_func_start sub_81D8C38
-sub_81D8C38: @ 81D8C38
- push {r4,lr}
- bl ResetVramOamAndBgCntRegs
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_0862AD08
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- adds r1, 0x4
- movs r0, 0
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00000804
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00001004
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- bl ResetAllBgsCoordinates
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0xC1
- lsls r1, 6
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8C38
-
- thumb_func_start sub_81D8CC4
-sub_81D8CC4: @ 81D8CC4
- push {r4,lr}
- sub sp, 0x4
- bl reset_temp_tile_data_buffers
- ldr r1, =gRaySceneHushRing_Gfx
- movs r4, 0
- str r4, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- ldr r1, =gRaySceneHushBg_Gfx
- str r4, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
-_081D8CEA:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _081D8CEA
- ldr r0, =gRaySceneHushRing_Tilemap
- ldr r4, =gUnknown_0203CF60
- ldr r1, [r4]
- ldr r2, =0x00000804
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneHushBg_Tilemap
- ldr r1, [r4]
- adds r1, 0x4
- bl LZDecompressWram
- ldr r0, =gRaySceneHushRing_Map
- ldr r1, [r4]
- ldr r2, =0x00001004
- adds r1, r2
- bl LZDecompressWram
- ldr r0, =gRaySceneHushBg_Pal
- movs r1, 0
- movs r2, 0x60
- bl LoadCompressedPalette
- ldr r0, =gUnknown_0862AC28
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AC30
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AC38
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AC40
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AC48
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AC50
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0862AC58
- bl LoadCompressedObjectPalette
- ldr r0, =gUnknown_0862AC60
- bl LoadCompressedObjectPalette
- ldr r0, =gUnknown_0862AC68
- bl LoadCompressedObjectPalette
- ldr r0, =gUnknown_0862AC70
- bl LoadCompressedObjectPalette
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8CC4
-
- thumb_func_start sub_81D8DB4
-sub_81D8DB4: @ 81D8DB4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r5, =gTasks + 0x8
- adds r6, r4, r5
- bl sub_81D8C38
- bl sub_81D8CC4
- bl sub_81D68C8
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl ClearGpuRegBits
- ldr r1, =0x00000241
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x00000e09
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, =sub_81D67EC
- bl SetVBlankCallback
- movs r0, 0
- strh r0, [r6]
- strh r0, [r6, 0x2]
- subs r5, 0x8
- adds r4, r5
- ldr r0, =sub_81D8E80
- str r0, [r4]
- ldr r0, =sub_81D8FB0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x4]
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0
- strh r2, [r0, 0x8]
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r2, [r0, 0xA]
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r2, [r0, 0xC]
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0x1
- strh r2, [r0, 0xE]
- movs r0, 0x4
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r2, [r0, 0x10]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8DB4
-
- thumb_func_start sub_81D8E80
-sub_81D8E80: @ 81D8E80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r7, r0, 3
- ldr r0, =gTasks + 0x8
- mov r8, r0
- adds r4, r7, r0
- movs r1, 0
- ldrsh r5, [r4, r1]
- cmp r5, 0x1
- beq _081D8EDE
- cmp r5, 0x1
- bgt _081D8EB0
- cmp r5, 0
- beq _081D8EBA
- b _081D8FA0
- .pool
-_081D8EB0:
- cmp r5, 0x2
- beq _081D8F1E
- cmp r5, 0x3
- beq _081D8F84
- b _081D8FA0
-_081D8EBA:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- bne _081D8F18
- adds r0, r6, 0
- bl sub_81D90A8
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- strh r5, [r4, 0x2]
- b _081D8F30
-_081D8EDE:
- ldr r2, =gSprites
- movs r0, 0xA
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, =sub_81D97E0
- cmp r1, r0
- bne _081D8FA0
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x40
- bne _081D8F18
- adds r0, r6, 0
- bl sub_81D94D4
- adds r0, r6, 0
- bl sub_81D93D8
- b _081D8F2C
- .pool
-_081D8F18:
- adds r0, r1, 0x1
- strh r0, [r4, 0x2]
- b _081D8FA0
-_081D8F1E:
- ldrh r2, [r4, 0x2]
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- movs r0, 0xE0
- lsls r0, 1
- cmp r1, r0
- bne _081D8F38
-_081D8F2C:
- movs r0, 0
- strh r0, [r4, 0x2]
-_081D8F30:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _081D8FA0
-_081D8F38:
- adds r0, r2, 0x1
- strh r0, [r4, 0x2]
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- movs r1, 0x90
- bl __modsi3
- lsls r0, 16
- asrs r4, r0, 16
- cmp r4, 0
- bne _081D8FA0
- ldr r0, =0x0000fffe
- ldr r1, =0x0000ffff
- str r1, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl sub_80A2C44
- ldr r0, =0xffff0000
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl sub_80A2C44
- b _081D8FA0
- .pool
-_081D8F84:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, =sub_81D9034
- str r1, [r0]
-_081D8FA0:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8E80
-
- thumb_func_start sub_81D8FB0
-sub_81D8FB0: @ 81D8FB0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r4, r1, r0
- ldrh r1, [r4]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081D9024
- ldrh r1, [r4, 0x2]
- adds r1, 0xE
- lsls r1, 8
- movs r2, 0xF8
- lsls r2, 5
- adds r0, r2, 0
- ands r1, r0
- ldrh r0, [r4, 0x4]
- adds r0, 0x9
- movs r2, 0xF
- ands r0, r2
- orrs r1, r0
- movs r0, 0x52
- bl SetGpuReg
- ldrh r1, [r4, 0x2]
- ldrh r0, [r4, 0x6]
- subs r1, r0
- strh r1, [r4, 0x2]
- ldrh r0, [r4, 0x8]
- ldrh r2, [r4, 0x4]
- adds r0, r2
- strh r0, [r4, 0x4]
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x3
- negs r0, r0
- cmp r1, r0
- beq _081D9008
- cmp r1, 0
- bne _081D9010
-_081D9008:
- movs r1, 0x6
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x6]
-_081D9010:
- movs r2, 0x4
- ldrsh r0, [r4, r2]
- cmp r0, 0x3
- beq _081D901C
- cmp r0, 0
- bne _081D9024
-_081D901C:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- negs r0, r0
- strh r0, [r4, 0x8]
-_081D9024:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D8FB0
-
- thumb_func_start sub_81D9034
-sub_81D9034: @ 81D9034
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r6, r1, 3
- ldr r7, =gTasks + 0x8
- adds r4, r6, r7
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _081D90A0
- bl StopMapMusic
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081D9078
- movs r0, 0
- bl SetVBlankCallback
- bl sub_81D6904
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldrb r0, [r4, 0x4]
- bl DestroyTask
-_081D9078:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x20
- bne _081D909C
- strh r5, [r4, 0x2]
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, =sub_81D6840
- str r1, [r0]
- b _081D90A0
- .pool
-_081D909C:
- adds r0, r1, 0x1
- strh r0, [r4, 0x2]
-_081D90A0:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D9034
-
- thumb_func_start sub_81D90A8
-sub_81D90A8: @ 81D90A8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, =gTasks + 0x8
- adds r4, r0
- ldr r0, =gUnknown_0862AC78
- movs r1, 0x40
- movs r2, 0x78
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x6]
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites + 0x2E
- mov r10, r1
- adds r7, r0, r1
- ldr r0, =gUnknown_0862AC90
- movs r1, 0x10
- movs r2, 0x82
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7]
- movs r2, 0x2E
- negs r2, r2
- add r2, r10
- mov r8, r2
- movs r1, 0x6
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x5]
- movs r6, 0xD
- negs r6, r6
- adds r0, r6, 0
- ands r0, r2
- movs r2, 0x4
- mov r9, r2
- mov r2, r9
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r1, 0
- ldrsh r0, [r7, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x5]
- adds r0, r6, 0
- ands r0, r2
- mov r2, r9
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldr r5, =gUnknown_0862ACA8
- adds r0, r5, 0
- movs r1, 0xA0
- movs r2, 0x80
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x8]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r1, r10
- adds r7, r0, r1
- adds r0, r5, 0
- movs r1, 0xC0
- movs r2, 0x80
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7]
- adds r0, r5, 0
- movs r1, 0xE0
- movs r2, 0x80
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x2]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x5]
- adds r0, r6, 0
- ands r0, r2
- mov r2, r9
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r1, 0
- ldrsh r0, [r7, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x5]
- adds r0, r6, 0
- ands r0, r2
- mov r2, r9
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x5]
- adds r0, r6, 0
- ands r0, r2
- mov r2, r9
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r0, 0
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x1
- bl StartSpriteAnim
- movs r2, 0x2
- ldrsh r1, [r7, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x2
- bl StartSpriteAnim
- ldr r0, =gUnknown_0862ACC0
- movs r2, 0x41
- negs r2, r2
- movs r1, 0x78
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- movs r0, 0xA
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r1, r10
- adds r7, r0, r1
- ldr r0, =gUnknown_0862ACD8
- movs r2, 0x71
- negs r2, r2
- movs r1, 0x78
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x5]
- adds r0, r6, 0
- ands r0, r2
- mov r2, r9
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r0, 0
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r1, [r0, 0x5]
- ands r6, r1
- orrs r6, r2
- strb r6, [r0, 0x5]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D90A8
-
- thumb_func_start sub_81D9274
-sub_81D9274: @ 81D9274
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r0, =gTasks + 0x8
- adds r2, r0
- ldr r3, =gSprites
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- movs r1, 0x1C
- adds r1, r3
- mov r8, r1
- add r0, r8
- ldr r6, =pokemon_alive_on_battle_side
- str r6, [r0]
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r4, 0
- strh r4, [r0, 0x36]
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r4, [r0, 0x38]
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r5, 0x4
- strh r5, [r0, 0x3A]
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r4, [r0, 0x3C]
- movs r0, 0x8
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- str r6, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r4, [r0, 0x36]
- movs r0, 0x8
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r4, [r0, 0x38]
- movs r0, 0x8
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r5, [r0, 0x3A]
- movs r0, 0x8
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x1
- strh r1, [r0, 0x3C]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D9274
-
- thumb_func_start pokemon_alive_on_battle_side
-pokemon_alive_on_battle_side: @ 81D9338
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x36]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _081D93CC
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081D9370
- ldrh r0, [r4, 0x20]
- ldrh r3, [r4, 0x3A]
- subs r0, r3
- strh r0, [r4, 0x20]
- ldr r2, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, r3
- b _081D939E
- .pool
-_081D9370:
- ldrh r2, [r4, 0x3A]
- ldrh r1, [r4, 0x20]
- adds r0, r2, r1
- strh r0, [r4, 0x20]
- ldr r3, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x20]
- adds r2, r1
- strh r2, [r0, 0x20]
- movs r2, 0x30
- ldrsh r1, [r4, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r4, 0x3A]
- ldrh r2, [r0, 0x20]
- adds r1, r2
-_081D939E:
- strh r1, [r0, 0x20]
- ldrh r1, [r4, 0x38]
- adds r1, 0x1
- movs r2, 0
- strh r1, [r4, 0x38]
- ldrh r0, [r4, 0x3A]
- subs r0, r1
- strh r0, [r4, 0x3A]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x3
- bne _081D93CC
- strh r2, [r4, 0x36]
- strh r2, [r4, 0x38]
- strh r2, [r4, 0x3A]
- ldr r0, =SpriteCallbackDummy
- str r0, [r4, 0x1C]
- b _081D93D2
- .pool
-_081D93CC:
- ldrh r0, [r4, 0x36]
- adds r0, 0x1
- strh r0, [r4, 0x36]
-_081D93D2:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end pokemon_alive_on_battle_side
-
- thumb_func_start sub_81D93D8
-sub_81D93D8: @ 81D93D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r0, =gTasks + 0x8
- adds r2, r0
- ldr r3, =gSprites
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r3, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_81D9420
- str r1, [r0]
- movs r0, 0x6
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x1
- bl StartSpriteAnim
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D93D8
-
- thumb_func_start sub_81D9420
-sub_81D9420: @ 81D9420
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081D9488
- cmp r0, 0x1
- bgt _081D9436
- cmp r0, 0
- beq _081D9440
- b _081D94C4
-_081D9436:
- cmp r0, 0x2
- beq _081D9440
- cmp r0, 0x3
- beq _081D9488
- b _081D94C4
-_081D9440:
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r0, 26
- movs r1, 0xC
- bl __umodsi3
- lsls r0, 24
- ldr r2, =gSprites
- cmp r0, 0
- bne _081D9470
- ldrh r0, [r4, 0x20]
- subs r0, 0x2
- strh r0, [r4, 0x20]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x20]
- subs r1, 0x2
- strh r1, [r0, 0x20]
-_081D9470:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x26]
- b _081D94C4
- .pool
-_081D9488:
- ldr r2, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =0x0000fffe
- strh r1, [r0, 0x26]
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- lsls r1, 26
- lsrs r1, 26
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081D94C4
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x1
- strh r1, [r0, 0x22]
-_081D94C4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D9420
-
- thumb_func_start sub_81D94D4
-sub_81D94D4: @ 81D94D4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r1, r0
- movs r0, 0x8
- ldrsh r1, [r1, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r2, =gSprites + 0x2E
- adds r4, r0, r2
- subs r2, 0x12
- adds r0, r2
- ldr r3, =sub_81D9528
- str r3, [r0]
- movs r0, 0
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- str r3, [r0]
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- str r3, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D94D4
-
- thumb_func_start sub_81D9528
-sub_81D9528: @ 81D9528
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- ldrh r1, [r7, 0x36]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081D9550
- ldrh r1, [r7, 0x24]
- movs r2, 0x24
- ldrsh r0, [r7, r2]
- cmp r0, 0x1
- bne _081D954C
- ldr r0, =0x0000ffff
- b _081D954E
- .pool
-_081D954C:
- movs r0, 0x1
-_081D954E:
- strh r0, [r7, 0x24]
-_081D9550:
- movs r1, 0x38
- ldrsh r0, [r7, r1]
- cmp r0, 0x80
- bne _081D95CE
- ldr r2, =gUnknown_0862ACF0
- mov r8, r2
- mov r0, r8
- movs r1, 0x98
- movs r2, 0x84
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x3C]
- ldr r5, =gSprites
- movs r1, 0x3C
- ldrsh r0, [r7, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- movs r6, 0x4
- orrs r0, r6
- strb r0, [r1, 0x5]
- mov r0, r8
- movs r1, 0xE0
- movs r2, 0x84
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x3C]
- movs r2, 0x3C
- ldrsh r1, [r7, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x5]
- ands r4, r1
- orrs r4, r6
- strb r4, [r0, 0x5]
- movs r0, 0x3C
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- ldrh r0, [r7, 0x38]
- adds r0, 0x1
- strh r0, [r7, 0x38]
-_081D95CE:
- ldrh r1, [r7, 0x38]
- movs r2, 0x38
- ldrsh r0, [r7, r2]
- cmp r0, 0x7F
- ble _081D95F8
- movs r1, 0x26
- ldrsh r0, [r7, r1]
- cmp r0, 0x20
- beq _081D95FC
- ldrh r0, [r7, 0x3A]
- adds r0, 0x1
- strh r0, [r7, 0x3A]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r7, 0x26]
- b _081D95FC
- .pool
-_081D95F8:
- adds r0, r1, 0x1
- strh r0, [r7, 0x38]
-_081D95FC:
- ldrh r0, [r7, 0x36]
- movs r1, 0x3F
- ands r0, r1
- cmp r0, 0
- bne _081D960C
- movs r0, 0xA5
- bl PlaySE
-_081D960C:
- ldrh r0, [r7, 0x36]
- adds r0, 0x1
- strh r0, [r7, 0x36]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D9528
-
- thumb_func_start sub_81D961C
-sub_81D961C: @ 81D961C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- cmp r1, 0x40
- bgt _081D968C
- ldrh r0, [r4, 0x26]
- adds r0, 0x2
- strh r0, [r4, 0x26]
- ldr r5, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x26]
- adds r1, 0x2
- strh r1, [r0, 0x26]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0x40
- beq _081D964C
- b _081D979E
-_081D964C:
- movs r3, 0x30
- negs r3, r3
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_81D9868
- movs r2, 0x5
- strh r2, [r4, 0x36]
- ldr r0, =0x0000ffff
- strh r0, [r4, 0x38]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x3
- strh r1, [r0, 0x36]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x38]
- b _081D979E
- .pool
-_081D968C:
- cmp r1, 0x6F
- bgt _081D96BE
- adds r0, r4, 0
- bl sub_81D97E0
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081D96A4
- movs r0, 0x68
- bl PlaySE
-_081D96A4:
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- movs r0, 0x3
- negs r0, r0
- cmp r1, r0
- bne _081D979E
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0x30
- movs r3, 0x10
- bl sub_81D9868
- b _081D979E
-_081D96BE:
- cmp r1, 0x70
- bne _081D96EC
- ldr r2, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x7
- strh r1, [r0, 0x36]
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x3
- strh r1, [r0, 0x38]
- b _081D96F2
- .pool
-_081D96EC:
- ldr r0, =0x00000147
- cmp r1, r0
- bgt _081D9700
-_081D96F2:
- adds r0, r4, 0
- bl sub_81D97E0
- b _081D979E
- .pool
-_081D9700:
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- bne _081D974C
- adds r0, r4, 0
- bl sub_81D97E0
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0x30
- movs r3, 0x10
- bl sub_81D9868
- movs r3, 0x1
- strh r3, [r4, 0x24]
- ldr r2, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- movs r0, 0xCB
- lsls r0, 1
- movs r1, 0
- bl PlayCry1
- ldr r0, =sub_81D98B4
- movs r1, 0
- bl CreateTask
- b _081D979E
- .pool
-_081D974C:
- movs r0, 0xB0
- lsls r0, 1
- cmp r1, r0
- beq _081D9790
- adds r0, 0x18
- cmp r1, r0
- bne _081D979E
- movs r3, 0
- strh r3, [r4, 0x24]
- ldr r2, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x24]
- adds r0, r4, 0
- bl sub_81D97E0
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0x30
- movs r3, 0x10
- bl sub_81D9868
- ldr r0, =sub_81D97E0
- str r0, [r4, 0x1C]
- b _081D97D2
- .pool
-_081D9790:
- ldr r0, =sub_81D8E80
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl sub_81D9274
-_081D979E:
- ldrh r2, [r4, 0x3C]
- movs r0, 0x3C
- ldrsh r1, [r4, r0]
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- ble _081D97CC
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _081D97CC
- movs r1, 0x24
- ldrsh r2, [r4, r1]
- negs r2, r2
- strh r2, [r4, 0x24]
- ldr r3, =gSprites
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x24]
-_081D97CC:
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
-_081D97D2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D961C
-
- thumb_func_start sub_81D97E0
-sub_81D97E0: @ 81D97E0
- push {r4-r7,lr}
- adds r3, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, =gSprites
- adds r4, r0, r5
- ldrh r1, [r3, 0x3A]
- ldrh r0, [r4, 0x36]
- ands r0, r1
- cmp r0, 0
- bne _081D985C
- ldrh r2, [r3, 0x36]
- ldrh r1, [r3, 0x26]
- adds r0, r2, r1
- strh r0, [r3, 0x26]
- movs r7, 0x2E
- ldrsh r1, [r3, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x26]
- adds r2, r1
- strh r2, [r0, 0x26]
- ldrh r0, [r3, 0x38]
- ldrh r2, [r3, 0x36]
- adds r0, r2
- strh r0, [r3, 0x36]
- lsls r0, 16
- asrs r5, r0, 16
- ldrh r6, [r4, 0x38]
- movs r7, 0x38
- ldrsh r2, [r4, r7]
- cmp r5, r2
- bge _081D9836
- movs r0, 0x36
- ldrsh r1, [r3, r0]
- adds r0, r2, 0
- cmn r1, r0
- bgt _081D985C
-_081D9836:
- cmp r5, r2
- ble _081D9844
- strh r6, [r3, 0x36]
- b _081D9854
- .pool
-_081D9844:
- movs r0, 0x36
- ldrsh r1, [r3, r0]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmn r1, r0
- bge _081D9854
- negs r0, r6
- strh r0, [r3, 0x36]
-_081D9854:
- movs r7, 0x38
- ldrsh r0, [r3, r7]
- negs r0, r0
- strh r0, [r3, 0x38]
-_081D985C:
- ldrh r0, [r3, 0x3A]
- adds r0, 0x1
- strh r0, [r3, 0x3A]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D97E0
-
- thumb_func_start sub_81D9868
-sub_81D9868: @ 81D9868
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r5, 24
- lsrs r5, 24
- movs r4, 0x2E
- ldrsh r1, [r0, r4]
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- ldr r1, =gSprites
- adds r4, r1
- lsls r2, 16
- asrs r2, 16
- ldrh r1, [r0, 0x20]
- adds r2, r1
- strh r2, [r4, 0x20]
- lsls r3, 16
- asrs r3, 16
- ldrh r1, [r0, 0x22]
- adds r3, r1
- strh r3, [r4, 0x22]
- ldrh r1, [r0, 0x24]
- strh r1, [r4, 0x24]
- ldrh r1, [r0, 0x26]
- strh r1, [r4, 0x26]
- adds r1, r5, 0
- bl StartSpriteAnim
- adds r0, r4, 0
- adds r1, r5, 0
- bl StartSpriteAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D9868
-
- thumb_func_start sub_81D98B4
-sub_81D98B4: @ 81D98B4
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r0, 0
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _081D990C
- cmp r1, 0x1
- bgt _081D98DC
- cmp r1, 0
- beq _081D98E2
- b _081D99B4
- .pool
-_081D98DC:
- cmp r1, 0x2
- beq _081D99A4
- b _081D99B4
-_081D98E2:
- movs r2, 0x80
- lsls r2, 7
- movs r0, 0x40
- str r0, [sp]
- adds r0, 0xC0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- movs r0, 0x2
- adds r1, r2, 0
- movs r3, 0x78
- bl SetBgAffine
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0x10
- strh r0, [r4, 0x8]
- b _081D9922
-_081D990C:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bne _081D991A
- movs r0, 0x12
- bl PlaySE
-_081D991A:
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- cmp r0, 0x2
- bne _081D992A
-_081D9922:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _081D99B4
-_081D992A:
- ldrh r5, [r4, 0x8]
- ldrh r1, [r4, 0x2]
- adds r0, r5, r1
- strh r0, [r4, 0x2]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r3, 0x6
- ldrsh r0, [r4, r3]
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _081D9954
- lsls r0, r5, 16
- asrs r0, 16
- cmp r0, 0x4
- beq _081D9954
- subs r0, r5, 0x2
- strh r0, [r4, 0x8]
-_081D9954:
- ldrh r0, [r4, 0x6]
- adds r0, 0x1
- strh r0, [r4, 0x6]
- movs r2, 0x80
- lsls r2, 7
- movs r0, 0x40
- str r0, [sp]
- ldrh r0, [r4, 0x2]
- movs r3, 0x80
- lsls r3, 1
- adds r1, r3, 0
- subs r0, r1, r0
- lsls r0, 16
- asrs r0, 16
- str r0, [sp, 0x4]
- ldrh r0, [r4, 0x2]
- subs r1, r0
- lsls r1, 16
- asrs r1, 16
- str r1, [sp, 0x8]
- movs r5, 0
- str r5, [sp, 0xC]
- movs r0, 0x2
- adds r1, r2, 0
- movs r3, 0x78
- bl SetBgAffine
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0xFF
- ble _081D99B4
- strh r5, [r4, 0x2]
- strh r5, [r4, 0x6]
- strh r5, [r4, 0xA]
- movs r0, 0x10
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- b _081D99B4
-_081D99A4:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl ClearGpuRegBits
- adds r0, r5, 0
- bl DestroyTask
-_081D99B4:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81D98B4
-
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
index a8e3c0081..2dab009a5 100644
--- a/asm/record_mixing.s
+++ b/asm/record_mixing.s
@@ -461,7 +461,7 @@ sub_80E70F4: @ 80E70F4
adds r4, r0, 0
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
movs r0, 0x1
str r0, [sp]
movs r0, 0
diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s
deleted file mode 100644
index b314afbf5..000000000
--- a/asm/reset_rtc_screen.s
+++ /dev/null
@@ -1,1342 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_809E8E8
-sub_809E8E8: @ 809E8E8
- push {lr}
- adds r3, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0xC
- ldrsh r1, [r0, r2]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r1, r0
- beq _0809E9FE
- strh r1, [r3, 0x30]
- subs r0, r1, 0x1
- cmp r0, 0x5
- bhi _0809E9FE
- lsls r0, 2
- ldr r1, =_0809E920
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0809E920:
- .4byte _0809E938
- .4byte _0809E95C
- .4byte _0809E980
- .4byte _0809E9A4
- .4byte _0809E9CE
- .4byte _0809E9F8
-_0809E938:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x35
- b _0809E9C6
-_0809E95C:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x56
- b _0809E9C6
-_0809E980:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x65
- b _0809E9C6
-_0809E9A4:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x74
-_0809E9C6:
- strh r0, [r3, 0x20]
- movs r0, 0x44
- strh r0, [r3, 0x22]
- b _0809E9FE
-_0809E9CE:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x2
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x42
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x99
- strh r0, [r3, 0x20]
- movs r0, 0x50
- strh r0, [r3, 0x22]
- b _0809E9FE
-_0809E9F8:
- adds r0, r3, 0
- bl DestroySprite
-_0809E9FE:
- pop {r0}
- bx r0
- thumb_func_end sub_809E8E8
-
- thumb_func_start sub_809EA04
-sub_809EA04: @ 809EA04
- push {lr}
- adds r3, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0xC
- ldrsh r1, [r0, r2]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r1, r0
- beq _0809EAFE
- strh r1, [r3, 0x30]
- subs r0, r1, 0x1
- cmp r0, 0x5
- bhi _0809EAFE
- lsls r0, 2
- ldr r1, =_0809EA3C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0809EA3C:
- .4byte _0809EA54
- .4byte _0809EA78
- .4byte _0809EA9C
- .4byte _0809EAC0
- .4byte _0809EAEA
- .4byte _0809EAF8
-_0809EA54:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x40
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x35
- b _0809EAE2
-_0809EA78:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x40
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x56
- b _0809EAE2
-_0809EA9C:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x40
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x65
- b _0809EAE2
-_0809EAC0:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x40
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x74
-_0809EAE2:
- strh r0, [r3, 0x20]
- movs r0, 0x5C
- strh r0, [r3, 0x22]
- b _0809EAFE
-_0809EAEA:
- adds r0, r3, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _0809EAFE
-_0809EAF8:
- adds r0, r3, 0
- bl DestroySprite
-_0809EAFE:
- pop {r0}
- bx r0
- thumb_func_end sub_809EA04
-
- thumb_func_start sub_809EB04
-sub_809EB04: @ 809EB04
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, =gUnknown_085104C4
- bl LoadSpritePalette
- ldr r0, =gSpriteTemplate_85104F0
- mov r8, r0
- movs r1, 0x35
- movs r2, 0x44
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r6, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r6, 0
- adds r4, 0x1C
- adds r2, r0, r4
- ldr r1, =sub_809E8E8
- str r1, [r2]
- adds r0, r6
- strh r5, [r0, 0x2E]
- ldr r1, =0x0000ffff
- strh r1, [r0, 0x30]
- mov r0, r8
- movs r1, 0x35
- movs r2, 0x44
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r4
- ldr r1, =sub_809EA04
- str r1, [r4]
- adds r0, r6
- strh r5, [r0, 0x2E]
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0, 0x30]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809EB04
-
- thumb_func_start sub_809EB8C
-sub_809EB8C: @ 809EB8C
- push {lr}
- ldr r0, =gUnknown_085104C4
- ldrh r0, [r0, 0x4]
- bl FreeSpritePaletteByTag
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809EB8C
-
- thumb_func_start sub_809EBA0
-sub_809EBA0: @ 809EBA0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl sub_8198070
- adds r0, r4, 0
- bl RemoveWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809EBA0
-
- thumb_func_start sub_809EBC4
-sub_809EBC4: @ 809EBC4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r10, r0
- adds r0, r1, 0
- mov r9, r2
- adds r1, r3, 0
- ldr r5, [sp, 0x30]
- ldr r6, [sp, 0x34]
- ldr r2, [sp, 0x38]
- mov r8, r2
- mov r2, r10
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- lsls r3, r0, 24
- lsrs r3, 24
- str r3, [sp, 0xC]
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r1, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r2, r8
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r7, =gStringVar4
- ldr r4, =gStringVar1
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- adds r7, r0, 0
- ldr r1, =gText_Day
- bl StringCopy
- adds r7, r0, 0
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- adds r7, r0, 0
- ldr r5, =gText_Colon3
- adds r1, r5, 0
- bl StringCopy
- adds r7, r0, 0
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- adds r7, r0, 0
- adds r1, r5, 0
- bl StringCopy
- adds r7, r0, 0
- adds r0, r4, 0
- mov r1, r8
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- ldr r2, =gStringVar4
- mov r0, r9
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r10
- movs r1, 0x1
- ldr r3, [sp, 0xC]
- bl PrintTextOnWindow
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809EBC4
-
- thumb_func_start sub_809ECB4
-sub_809ECB4: @ 809ECB4
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- adds r4, r0, 0
- mov r9, r1
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r0, [sp, 0x24]
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- mov r0, r9
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r2, 0x85
- lsls r2, 2
- adds r0, r4, 0
- movs r1, 0
- movs r3, 0xE
- bl SetWindowBorderStyle
- str r5, [sp]
- str r6, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x1
- mov r3, r9
- bl sub_809EBC4
- ldr r2, =gText_Confirm2
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- movs r3, 0x7E
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809ECB4
-
- thumb_func_start sub_809ED38
-sub_809ED38: @ 809ED38
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r3, 16
- lsrs r3, 16
- adds r1, r3, 0
- movs r0, 0x80
- ands r0, r3
- cmp r0, 0
- beq _0809ED52
- ldrh r0, [r4]
- subs r0, 0x1
- b _0809ED6C
-_0809ED52:
- movs r0, 0x40
- ands r0, r3
- cmp r0, 0
- beq _0809ED60
- ldrh r0, [r4]
- adds r0, 0x1
- b _0809ED8A
-_0809ED60:
- movs r0, 0x20
- ands r0, r3
- cmp r0, 0
- beq _0809ED7A
- ldrh r0, [r4]
- subs r0, 0xA
-_0809ED6C:
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, r5
- bge _0809ED96
- strh r2, [r4]
- b _0809ED96
-_0809ED7A:
- movs r0, 0x10
- ands r1, r0
- cmp r1, 0
- bne _0809ED86
- movs r0, 0
- b _0809ED98
-_0809ED86:
- ldrh r0, [r4]
- adds r0, 0xA
-_0809ED8A:
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, r2
- ble _0809ED96
- strh r5, [r4]
-_0809ED96:
- movs r0, 0x1
-_0809ED98:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809ED38
-
- thumb_func_start sub_809EDA0
-sub_809EDA0: @ 809EDA0
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
- bx lr
- .pool
- thumb_func_end sub_809EDA0
-
- thumb_func_start sub_809EDB8
-sub_809EDB8: @ 809EDB8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r5, =gTasks + 0x8
- adds r0, r4, r5
- ldrb r0, [r0, 0x10]
- bl sub_809EBA0
- bl sub_809EB8C
- subs r5, 0x8
- adds r4, r5
- ldr r0, =sub_809EDA0
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809EDB8
-
- thumb_func_start sub_809EDE8
-sub_809EDE8: @ 809EDE8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r7, r0, 3
- ldr r0, =gTasks + 0x8
- mov r8, r0
- adds r5, r7, r0
- ldrb r4, [r5, 0x4]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- ldr r1, =gUnknown_08510420 - 0x4
- adds r2, r0, r1
- ldr r1, =gMain
- ldrh r3, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r3
- mov r12, r1
- cmp r0, 0
- beq _0809EE3C
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, =sub_809EDB8
- str r1, [r0]
- movs r0, 0
- strh r0, [r5, 0x2]
- movs r0, 0x6
- b _0809EE5C
- .pool
-_0809EE3C:
- movs r0, 0x10
- ands r0, r3
- cmp r0, 0
- beq _0809EE4A
- ldrb r0, [r2, 0x7]
- cmp r0, 0
- bne _0809EE5C
-_0809EE4A:
- mov r3, r12
- ldrh r1, [r3, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0809EE66
- ldrb r0, [r2, 0x6]
- cmp r0, 0
- beq _0809EE66
-_0809EE5C:
- strh r0, [r5, 0x4]
- movs r0, 0x5
- bl PlaySE
- b _0809EEF4
-_0809EE66:
- cmp r4, 0x5
- bne _0809EEB4
- mov r0, r12
- ldrh r1, [r0, 0x2E]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0809EEF4
- ldr r1, =gLocalTime
- ldrh r0, [r5, 0x6]
- strh r0, [r1]
- ldrh r0, [r5, 0x8]
- strb r0, [r1, 0x2]
- ldrh r0, [r5, 0xA]
- strb r0, [r1, 0x3]
- ldrh r0, [r5, 0xC]
- strb r0, [r1, 0x4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_809EDB8
- str r1, [r0]
- strh r4, [r5, 0x2]
- movs r0, 0x6
- strh r0, [r5, 0x4]
- b _0809EEF4
- .pool
-_0809EEB4:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r5, r0
- ldrh r1, [r2, 0x2]
- ldrh r2, [r2, 0x4]
- mov r3, r12
- ldrh r4, [r3, 0x30]
- movs r3, 0xC0
- ands r3, r4
- bl sub_809ED38
- cmp r0, 0
- beq _0809EEF4
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r5, 0x10]
- ldrh r3, [r5, 0x6]
- ldrb r1, [r5, 0x8]
- str r1, [sp]
- ldrb r1, [r5, 0xA]
- str r1, [sp, 0x4]
- ldrb r1, [r5, 0xC]
- str r1, [sp, 0x8]
- movs r1, 0
- movs r2, 0x1
- bl sub_809EBC4
- ldrb r0, [r5, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
-_0809EEF4:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_809EDE8
-
- thumb_func_start sub_809EF00
-sub_809EF00: @ 809EF00
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, r0, 2
- add r6, r8
- lsls r6, 3
- ldr r0, =gTasks + 0x8
- mov r9, r0
- adds r5, r6, r0
- movs r0, 0
- strh r0, [r5]
- ldr r1, =gLocalTime
- ldrh r0, [r1]
- strh r0, [r5, 0x6]
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- strh r0, [r5, 0x8]
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- strh r0, [r5, 0xA]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- strh r0, [r5, 0xC]
- ldr r0, =gUnknown_08510420
- bl AddWindow
- strh r0, [r5, 0x10]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x6]
- ldrb r2, [r5, 0x8]
- ldrb r3, [r5, 0xA]
- ldrb r4, [r5, 0xC]
- str r4, [sp]
- bl sub_809ECB4
- mov r0, r8
- bl sub_809EB04
- movs r0, 0x2
- strh r0, [r5, 0x4]
- movs r0, 0x8
- negs r0, r0
- add r9, r0
- add r6, r9
- ldr r0, =sub_809EDE8
- str r0, [r6]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809EF00
-
- thumb_func_start sub_809EF88
-sub_809EF88: @ 809EF88
- push {r4-r7,lr}
- sub sp, 0x4
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl SetVBlankCallback
- movs r2, 0xA0
- lsls r2, 19
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, =0x040000d4
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, =0x81000200
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0809EFCA:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _0809EFCA
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- bl LoadOam
- bl ScanlineEffect_Stop
- bl ScanlineEffect_Clear
- bl ResetSpriteData
- bl ResetTasks
- bl ResetPaletteFade
- bl sub_809F048
- ldr r0, =sub_809F0AC
- bl SetVBlankCallback
- ldr r0, =sub_809F090
- bl SetMainCallback2
- ldr r0, =sub_809F200
- movs r1, 0x50
- bl CreateTask
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809EF88
-
- thumb_func_start sub_809F048
-sub_809F048: @ 809F048
- push {lr}
- bl clear_scheduled_bg_copies_to_vram
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_08510404
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- ldr r0, =gUnknown_08510408
- bl InitWindows
- bl DeactivateAllTextPrinters
- bl sub_81973A4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809F048
-
- thumb_func_start sub_809F090
-sub_809F090: @ 809F090
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_809F090
-
- thumb_func_start sub_809F0AC
-sub_809F0AC: @ 809F0AC
- push {lr}
- bl ProcessSpriteCopyRequests
- bl LoadOam
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_809F0AC
-
- thumb_func_start sub_809F0C0
-sub_809F0C0: @ 809F0C0
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- movs r2, 0x80
- lsls r2, 2
- movs r0, 0x1
- movs r1, 0
- movs r3, 0xF
- bl sub_8197B1C
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809F0C0
-
- thumb_func_start sub_809F0F8
-sub_809F0F8: @ 809F0F8
- push {r4-r7,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r6, r0, r1
- movs r0, 0
- ldrsh r5, [r6, r0]
- cmp r5, 0
- beq _0809F11C
- cmp r5, 0x1
- beq _0809F1B2
- b _0809F1F8
- .pool
-_0809F11C:
- movs r2, 0x85
- lsls r2, 2
- movs r0, 0
- movs r1, 0
- movs r3, 0xE
- bl SetWindowBorderStyle
- ldr r2, =gText_PresentTime
- movs r0, 0x1
- str r0, [sp]
- movs r4, 0xFF
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- ldr r1, =gLocalTime
- ldrh r3, [r1]
- ldrb r0, [r1, 0x2]
- str r0, [sp]
- ldrb r0, [r1, 0x3]
- str r0, [sp, 0x4]
- ldrb r0, [r1, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x11
- bl sub_809EBC4
- ldr r2, =gText_PreviousTime
- movs r0, 0x21
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xA0
- ldrh r3, [r0]
- adds r0, 0x2
- ldrb r0, [r0]
- str r0, [sp]
- adds r0, r1, 0
- adds r0, 0xA3
- ldrb r0, [r0]
- str r0, [sp, 0x4]
- adds r0, r1, 0
- adds r0, 0xA4
- ldrb r0, [r0]
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0x31
- bl sub_809EBC4
- ldr r0, =gText_ResetRTCConfirmCancel
- bl sub_809F0C0
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
-_0809F1B2:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809F1E4
- adds r0, r7, 0
- bl DestroyTask
- bl DoSoftReset
- b _0809F1F8
- .pool
-_0809F1E4:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809F1F8
- movs r0, 0x5
- bl PlaySE
- adds r0, r7, 0
- bl DestroyTask
-_0809F1F8:
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_809F0F8
-
- thumb_func_start sub_809F200
-sub_809F200: @ 809F200
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x6
- bls _0809F21C
- b _0809F404
-_0809F21C:
- lsls r0, 2
- ldr r1, =_0809F230
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0809F230:
- .4byte _0809F24C
- .4byte _0809F268
- .4byte _0809F2B4
- .4byte _0809F310
- .4byte _0809F398
- .4byte _0809F3C8
- .4byte _0809F3EA
-_0809F24C:
- movs r0, 0x1
- negs r0, r0
- ldr r1, =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x1
- strh r0, [r5]
- b _0809F404
- .pool
-_0809F268:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0809F276
- b _0809F404
-_0809F276:
- ldr r0, =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809F282
- cmp r0, 0x2
- bne _0809F29C
-_0809F282:
- ldr r0, =gText_NoSaveFileCantSetTime
- bl sub_809F0C0
- movs r0, 0x5
- strh r0, [r5]
- b _0809F404
- .pool
-_0809F29C:
- bl RtcCalcLocalTime
- ldr r0, =sub_809F0F8
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x2]
- b _0809F334
- .pool
-_0809F2B4:
- ldr r2, =gTasks
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x4]
- cmp r0, 0x1
- bne _0809F2CA
- b _0809F404
-_0809F2CA:
- movs r0, 0
- movs r1, 0
- bl sub_8198070
- ldr r0, =gText_PleaseResetTime
- bl sub_809F0C0
- ldr r2, =gLocalTime
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- adds r0, 0xA0
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, =sub_809EF00
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x2]
- movs r0, 0x3
- strh r0, [r5]
- b _0809F404
- .pool
-_0809F310:
- ldr r2, =gTasks
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0809F404
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0809F340
- ldrb r0, [r5, 0x2]
- bl DestroyTask
-_0809F334:
- movs r0, 0x2
- strh r0, [r5]
- b _0809F404
- .pool
-_0809F340:
- ldrb r0, [r5, 0x2]
- bl DestroyTask
- bl RtcReset
- ldr r4, =gLocalTime
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x2
- ldrsb r1, [r4, r1]
- movs r2, 0x3
- ldrsb r2, [r4, r2]
- movs r3, 0x4
- ldrsb r3, [r4, r3]
- bl RtcCalcLocalTimeOffset
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- adds r2, 0xA0
- ldr r0, [r4]
- ldr r1, [r4, 0x4]
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, =0x00004040
- ldrh r1, [r4]
- bl VarSet
- bl DisableResetRTC
- ldr r0, =gText_ClockHasBeenReset
- bl sub_809F0C0
- movs r0, 0x4
- strh r0, [r5]
- b _0809F404
- .pool
-_0809F398:
- movs r0, 0
- bl TrySavingData
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809F3B8
- ldr r0, =gText_SaveCompleted
- bl sub_809F0C0
- movs r0, 0x49
- bl PlaySE
- b _0809F3C4
- .pool
-_0809F3B8:
- ldr r0, =gText_SaveFailed
- bl sub_809F0C0
- movs r0, 0x16
- bl PlaySE
-_0809F3C4:
- movs r0, 0x5
- strh r0, [r5]
-_0809F3C8:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809F404
- movs r0, 0x1
- negs r0, r0
- ldr r1, =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x6
- strh r0, [r5]
-_0809F3EA:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0809F404
- adds r0, r4, 0
- bl DestroyTask
- bl FreeAllWindowBuffers
- bl DoSoftReset
-_0809F404:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809F200
-
- thumb_func_start sub_809F41C
-sub_809F41C: @ 809F41C
- push {lr}
- ldr r0, =0x00000861
- bl FlagSet
- movs r0, 0x86
- lsls r0, 4
- bl FlagSet
- ldr r0, =0x00000862
- bl FlagSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809F41C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s
index 939ed073e..80bc66f3f 100644
--- a/asm/rom_8011DC0.s
+++ b/asm/rom_8011DC0.s
@@ -481,7 +481,7 @@ _08012938:
bl CopyWindowToVram
ldrb r0, [r6, 0xF]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldr r0, =gMultiuseListMenuTemplate
adds r2, r0, 0
ldr r1, =gUnknown_082F015C
@@ -497,7 +497,7 @@ _08012938:
strb r0, [r6, 0x12]
ldrb r0, [r6, 0x11]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r6, 0x11]
bl PutWindowTilemap
ldrb r0, [r6, 0x11]
@@ -1962,7 +1962,7 @@ _0801360C:
bl CopyWindowToVram
ldrb r0, [r6, 0xB]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldr r0, =gMultiuseListMenuTemplate
adds r2, r0, 0
ldr r1, =gUnknown_082F0204
@@ -1978,7 +1978,7 @@ _0801360C:
strb r0, [r6, 0xE]
ldrb r0, [r6, 0xD]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r6, 0xD]
bl PutWindowTilemap
ldrb r0, [r6, 0xD]
@@ -8275,7 +8275,7 @@ sub_8017020: @ 8017020
bl sub_81973A4
movs r0, 0
movs r1, 0x1
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r0, =gStringVar4
adds r1, r4, 0
bl StringExpandPlaceholders
@@ -8320,7 +8320,7 @@ _08017076:
bl sub_81973A4
movs r0, 0
movs r1, 0x1
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r0, =gStringVar4
adds r1, r5, 0
bl StringExpandPlaceholders
@@ -8412,7 +8412,7 @@ sub_8017118: @ 8017118
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
adds r0, r4, 0
movs r1, 0xFF
bl FillWindowPixelBuffer
@@ -8508,7 +8508,7 @@ _080171DC:
strb r0, [r5]
ldrb r0, [r5]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldr r0, =gMultiuseListMenuTemplate
adds r2, r0, 0
ldr r1, [sp, 0x24]
@@ -8621,7 +8621,7 @@ _080172C8:
strb r0, [r6]
ldrb r0, [r6]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldr r0, =gMultiuseListMenuTemplate
adds r2, r0, 0
ldr r1, [sp, 0x24]
@@ -11106,7 +11106,7 @@ sub_80186A4: @ 80186A4
movs r0, 0x3
bl GetBgTilemapBuffer
bl Free
- ldr r0, =c2_title_screen_1
+ ldr r0, =CB2_InitTitleScreen
bl SetMainCallback2
pop {r0}
bx r0
@@ -28701,7 +28701,7 @@ _080214C6:
lsrs r3, 16
ldr r0, =gUnknown_082F436C
adds r1, r2, 0
- bl AddItemIconObjectWithCustomObjectTemplate
+ bl AddCustomItemIconSprite
lsls r0, 24
lsrs r0, 24
mov r2, r9
@@ -31662,7 +31662,7 @@ _08022D38:
_08022D42:
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldrb r1, [r5, 0x1]
movs r0, 0x2
mov r8, r0
@@ -34260,7 +34260,7 @@ _080241A6:
beq _0802421E
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r2, =gText_SavingDontTurnOffPower
movs r0, 0
str r0, [sp]
@@ -34617,7 +34617,7 @@ _0802445A:
_08024460:
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldrh r1, [r5, 0x14]
cmp r1, 0x3
bne _08024490
@@ -46350,7 +46350,7 @@ _0802A3A4:
_0802A3AE:
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r2, =gText_SavingDontTurnOffPower
str r4, [sp]
movs r0, 0x2
diff --git a/asm/roulette.s b/asm/roulette.s
index 3568c1911..e03bbea91 100644
--- a/asm/roulette.s
+++ b/asm/roulette.s
@@ -508,7 +508,7 @@ _081406E0:
ldr r4, =gUnknown_0203AB8C
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
ldr r2, =gUnknown_082A5B89
movs r1, 0x1
@@ -740,7 +740,7 @@ sub_8140914: @ 8140914
ldr r5, =gUnknown_0203AB8C
ldrb r0, [r5]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r5]
ldr r2, =gUnknown_082A5C13
movs r1, 0x1
@@ -2631,7 +2631,7 @@ sub_814189C: @ 814189C
ldr r4, =gUnknown_0203AB8C
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
ldr r2, =gUnknown_082A5BD7
b _08141902
@@ -2643,7 +2643,7 @@ _081418EC:
ldr r4, =gUnknown_0203AB8C
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
ldr r2, =gUnknown_082A5BCB
_08141902:
@@ -2667,7 +2667,7 @@ _08141928:
ldr r4, =gUnknown_0203AB8C
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
ldr r2, =gUnknown_082A5BE0
movs r1, 0x1
@@ -2805,7 +2805,7 @@ sub_8141A18: @ 8141A18
ldr r5, =gUnknown_0203AB8C
ldrb r0, [r5]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r5]
movs r1, 0x1
str r1, [sp]
@@ -3001,7 +3001,7 @@ _08141BB0:
ldr r4, =gUnknown_0203AB8C
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
ldr r2, =gUnknown_082A5C21
movs r1, 0x1
@@ -3028,7 +3028,7 @@ _08141C58:
ldr r4, =gUnknown_0203AB8C
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
ldr r2, =gUnknown_082A5C61
movs r1, 0x1
@@ -3060,7 +3060,7 @@ _08141CBC:
ldr r4, =gUnknown_0203AB8C
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
ldr r2, =gUnknown_082A5C04
movs r1, 0x1
@@ -3147,7 +3147,7 @@ _08141D44:
ldr r4, =gUnknown_0203AB8C
ldrb r0, [r4]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldrb r0, [r4]
ldr r2, =gUnknown_082A5C61
movs r1, 0x1
@@ -4667,7 +4667,7 @@ sub_81429F0: @ 81429F0
bl StringExpandPlaceholders
movs r0, 0
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
str r5, [sp]
movs r0, 0xFF
str r0, [sp, 0x4]
@@ -4744,7 +4744,7 @@ sub_8142A88: @ 8142A88
beq _08142B28
movs r0, 0
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldr r2, =gUnknown_082A5B6B
str r7, [sp]
movs r0, 0xFF
@@ -4768,7 +4768,7 @@ _08142B28:
bl StringExpandPlaceholders
movs r0, 0
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
movs r0, 0x1
str r0, [sp]
movs r0, 0xFF
@@ -4798,7 +4798,7 @@ _08142B78:
bl StringExpandPlaceholders
movs r0, 0
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
str r7, [sp]
movs r0, 0xFF
str r0, [sp, 0x4]
diff --git a/asm/shop.s b/asm/shop.s
index 70429c7cf..97dbd07c8 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -969,7 +969,7 @@ _080E02AE:
ldr r0, =0x0000083e
adds r1, r3, r0
adds r0, r1, 0
- bl AddItemIconObject
+ bl AddItemIconSprite
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x40
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 4a331b313..88f73fe2c 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -975,7 +975,7 @@ sub_812ACF4: @ 812ACF4
sub sp, 0xC
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r2, =gText_YouDontHaveThreeCoins
movs r0, 0x1
str r0, [sp]
@@ -1543,7 +1543,7 @@ sub_812B158: @ 812B158
sub sp, 0xC
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r2, =gText_QuitTheGame
movs r0, 0x1
str r0, [sp]
@@ -1633,7 +1633,7 @@ sub_812B214: @ 812B214
sub sp, 0xC
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r2, =gText_YouveGot9999Coins
movs r0, 0x1
str r0, [sp]
@@ -1686,7 +1686,7 @@ sub_812B280: @ 812B280
sub sp, 0xC
movs r0, 0
movs r1, 0
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r2, =gText_YouveRunOutOfCoins
movs r0, 0x1
str r0, [sp]
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 4497087da..23ac3710a 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -148,7 +148,7 @@ _0809F8E4:
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldr r1, =gUnknown_02037619
movs r0, 0
strb r0, [r1, 0x1]
@@ -170,7 +170,7 @@ _0809F926:
b _0809F940
.pool
_0809F930:
- ldr r4, =gUnknown_0203761A
+ ldr r4, =gUnknown_02037619+1
adds r0, r4, 0
movs r1, 0x2
bl PrintStartMenuActions
@@ -1832,7 +1832,7 @@ _080A06EC:
strb r0, [r6]
ldrb r0, [r6]
movs r1, 0
- bl sub_81973FC
+ bl NewMenuHelpers_DrawStdWindowFrame
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x8]
diff --git a/asm/title_screen.s b/asm/title_screen.s
deleted file mode 100644
index 32594424a..000000000
--- a/asm/title_screen.s
+++ /dev/null
@@ -1,1321 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80AA40C
-sub_80AA40C: @ 80AA40C
- push {lr}
- adds r3, r0, 0
- ldr r2, =gTasks
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080AA43C
- ldrb r0, [r3, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- strb r1, [r3, 0x1]
- movs r0, 0x42
- strh r0, [r3, 0x22]
- b _080AA46A
- .pool
-_080AA43C:
- ldrh r1, [r3, 0x22]
- movs r2, 0x22
- ldrsh r0, [r3, r2]
- cmp r0, 0x42
- beq _080AA44A
- adds r0, r1, 0x1
- strh r0, [r3, 0x22]
-_080AA44A:
- ldrh r1, [r3, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _080AA458
- subs r0, r1, 0x1
- strh r0, [r3, 0x2E]
-_080AA458:
- ldr r0, =gUnknown_0853FF70
- movs r2, 0x2E
- ldrsh r1, [r3, r2]
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- movs r0, 0x52
- bl SetGpuReg
-_080AA46A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AA40C
-
- thumb_func_start sub_80AA474
-sub_80AA474: @ 80AA474
- push {lr}
- adds r3, r0, 0
- ldr r2, =gTasks
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080AA4A0
- ldrb r0, [r3, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- strb r1, [r3, 0x1]
- movs r0, 0x42
- b _080AA4AC
- .pool
-_080AA4A0:
- ldrh r1, [r3, 0x22]
- movs r2, 0x22
- ldrsh r0, [r3, r2]
- cmp r0, 0x42
- beq _080AA4AE
- adds r0, r1, 0x1
-_080AA4AC:
- strh r0, [r3, 0x22]
-_080AA4AE:
- pop {r0}
- bx r0
- thumb_func_end sub_80AA474
-
- thumb_func_start sub_80AA4B4
-sub_80AA4B4: @ 80AA4B4
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _080AA4DC
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- bne _080AA4DC
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _080AA4E8
-_080AA4DC:
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080AA4E8:
- pop {r0}
- bx r0
- thumb_func_end sub_80AA4B4
-
- thumb_func_start sub_80AA4EC
-sub_80AA4EC: @ 80AA4EC
- push {r4-r7,lr}
- lsls r0, 16
- ldr r2, =0xffc00000
- adds r0, r2
- lsrs r0, 16
- movs r6, 0
- lsls r7, r1, 16
-_080AA4FA:
- lsls r5, r0, 16
- asrs r5, 16
- ldr r0, =gUnknown_085400D8
- adds r1, r5, 0
- asrs r2, r7, 16
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl StartSpriteAnim
- movs r0, 0x1
- strh r0, [r4, 0x2E]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r5, 0x20
- lsls r5, 16
- lsrs r0, r5, 16
- cmp r6, 0x4
- bls _080AA4FA
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AA4EC
-
- thumb_func_start sub_80AA548
-sub_80AA548: @ 80AA548
- push {r4-r6,lr}
- lsls r0, 16
- ldr r2, =0xffc00000
- adds r0, r2
- lsrs r0, 16
- movs r5, 0
- lsls r6, r1, 16
-_080AA556:
- lsls r4, r0, 16
- asrs r4, 16
- ldr r0, =gUnknown_085400D8
- adds r1, r4, 0
- asrs r2, r6, 16
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, =gSprites
- adds r2, r0
- adds r1, r5, 0x5
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x20
- lsls r4, 16
- lsrs r0, r4, 16
- cmp r5, 0x4
- bls _080AA556
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80AA548
-
- thumb_func_start title_screen_logo_shine_obj_callback_type1
-@ void title_screen_logo_shine_obj_callback_type1(struct obj *obj)
-title_screen_logo_shine_obj_callback_type1: @ 80AA5A4
- push {r4,lr}
- adds r3, r0, 0
- ldrh r2, [r3, 0x20]
- movs r0, 0x20
- ldrsh r1, [r3, r0]
- ldr r0, =0x0000010f
- cmp r1, r0
- bgt _080AA63C
- movs r4, 0x2E
- ldrsh r0, [r3, r4]
- adds r4, r2, 0
- cmp r0, 0
- beq _080AA630
- cmp r1, 0x77
- bgt _080AA5E0
- ldrh r1, [r3, 0x30]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r0, 0x1E
- bgt _080AA5F8
- adds r1, 0x1
- strh r1, [r3, 0x30]
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0x1E
- bgt _080AA5F8
- adds r0, r1, 0x1
- b _080AA5F6
- .pool
-_080AA5E0:
- ldrh r1, [r3, 0x30]
- movs r4, 0x30
- ldrsh r0, [r3, r4]
- cmp r0, 0
- beq _080AA5F8
- subs r0, r1, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- cmp r0, 0
- beq _080AA5F8
- subs r0, r1, 0x2
-_080AA5F6:
- strh r0, [r3, 0x30]
-_080AA5F8:
- ldrh r1, [r3, 0x30]
- movs r0, 0x1F
- ands r0, r1
- lsls r2, r0, 10
- lsls r1, r0, 5
- adds r2, r1
- orrs r2, r0
- movs r1, 0x20
- ldrsh r0, [r3, r1]
- ldrh r4, [r3, 0x20]
- cmp r0, 0x84
- beq _080AA61C
- cmp r0, 0x88
- beq _080AA61C
- cmp r0, 0x8C
- beq _080AA61C
- cmp r0, 0x90
- bne _080AA62C
-_080AA61C:
- ldr r1, =gPlttBufferFaded
- ldr r0, =0x000033f8
- strh r0, [r1]
- b _080AA630
- .pool
-_080AA62C:
- ldr r0, =gPlttBufferFaded
- strh r2, [r0]
-_080AA630:
- adds r0, r4, 0x4
- strh r0, [r3, 0x20]
- b _080AA648
- .pool
-_080AA63C:
- ldr r1, =gPlttBufferFaded
- movs r0, 0
- strh r0, [r1]
- adds r0, r3, 0
- bl DestroySprite
-_080AA648:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end title_screen_logo_shine_obj_callback_type1
-
- thumb_func_start title_screen_logo_shine_obj_callback_type2
-@ void title_screen_logo_shine_obj_callback_type2(struct obj *obj)
-title_screen_logo_shine_obj_callback_type2: @ 80AA654
- push {lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x20]
- movs r0, 0x20
- ldrsh r1, [r2, r0]
- ldr r0, =0x0000010f
- cmp r1, r0
- bgt _080AA670
- adds r0, r3, 0
- adds r0, 0x8
- strh r0, [r2, 0x20]
- b _080AA676
- .pool
-_080AA670:
- adds r0, r2, 0
- bl DestroySprite
-_080AA676:
- pop {r0}
- bx r0
- thumb_func_end title_screen_logo_shine_obj_callback_type2
-
- thumb_func_start title_screen_add_logo_shine_obj
-@ void title_screen_add_logo_shine_obj(int a1)
-title_screen_add_logo_shine_obj: @ 80AA67C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- beq _080AA6D0
- cmp r5, 0x1
- bgt _080AA698
- cmp r5, 0
- beq _080AA69C
- b _080AA766
-_080AA698:
- cmp r5, 0x2
- bne _080AA766
-_080AA69C:
- ldr r0, =gUnknown_08540124
- movs r1, 0
- movs r2, 0x44
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x1]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x1]
- strh r5, [r0, 0x2E]
- b _080AA766
- .pool
-_080AA6D0:
- ldr r0, =gUnknown_08540124
- mov r9, r0
- movs r1, 0
- movs r2, 0x44
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r6, =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x1]
- movs r4, 0xD
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- movs r2, 0x8
- mov r8, r2
- mov r2, r8
- orrs r0, r2
- strb r0, [r1, 0x1]
- strh r5, [r1, 0x2E]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- mov r0, r9
- movs r1, 0
- movs r2, 0x44
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r5, r6, 0
- adds r5, 0x1C
- adds r0, r1, r5
- ldr r2, =title_screen_logo_shine_obj_callback_type2
- mov r10, r2
- str r2, [r0]
- adds r1, r6
- ldrb r2, [r1, 0x1]
- adds r0, r4, 0
- ands r0, r2
- mov r2, r8
- orrs r0, r2
- strb r0, [r1, 0x1]
- movs r1, 0x50
- negs r1, r1
- mov r0, r9
- movs r2, 0x44
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r5
- mov r1, r10
- str r1, [r5]
- adds r0, r6
- ldrb r1, [r0, 0x1]
- ands r4, r1
- mov r2, r8
- orrs r4, r2
- strb r4, [r0, 0x1]
-_080AA766:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end title_screen_add_logo_shine_obj
-
- thumb_func_start title_screen_vblank_callback
-@ void title_screen_vblank_callback()
-title_screen_vblank_callback: @ 80AA780
- push {lr}
- bl ScanlineEffect_InitHBlankDmaTransfer
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- ldr r0, =gBattle_BG1_Y
- ldrh r1, [r0]
- movs r0, 0x16
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end title_screen_vblank_callback
-
- thumb_func_start c2_title_screen_1
-@ void c2_title_screen_1()
-c2_title_screen_1: @ 80AA7A4
- push {r4,lr}
- sub sp, 0x14
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _080AA7E0
- lsls r0, 2
- ldr r1, =_080AA7C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080AA7C8:
- .4byte _080AA7E0
- .4byte _080AA8C4
- .4byte _080AA998
- .4byte _080AA9E0
- .4byte _080AAA14
- .4byte _080AAAF0
-_080AA7E0:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, =0x00007fff
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- add r1, sp, 0xC
- movs r0, 0
- strh r0, [r1]
- ldr r1, =0x040000d4
- add r0, sp, 0xC
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0
- str r2, [sp, 0x10]
- add r0, sp, 0x10
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0xC
- strh r2, [r0]
- str r0, [r1]
- ldr r0, =0x05000002
- str r0, [r1, 0x4]
- ldr r0, =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _080AAB1E
- .pool
-_080AA8C4:
- ldr r0, =gTitleScreenPokemonLogoGfx
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, =gUnknown_08DE0644
- ldr r1, =0x06004800
- bl LZ77UnCompVram
- ldr r0, =gTitleScreenBgPalettes
- movs r2, 0xF0
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- ldr r0, =gTitleScreenRayquazaGfx
- ldr r1, =0x06008000
- bl LZ77UnCompVram
- ldr r0, =gTitleScreenRayquazaTilemap
- ldr r1, =0x0600d000
- bl LZ77UnCompVram
- ldr r0, =gTitleScreenCloudsGfx
- ldr r1, =0x0600c000
- bl LZ77UnCompVram
- ldr r0, =gUnknown_08DDE458
- ldr r1, =0x0600d800
- bl LZ77UnCompVram
- bl ScanlineEffect_Stop
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x9
- strb r0, [r1]
- ldr r0, =gUnknown_08540048
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_085400F0
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0854013C
- bl LoadCompressedObjectPic
- ldr r0, =gTitleScreenEmeraldVersionPal
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_08540100
- bl LoadSpritePalette
- ldr r0, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x2
- strb r1, [r0]
- b _080AAB1E
- .pool
-_080AA998:
- ldr r0, =task_title_screen_1
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1, 0x8]
- strh r2, [r1, 0xA]
- ldr r0, =0x0000fff0
- strh r0, [r1, 0xC]
- subs r0, 0x10
- strh r0, [r1, 0xE]
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
- b _080AAB1E
- .pool
-_080AA9E0:
- movs r0, 0x1
- negs r0, r0
- ldr r1, =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =title_screen_vblank_callback
- bl SetVBlankCallback
- ldr r0, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x4
- strb r1, [r0]
- b _080AAB1E
- .pool
-_080AAA14:
- movs r2, 0x80
- lsls r2, 1
- movs r0, 0x78
- movs r1, 0x50
- movs r3, 0
- bl sub_816F2A8
- movs r1, 0xE3
- lsls r1, 8
- movs r0, 0x28
- bl SetGpuReg
- ldr r4, =0x0000ffff
- movs r0, 0x2A
- adds r1, r4, 0
- bl SetGpuReg
- movs r1, 0xE0
- lsls r1, 8
- movs r0, 0x2C
- bl SetGpuReg
- movs r0, 0x2E
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x42
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x46
- movs r1, 0
- bl SetGpuReg
- ldr r1, =0x00001f1f
- movs r0, 0x48
- bl SetGpuReg
- ldr r1, =0x00003f1f
- movs r0, 0x4A
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0x84
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0xC
- bl SetGpuReg
- ldr r1, =0x00001a0b
- movs r0, 0x8
- bl SetGpuReg
- ldr r1, =0x00001b0e
- movs r0, 0xA
- bl SetGpuReg
- ldr r1, =0x00004981
- movs r0, 0xC
- bl SetGpuReg
- movs r0, 0x1
- bl EnableInterrupts
- ldr r1, =0x0000b441
- movs r0, 0
- bl SetGpuReg
- ldr r0, =0x0000019d
- bl m4aSongNumStart
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
- b _080AAB1E
- .pool
-_080AAAF0:
- bl UpdatePaletteFade
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080AAB1E
- movs r0, 0
- bl title_screen_add_logo_shine_obj
- str r4, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0xA0
- movs r2, 0x4
- movs r3, 0x4
- bl ScanlineEffect_InitWave
- ldr r0, =c2_title_screen_2
- bl SetMainCallback2
-_080AAB1E:
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_title_screen_1
-
- thumb_func_start c2_title_screen_2
-@ void c2_title_screen_2()
-c2_title_screen_2: @ 80AAB2C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end c2_title_screen_2
-
- thumb_func_start task_title_screen_1
-@ void task_title_screen_1(int task_id)
-task_title_screen_1: @ 80AAB44
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF
- ands r0, r1
- ldr r6, =gTasks
- cmp r0, 0
- bne _080AAB6A
- lsls r0, r5, 2
- adds r1, r0, r5
- lsls r1, 3
- adds r1, r6
- movs r2, 0xA
- ldrsh r1, [r1, r2]
- adds r4, r0, 0
- cmp r1, 0
- beq _080AAB7C
-_080AAB6A:
- lsls r3, r5, 2
- adds r0, r3, r5
- lsls r0, 3
- adds r0, r6
- movs r2, 0
- movs r1, 0x1
- strh r1, [r0, 0xA]
- strh r2, [r0, 0x8]
- adds r4, r3, 0
-_080AAB7C:
- adds r0, r4, r5
- lsls r0, 3
- adds r6, r0, r6
- movs r1, 0x8
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _080AABC0
- ldrh r0, [r6, 0x8]
- cmp r0, 0xB0
- bne _080AABA0
- movs r0, 0x1
- bl title_screen_add_logo_shine_obj
- b _080AABAA
- .pool
-_080AABA0:
- cmp r0, 0x40
- bne _080AABAA
- movs r0, 0x2
- bl title_screen_add_logo_shine_obj
-_080AABAA:
- ldr r0, =gTasks
- adds r1, r4, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- subs r0, 0x1
- strh r0, [r1, 0x8]
- b _080AAC32
- .pool
-_080AABC0:
- ldr r1, =0x00001441
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- ldr r1, =0x00003f50
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gUnknown_08540018
- movs r1, 0x62
- movs r2, 0x2
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r0, 0x40
- strh r0, [r1, 0x2E]
- strh r5, [r1, 0x30]
- ldr r0, =gUnknown_08540030
- movs r1, 0xA2
- movs r2, 0x2
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- strh r5, [r1, 0x30]
- movs r0, 0x90
- strh r0, [r6, 0x8]
- ldr r0, =task_title_screen_2
- str r0, [r6]
-_080AAC32:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_title_screen_1
-
- thumb_func_start task_title_screen_2
-@ void task_title_screen_2(int task_id)
-task_title_screen_2: @ 80AAC50
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF
- ands r0, r1
- ldr r2, =gTasks
- cmp r0, 0
- bne _080AAC76
- lsls r0, r4, 2
- adds r1, r0, r4
- lsls r1, 3
- adds r1, r2
- movs r3, 0xA
- ldrsh r1, [r1, r3]
- adds r6, r0, 0
- cmp r1, 0
- beq _080AAC88
-_080AAC76:
- lsls r3, r4, 2
- adds r0, r3, r4
- lsls r0, 3
- adds r0, r2
- movs r2, 0
- movs r1, 0x1
- strh r1, [r0, 0xA]
- strh r2, [r0, 0x8]
- adds r6, r3, 0
-_080AAC88:
- ldr r1, =gTasks
- adds r0, r6, r4
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0x8]
- movs r1, 0x8
- ldrsh r7, [r5, r1]
- cmp r7, 0
- beq _080AACA8
- subs r0, 0x1
- strh r0, [r5, 0x8]
- b _080AACE2
- .pool
-_080AACA8:
- movs r0, 0x1
- strh r0, [r5, 0xA]
- ldr r1, =0x00002142
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, =0x00000f06
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r1, =0x00001741
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x80
- movs r1, 0x6C
- bl sub_80AA4EC
- movs r0, 0x80
- movs r1, 0x94
- bl sub_80AA548
- strh r7, [r5, 0x10]
- ldr r0, =task_title_screen_3
- str r0, [r5]
-_080AACE2:
- ldr r2, =gTasks
- adds r0, r6, r4
- lsls r0, 3
- adds r3, r0, r2
- ldrh r1, [r3, 0x8]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _080AAD02
- ldrh r1, [r3, 0xC]
- movs r5, 0xC
- ldrsh r0, [r3, r5]
- cmp r0, 0
- beq _080AAD02
- adds r0, r1, 0x1
- strh r0, [r3, 0xC]
-_080AAD02:
- adds r0, r6, r4
- lsls r0, 3
- adds r3, r0, r2
- ldrh r1, [r3, 0x8]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080AAD20
- ldrh r1, [r3, 0xE]
- movs r5, 0xE
- ldrsh r0, [r3, r5]
- cmp r0, 0
- beq _080AAD20
- adds r0, r1, 0x1
- strh r0, [r3, 0xE]
-_080AAD20:
- adds r4, r6, r4
- lsls r4, 3
- adds r4, r2
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r5, r1, 8
- lsls r1, 24
- lsrs r1, 16
- movs r0, 0x2C
- bl SetGpuReg
- lsrs r5, 16
- movs r0, 0x2E
- adds r1, r5, 0
- bl SetGpuReg
- movs r0, 0xF
- strh r0, [r4, 0x12]
- movs r0, 0x6
- strh r0, [r4, 0x14]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_title_screen_2
-
- thumb_func_start task_title_screen_3
-@ void task_title_screen_3(int task_id)
-task_title_screen_3: @ 80AAD64
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080AAD84
- movs r0, 0x8
- ands r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _080AADB0
-_080AAD84:
- movs r0, 0x4
- bl FadeOutBGM
- movs r0, 0x1
- negs r0, r0
- ldr r1, =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =Cb2_GoToMainMenu
- bl SetMainCallback2
- b _080AAE98
- .pool
-_080AADB0:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x46
- ands r0, r1
- cmp r0, 0x46
- bne _080AADC8
- ldr r0, =c2_clear_save_data_screen_1
- bl SetMainCallback2
- b _080AAE98
- .pool
-_080AADC8:
- movs r0, 0x26
- ands r0, r1
- cmp r0, 0x26
- bne _080AADFC
- bl CanResetRTC
- cmp r0, 0x1
- bne _080AADFC
- movs r0, 0x4
- bl FadeOutBGM
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =c2_reset_rtc_screen_1
- bl SetMainCallback2
- b _080AAE98
- .pool
-_080AADFC:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0x6
- bne _080AAE30
- movs r0, 0x4
- bl FadeOutBGM
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =c2_berry_program_update_screen_1
- bl SetMainCallback2
- b _080AAE98
- .pool
-_080AAE30:
- movs r0, 0x2C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x2E
- movs r1, 0
- bl SetGpuReg
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r1
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080AAE72
- ldrh r0, [r3, 0x10]
- adds r0, 0x1
- strh r0, [r3, 0x10]
- ldr r2, =gBattle_BG1_Y
- movs r1, 0x10
- ldrsh r0, [r3, r1]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- strh r0, [r2]
- ldr r1, =gBattle_BG1_X
- movs r0, 0
- strh r0, [r1]
-_080AAE72:
- ldrb r0, [r3, 0x8]
- bl title_screen_update_rayquaza_ring_palette
- ldr r0, =gMPlayInfo_BGM
- ldr r1, =0x0000ffff
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- bne _080AAE98
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =c2_show_copyright_and_intro_again_1
- bl SetMainCallback2
-_080AAE98:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_title_screen_3
-
- thumb_func_start Cb2_GoToMainMenu
-Cb2_GoToMainMenu: @ 80AAEB8
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080AAECA
- ldr r0, =CB2_InitMainMenu
- bl SetMainCallback2
-_080AAECA:
- pop {r0}
- bx r0
- .pool
- thumb_func_end Cb2_GoToMainMenu
-
- thumb_func_start c2_show_copyright_and_intro_again_1
-c2_show_copyright_and_intro_again_1: @ 80AAED4
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080AAEE6
- ldr r0, =c2_show_copyright_and_intro_again_2
- bl SetMainCallback2
-_080AAEE6:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_show_copyright_and_intro_again_1
-
- thumb_func_start c2_clear_save_data_screen_1
-c2_clear_save_data_screen_1: @ 80AAEF0
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080AAF02
- ldr r0, =CB2_InitClearSaveDataScreen
- bl SetMainCallback2
-_080AAF02:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_clear_save_data_screen_1
-
- thumb_func_start c2_reset_rtc_screen_1
-c2_reset_rtc_screen_1: @ 80AAF0C
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080AAF1E
- ldr r0, =sub_809EF88
- bl SetMainCallback2
-_080AAF1E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_reset_rtc_screen_1
-
- thumb_func_start c2_berry_program_update_screen_1
-c2_berry_program_update_screen_1: @ 80AAF28
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080AAF3E
- bl m4aMPlayAllStop
- ldr r0, =InitBerryFixProgram
- bl SetMainCallback2
-_080AAF3E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_berry_program_update_screen_1
-
- thumb_func_start title_screen_update_rayquaza_ring_palette
-@ void title_screen_update_rayquaza_ring_palette(u8 a1)
-title_screen_update_rayquaza_ring_palette: @ 80AAF48
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _080AAF9C
- adds r0, r1, 0
- movs r1, 0x80
- bl Cos
- lsls r0, 16
- asrs r0, 16
- adds r2, r0, 0
- adds r2, 0x80
- lsls r0, r2, 5
- subs r0, r2
- cmp r0, 0
- bge _080AAF72
- adds r0, 0xFF
-_080AAF72:
- asrs r0, 8
- movs r3, 0x1F
- subs r1, r3, r0
- movs r0, 0x16
- muls r0, r2
- cmp r0, 0
- bge _080AAF82
- adds r0, 0xFF
-_080AAF82:
- asrs r0, 8
- subs r0, r3, r0
- lsls r0, 5
- orrs r1, r0
- movs r0, 0xC0
- lsls r0, 6
- orrs r1, r0
- mov r0, sp
- strh r1, [r0]
- movs r1, 0xEF
- movs r2, 0x2
- bl LoadPalette
-_080AAF9C:
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end title_screen_update_rayquaza_ring_palette
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/trade.s b/asm/trade.s
index d085ca1e6..92364146e 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -1,7 +1,6 @@
.include "asm/macros.inc"
.include "constants/gba_constants.inc"
.include "constants/misc_constants.inc"
- .include "constants/species_constants.inc"
.syntax unified
@@ -2400,7 +2399,7 @@ _08078726:
bne _08078766
adds r0, r4, 0
movs r1, 0x2
- ldr r2, =gSpeciesNames + SPECIES_SHEDINJA * POKEMON_NAME_LENGTH
+ ldr r2, =gSpeciesNames + 303 * POKEMON_NAME_LENGTH @ SPECIES_SHEDINJA
bl SetMonData
_08078766:
adds r4, 0x64
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index 96c759611..c05b948cd 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -409,7 +409,7 @@ _080C2A2C:
bl sub_800AC34
movs r0, 0
movs r1, 0x1
- bl sub_81973C4
+ bl NewMenuHelpers_DrawDialogueFrame
ldr r2, =gText_WaitingTrainerFinishReading
movs r0, 0x1
str r0, [sp]
diff --git a/common_syms/battle_main.txt b/common_syms/battle_main.txt
new file mode 100644
index 000000000..35a925946
--- /dev/null
+++ b/common_syms/battle_main.txt
@@ -0,0 +1,9 @@
+gPreBattleCallback1
+gBattleMainFunc
+gBattleResults
+gLeveledUpInBattle
+gBattlerControllerFuncs
+gHealthboxSpriteIds
+gMultiUsePlayerCursor
+gNumberOfMovesToChoose
+gUnknown_03005D7C
diff --git a/constants/battle_constants.inc b/constants/battle_constants.inc
deleted file mode 100644
index 7309d68cd..000000000
--- a/constants/battle_constants.inc
+++ /dev/null
@@ -1,170 +0,0 @@
-@ battle types
- .set BATTLE_TYPE_DOUBLE , 0x0001
- .set BATTLE_TYPE_LINK, 0x0002
- .set BATTLE_TYPE_WILD, 0x0004
- .set BATTLE_TYPE_TRAINER, 0x0008
- .set BATTLE_TYPE_FIRST_BATTLE, 0x0010
- .set BATTLE_TYPE_20, 0x0020
- .set BATTLE_TYPE_MULTI, 0x0040
- .set BATTLE_TYPE_SAFARI, 0x0080
- .set BATTLE_TYPE_BATTLE_TOWER, 0x0100
- .set BATTLE_TYPE_WALLY_TUTORIAL, 0x0200
- .set BATTLE_TYPE_ROAMER, 0x0400
- .set BATTLE_TYPE_EREADER_TRAINER, 0x0800
- .set BATTLE_TYPE_KYOGRE_GROUDON, 0x1000
- .set BATTLE_TYPE_LEGENDARY, 0x2000
- .set BATTLE_TYPE_REGI, 0x4000
- .set BATTLE_TYPE_TWO_OPPONENTS, 0x8000
- .set BATTLE_TYPE_DOME, 0x10000
- .set BATTLE_TYPE_PALACE, 0x20000
- .set BATTLE_TYPE_ARENA, 0x40000
- .set BATTLE_TYPE_FACTORY, 0x80000
- .set BATTLE_TYPE_PIKE, 0x100000
- .set BATTLE_TYPE_PYRAMID, 0x200000
- .set BATTLE_TYPE_INGAME_PARTNER, 0x400000
- .set BATTLE_TYPE_x800000, 0x800000
- .set BATTLE_TYPE_RECORDED, 0x1000000
- .set BATTLE_TYPE_x2000000, 0x2000000
- .set BATTLE_TYPE_x4000000, 0x4000000
- .set BATTLE_TYPE_SECRET_BASE, 0x8000000
- .set BATTLE_TYPE_GROUDON, 0x10000000
- .set BATTLE_TYPE_KYOGRE, 0x20000000
- .set BATTLE_TYPE_RAYQUAZA, 0x40000000
- .set BATTLE_TYPE_x80000000, 0x80000000
-
-@ battle outcomes
- .set WON, 0x1
- .set LOST, 0x2
- .set DREW, 0x3
- .set RAN, 0x4
- .set PLAYER_TELEPORTED, 0x5
- .set MON_FLED, 0x6
- .set CAUGHT, 0x7
- .set OUT_OF_BALLS, 0x8
- .set FORFEITED, 0x9
- .set OPPONENT_TELEPORTED, 0xA
-
-@ identities
- .set IDENTITY_PLAYER_MON1, 0
- .set IDENTITY_OPPONENT_MON1, 1
- .set IDENTITY_PLAYER_MON2, 2
- .set IDENTITY_OPPONENT_MON2, 3
-
-@ status 1
- .set STATUS_SLEEP, 0x7
- .set STATUS_POISON, 0x8
- .set STATUS_BURN, 0x10
- .set STATUS_FREEZE, 0x20
- .set STATUS_PARALYSIS, 0x40
- .set STATUS_TOXIC_POISON, 0x80
- .set STATUS_TOXIC_COUNTER, 0xF00
-
- .set STATUS_ANY, STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON
-
-@ status 2
- .set STATUS2_CONFUSION, 0x00000007
- .set STATUS2_FLINCHED, 0x00000008
- .set STATUS2_UPROAR, 0x00000070
- .set STATUS2_BIDE, 0x00000300
- .set STATUS2_LOCK_CONFUSE, 0x00000C00
- .set STATUS2_MULTIPLETURNS, 0x00001000
- .set STATUS2_WRAPPED, 0x0000E000
- .set STATUS2_INFATUATION, 0x000F0000
- .set STATUS2_FOCUS_ENERGY, 0x00100000
- .set STATUS2_TRANSFORMED, 0x00200000
- .set STATUS2_RECHARGE, 0x00400000
- .set STATUS2_RAGE, 0x00800000
- .set STATUS2_SUBSTITUTE, 0x01000000
- .set STATUS2_DESTINY_BOND, 0x02000000
- .set STATUS2_ESCAPE_PREVENTION, 0x04000000
- .set STATUS2_NIGHTMARE, 0x08000000
- .set STATUS2_CURSED, 0x10000000
- .set STATUS2_FORESIGHT, 0x20000000
- .set STATUS2_DEFENSE_CURL, 0x40000000
- .set STATUS2_TORMENT, 0x80000000
-
-@ status 3
- .set STATUS3_LEECHSEED_BANK, 0x3
- .set STATUS3_LEECHSEED, 0x4
- .set STATUS3_ALWAYS_HITS, 0x18
- .set STATUS3_PERISH_SONG, 0x20
- .set STATUS3_ON_AIR, 0x40
- .set STATUS3_UNDERGROUND, 0x80
- .set STATUS3_MINIMIZED, 0x100
- .set STATUS3_ROOTED, 0x400
- .set STATUS3_CHARGED_UP, 0x200
- .set STATUS3_YAWN, 0x1800
- .set STATUS3_IMPRISONED_OTHERS, 0x2000
- .set STATUS3_GRUDGE, 0x4000
- .set STATUS3_CANT_SCORE_A_CRIT, 0x8000
- .set STATUS3_MUDSPORT, 0x10000
- .set STATUS3_WATERSPORT, 0x20000
- .set STATUS3_UNDERWATER, 0x40000
- .set STATUS3_INTIMIDATE_POKES, 0x80000
- .set STATUS3_TRACE, 0x100000
-
-@ side status
- .set SIDE_STATUS_REFLECT, 0x1
- .set SIDE_STATUS_LIGHTSCREEN, 0x2
- .set SIDE_STATUS_X4, 0x4
- .set SIDE_STATUS_SPIKES, 0x10
- .set SIDE_STATUS_SAFEGUARD, 0x20
- .set SIDE_STATUS_FUTUREATTACK, 0x40
- .set SIDE_STATUS_MIST, 0x100
- .set SIDE_STATUS_SPIKES_DAMAGED, 0x200
-
-@ stats
- .set HP, 0x0
- .set ATK, 0x1
- .set DEF, 0x2
- .set SPEED, 0x3
- .set SPATK, 0x4
- .set SPDEF, 0x5
- .set ACC, 0x6
- .set EVASION, 0x7
-
-@ weather flags
- .set WEATHER_RAIN_TEMPORARY, 0x01
- .set WEATHER_RAIN_DOWNPOUR, 0x02
- .set WEATHER_RAIN_PERMANENT, 0x04
- .set WEATHER_SANDSTORM_TEMPORARY, 0x08
- .set WEATHER_SANDSTORM_PERMANENT, 0x10
- .set WEATHER_SUN_TEMPORARY, 0x20
- .set WEATHER_SUN_PERMANENT, 0x40
- .set WEATHER_HAIL, 0x80
-
-@ hitmarker
- .set HITMARKER_x10, 0x00000010
- .set HITMARKER_x20, 0x00000020
- .set HITMARKER_DESTINYBOND, 0x00000040
- .set HITMARKER_NO_ANIMATIONS, 0x00000080
- .set HITMARKER_IGNORE_SUBSTITUTE, 0x00000100
- .set HITMARKER_NO_ATTACKSTRING, 0x00000200
- .set HITMARKER_ATTACKSTRING_PRINTED, 0x00000400
- .set HITMARKER_NO_PPDEDUCT, 0x00000800
- .set HITMARKER_PURSUIT_TRAP, 0x00001000
- .set HITMARKER_IGNORE_SAFEGUARD, 0x00002000
- .set HITMARKER_SYNCHRONISE_EFFECT, 0x00004000
- .set HITMARKER_RUN, 0x00008000
- .set HITMARKER_IGNORE_ON_AIR, 0x00010000
- .set HITMARKER_IGNORE_UNDERGROUND, 0x00020000
- .set HITMARKER_IGNORE_UNDERWATER, 0x00040000
- .set HITMARKER_UNABLE_TO_USE_MOVE, 0x00080000
- .set HITMARKER_x100000, 0x00100000
- .set HITMARKER_x200000, 0x00200000
- .set HITMARKER_x400000, 0x00400000
- .set HITMARKER_x800000, 0x00800000
- .set HITMARKER_GRUDGE, 0x01000000
- .set HITMARKER_OBEYS, 0x02000000
- .set HITMARKER_x4000000, 0x04000000
- .set HITMARKER_x8000000, 0x08000000
-
-@ move flags
- .set MOVESTATUS_MISSED, 0x1
- .set MOVESTATUS_SUPEREFFECTIVE, 0x2
- .set MOVESTATUS_NOTVERYEFFECTIVE, 0x4
- .set MOVESTATUS_NOTAFFECTED, 0x8
- .set MOVESTATUS_ONEHITKO, 0x10
- .set MOVESTATUS_FAILED, 0x20
- .set MOVESTATUS_ENDURED, 0x40
- .set MOVESTATUS_HUNGON, 0x80
diff --git a/constants/battle_script_constants.inc b/constants/battle_script_constants.inc
deleted file mode 100644
index fe0e7dddc..000000000
--- a/constants/battle_script_constants.inc
+++ /dev/null
@@ -1,169 +0,0 @@
-@ animation ids
- .set ANIM_CASTFORM_CHANGE, 0x0
- .set ANIM_STATS_CHANGE, 0x1
- .set ANIM_SUBSTITUTE_FADE, 0x2
- .set ANIM_SUBSTITUTE_APPEAR, 0x3
- .set ANIM_x4, 0x4
- .set ANIM_ITEM_KNOCKOFF, 0x5
- .set ANIM_TURN_TRAP, 0x6
- .set ANIM_ITEM_EFFECT, 0x7
- .set ANIM_SMOKEBALL_ESCAPE, 0x8
- .set ANIM_HANGED_ON, 0x9
- .set ANIM_RAIN_CONTINUES, 0xA
- .set ANIM_SUN_CONTINUES, 0xB
- .set ANIM_SANDSTORM_CONTINUES, 0xC
- .set ANIM_HAIL_CONTINUES, 0xD
- .set ANIM_LEECH_SEED_DRAIN, 0xE
- .set ANIM_MON_HIT, 0xF
- .set ANIM_ITEM_STEAL, 0x10
- .set ANIM_SNATCH_MOVE, 0x11
- .set ANIM_FUTURE_SIGHT_HIT, 0x12
- .set ANIM_DOOM_DESIRE_HIT, 0x13
- .set ANIM_x14, 0x14
- .set ANIM_INGRAIN_HEAL, 0x15
- .set ANIM_WISH_HEAL, 0x16
-
-@ atk 80
- .set ATK80_DMG_CHANGE_SIGN, 0x0
- .set ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP, 0x1
- .set ATK80_DMG_DOUBLED, 0x2
-
-@ compare operands
- .set EQUAL, 0x0
- .set NOT_EQUAL, 0x1
- .set GREATER_THAN, 0x2
- .set LESS_THAN, 0x3
- .set COMMON_BITS, 0x4
- .set NO_COMMON_BITS, 0x5
-
-@ move effects
- .set EFFECT_SLEEP, 0x1
- .set EFFECT_POISON, 0x2
- .set EFFECT_BURN, 0x3
- .set EFFECT_FREEZE, 0x4
- .set EFFECT_PARALYSIS, 0x5
- .set EFFECT_TOXIC, 0x6
- .set EFFECT_CONFUSION, 0x7
- .set EFFECT_FLINCH, 0x8
- .set EFFECT_TRI_ATTACK, 0x9
- .set EFFECT_UPROAR, 0xA
- .set EFFECT_PAYDAY, 0xB
- .set EFFECT_CHARGING, 0xC
- .set EFFECT_WRAP, 0xD
- .set EFFECT_RECOIL_25, 0xE
- .set EFFECT_ATK_PLUS_1, 0xF
- .set EFFECT_DEF_PLUS_1, 0x10
- .set EFFECT_SPD_PLUS_1, 0x11
- .set EFFECT_SP_ATK_PLUS_1, 0x12
- .set EFFECT_SP_DEF_PLUS_1, 0x13
- .set EFFECT_ACC_PLUS_1, 0x14
- .set EFFECT_EVS_PLUS_1, 0x15
- .set EFFECT_ATK_MINUS_1, 0x16
- .set EFFECT_DEF_MINUS_1, 0x17
- .set EFFECT_SPD_MINUS_1, 0x18
- .set EFFECT_SP_ATK_MINUS_1, 0x19
- .set EFFECT_SP_DEF_MINUS_1, 0x1A
- .set EFFECT_ACC_MINUS_1, 0x1B
- .set EFFECT_EVS_MINUS_1, 0x1C
- .set EFFECT_RECHARGE, 0x1D
- .set EFFECT_RAGE, 0x1E
- .set EFFECT_STEAL_ITEM, 0x1F
- .set EFFECT_PREVENT_ESCAPE, 0x20
- .set EFFECT_NIGHTMARE, 0x21
- .set EFFECT_ALL_STATS_UP, 0x22
- .set EFFECT_RAPIDSPIN, 0x23
- .set EFFECT_REMOVE_PARALYSIS, 0x24
- .set EFFECT_ATK_DEF_DOWN, 0x25
- .set EFFECT_RECOIL_33_PARALYSIS, 0x26
- .set EFFECT_ATK_PLUS_2, 0x27
- .set EFFECT_DEF_PLUS_2, 0x28
- .set EFFECT_SPD_PLUS_2, 0x29
- .set EFFECT_SP_ATK_PLUS_2, 0x2A
- .set EFFECT_SP_DEF_PLUS_2, 0x2B
- .set EFFECT_ACC_PLUS_2, 0x2C
- .set EFFECT_EVS_PLUS_2, 0x2D
- .set EFFECT_ATK_MINUS_2, 0x2E
- .set EFFECT_DEF_MINUS_2, 0x2F
- .set EFFECT_SPD_MINUS_2, 0x30
- .set EFFECT_SP_ATK_MINUS_2, 0x31
- .set EFFECT_SP_DEF_MINUS_2, 0x32
- .set EFFECT_ACC_MINUS_2, 0x33
- .set EFFECT_EVS_MINUS_2, 0x34
- .set EFFECT_THRASH, 0x35
- .set EFFECT_KNOCK_OFF, 0x36
- .set EFFECT_NOTHING_37, 0x37
- .set EFFECT_NOTHING_38, 0x38
- .set EFFECT_NOTHING_39, 0x39
- .set EFFECT_NOTHING_3A, 0x3A
- .set EFFECT_SP_ATK_TWO_DOWN, 0x3B
- .set EFFECT_NOTHING_3C, 0x3C
- .set EFFECT_NOTHING_3D, 0x3D
- .set EFFECT_NOTHING_3E, 0x3E
- .set EFFECT_NOTHING_3F, 0x3F
-
- .set AFFECTS_USER, 0x40
- .set CERTAIN, 0x80
-
-@ accuracy calc
- .set NO_ACC_CALC, 0xFFFE
- .set NO_ACC_CALC_CHECK_LOCK_ON, 0xFFFF
- .set ACC_CURR_MOVE, 0x0
-
-@ bank values
- .set TARGET, 0x0
- .set ATTACKER, 0x1
- .set EFFECT_BANK, 0x2
- .set GBANK_1, 0x3
- .set ATTACKER_WITH_PARTNER, 0x4 @ only for cmd98
- .set BANK0, 0x7
- .set SCRIPTING_BANK, 0xA
- .set OPPONENT1, 0xC
-
-@ various
- .set VARIOUS_CANCEL_MULTI_TURN_MOVES, 0
- .set VARIOUS_SET_MAGIC_COAT_TARGET, 1
- .set VARIOUS_IS_RUNNING_IMPOSSIBLE, 2
- .set VARIOUS_GET_MOVE_TARGET, 3
- .set VARIOUS_RESET_INTIMIDATE_TRACE_BITS, 5
- .set VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP, 6
- .set VARIOUS_EMIT_YESNOBOX, 13
- .set VARIOUS_WAIT_CRY, 18
- .set VARIOUS_RETURN_OPPONENT_MON1, 19
- .set VARIOUS_RETURN_OPPONENT_MON2, 20
- .set VARIOUS_SET_TELEPORT_OUTCOME, 25
- .set VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC, 26
-
-@ jumpifcant switch flag argument
- .set ATK4F_DONT_CHECK_STATUSES, 0x80
-
-@ battle scripting struct
- .equiv sPAINSPLIT_HP, gBattleScripting
- .equiv sBIDE_DMG, gBattleScripting + 4
- .equiv sMULTIHIT_STRING, gBattleScripting + 8
- .equiv sDMG_MULTIPLIER, gBattleScripting + 0xE
- .equiv sTWOTURN_STRINGID, gBattleScripting + 0xF
- .equiv sANIM_ARG1, gBattleScripting + 0x10
- .equiv sANIM_ARG2, gBattleScripting + 0x11
- .equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12
- .equiv sMOVEEND_STATE, gBattleScripting + 0x14
- .equiv sBANK_WITH_ABILITY, gBattleScripting + 0x15
- .equiv sMULTIHIT_EFFECT, gBattleScripting + 0x16
- .equiv sBANK, gBattleScripting + 0x17
- .equiv sANIM_TURN, gBattleScripting + 0x18
- .equiv sANIM_TARGETS_HIT, gBattleScripting + 0x19
- .equiv sSTATCHANGER, gBattleScripting + 0x1A
- .equiv sFIELD_1B, gBattleScripting + 0x1B
- .equiv sGIVEEXP_STATE, gBattleScripting + 0x1C
- .equiv sBATTLE_STYLE, gBattleScripting + 0x1D
- .equiv sLVLBOX_STATE, gBattleScripting + 0x1E
- .equiv sLEARNMOVE_STATE, gBattleScripting + 0x1F
- .equiv sFIELD_20, gBattleScripting + 0x20
- .equiv sRESHOW_MAIN_STATE, gBattleScripting + 0x21
- .equiv sRESHOW_HELPER_STATE, gBattleScripting + 0x22
- .equiv sFIELD_23, gBattleScripting + 0x23
- .equiv sFIELD_24, gBattleScripting + 0x24
- .equiv sMULTIPLAYER_ID, gBattleScripting + 0x25
-
-@ battle communication struct
- .equiv cEFFECT_CHOOSER, gBattleCommunication + 3
- .equiv cMULTISTRING_CHOOSER, gBattleCommunication + 5
diff --git a/constants/battle_text.inc b/constants/battle_text.inc
deleted file mode 100644
index 1d3a5f346..000000000
--- a/constants/battle_text.inc
+++ /dev/null
@@ -1,375 +0,0 @@
- .set STRINGID_INTROMSG, 0
- .set STRINGID_INTROSENDOUT, 1
- .set STRINGID_RETURNMON, 2
- .set STRINGID_SWITCHINMON, 3
- .set STRINGID_USEDMOVE, 4
- .set STRINGID_BATTLEEND, 5
- .set STRINGID_TRAINER1LOSETEXT, 12
- .set STRINGID_PKMNGAINEDEXP, 13
- .set STRINGID_PKMNGREWTOLV, 14
- .set STRINGID_PKMNLEARNEDMOVE, 15
- .set STRINGID_TRYTOLEARNMOVE1, 16
- .set STRINGID_TRYTOLEARNMOVE2, 17
- .set STRINGID_TRYTOLEARNMOVE3, 18
- .set STRINGID_PKMNFORGOTMOVE, 19
- .set STRINGID_STOPLEARNINGMOVE, 20
- .set STRINGID_DIDNOTLEARNMOVE, 21
- .set STRINGID_PKMNLEARNEDMOVE2, 22
- .set STRINGID_ATTACKMISSED, 23
- .set STRINGID_PKMNPROTECTEDITSELF, 24
- .set STRINGID_STATSWONTINCREASE2, 25
- .set STRINGID_AVOIDEDDAMAGE, 26
- .set STRINGID_ITDOESNTAFFECT, 27
- .set STRINGID_ATTACKERFAINTED, 28
- .set STRINGID_TARGETFAINTED, 29
- .set STRINGID_PLAYERGOTMONEY, 30
- .set STRINGID_PLAYERWHITEOUT, 31
- .set STRINGID_PLAYERWHITEOUT2, 32
- .set STRINGID_PREVENTSESCAPE, 33
- .set STRINGID_HITXTIMES, 34
- .set STRINGID_PKMNFELLASLEEP, 35
- .set STRINGID_PKMNMADESLEEP, 36
- .set STRINGID_PKMNALREADYASLEEP, 37
- .set STRINGID_PKMNALREADYASLEEP2, 38
- .set STRINGID_PKMNWASNTAFFECTED, 39
- .set STRINGID_PKMNWASPOISONED, 40
- .set STRINGID_PKMNPOISONEDBY, 41
- .set STRINGID_PKMNHURTBYPOISON, 42
- .set STRINGID_PKMNALREADYPOISONED, 43
- .set STRINGID_PKMNBADLYPOISONED, 44
- .set STRINGID_PKMNENERGYDRAINED, 45
- .set STRINGID_PKMNWASBURNED, 46
- .set STRINGID_PKMNBURNEDBY, 47
- .set STRINGID_PKMNHURTBYBURN, 48
- .set STRINGID_PKMNWASFROZEN, 49
- .set STRINGID_PKMNFROZENBY, 50
- .set STRINGID_PKMNISFROZEN, 51
- .set STRINGID_PKMNWASDEFROSTED, 52
- .set STRINGID_PKMNWASDEFROSTED2, 53
- .set STRINGID_PKMNWASDEFROSTEDBY, 54
- .set STRINGID_PKMNWASPARALYZED, 55
- .set STRINGID_PKMNWASPARALYZEDBY, 56
- .set STRINGID_PKMNISPARALYZED, 57
- .set STRINGID_PKMNISALREADYPARALYZED, 58
- .set STRINGID_PKMNHEALEDPARALYSIS, 59
- .set STRINGID_PKMNDREAMEATEN, 60
- .set STRINGID_STATSWONTINCREASE, 61
- .set STRINGID_STATSWONTDECREASE, 62
- .set STRINGID_TEAMSTOPPEDWORKING, 63
- .set STRINGID_FOESTOPPEDWORKING, 64
- .set STRINGID_PKMNISCONFUSED, 65
- .set STRINGID_PKMNHEALEDCONFUSION, 66
- .set STRINGID_PKMNWASCONFUSED, 67
- .set STRINGID_PKMNALREADYCONFUSED, 68
- .set STRINGID_PKMNFELLINLOVE, 69
- .set STRINGID_PKMNINLOVE, 70
- .set STRINGID_PKMNIMMOBILIZEDBYLOVE, 71
- .set STRINGID_PKMNBLOWNAWAY, 72
- .set STRINGID_PKMNCHANGEDTYPE, 73
- .set STRINGID_PKMNFLINCHED, 74
- .set STRINGID_PKMNREGAINEDHEALTH, 75
- .set STRINGID_PKMNHPFULL, 76
- .set STRINGID_PKMNRAISEDSPDEF, 77
- .set STRINGID_PKMNRAISEDDEF, 78
- .set STRINGID_PKMNCOVEREDBYVEIL, 79
- .set STRINGID_PKMNUSEDSAFEGUARD, 80
- .set STRINGID_PKMNSAFEGUARDEXPIRED, 81
- .set STRINGID_PKMNWENTTOSLEEP, 82
- .set STRINGID_PKMNSLEPTHEALTHY, 83
- .set STRINGID_PKMNWHIPPEDWHIRLWIND, 84
- .set STRINGID_PKMNTOOKSUNLIGHT, 85
- .set STRINGID_PKMNLOWEREDHEAD, 86
- .set STRINGID_PKMNISGLOWING, 87
- .set STRINGID_PKMNFLEWHIGH, 88
- .set STRINGID_PKMNDUGHOLE, 89
- .set STRINGID_PKMNSQUEEZEDBYBIND, 90
- .set STRINGID_PKMNTRAPPEDINVORTEX, 91
- .set STRINGID_PKMNWRAPPEDBY, 92
- .set STRINGID_PKMNCLAMPED, 93
- .set STRINGID_PKMNHURTBY, 94
- .set STRINGID_PKMNFREEDFROM, 95
- .set STRINGID_PKMNCRASHED, 96
- .set STRINGID_PKMNSHROUDEDINMIST, 97
- .set STRINGID_PKMNPROTECTEDBYMIST, 98
- .set STRINGID_PKMNGETTINGPUMPED, 99
- .set STRINGID_PKMNHITWITHRECOIL, 100
- .set STRINGID_PKMNPROTECTEDITSELF2, 101
- .set STRINGID_PKMNBUFFETEDBYSANDSTORM, 102
- .set STRINGID_PKMNPELTEDBYHAIL, 103
- .set STRINGID_PKMNSEEDED, 104
- .set STRINGID_PKMNEVADEDATTACK, 105
- .set STRINGID_PKMNSAPPEDBYLEECHSEED, 106
- .set STRINGID_PKMNFASTASLEEP, 107
- .set STRINGID_PKMNWOKEUP, 108
- .set STRINGID_PKMNUPROARKEPTAWAKE, 109
- .set STRINGID_PKMNWOKEUPINUPROAR, 110
- .set STRINGID_PKMNCAUSEDUPROAR, 111
- .set STRINGID_PKMNMAKINGUPROAR, 112
- .set STRINGID_PKMNCALMEDDOWN, 113
- .set STRINGID_PKMNCANTSLEEPINUPROAR, 114
- .set STRINGID_PKMNSTOCKPILED, 115
- .set STRINGID_PKMNCANTSTOCKPILE, 116
- .set STRINGID_PKMNCANTSLEEPINUPROAR2, 117
- .set STRINGID_UPROARKEPTPKMNAWAKE, 118
- .set STRINGID_PKMNSTAYEDAWAKEUSING, 119
- .set STRINGID_PKMNSTORINGENERGY, 120
- .set STRINGID_PKMNUNLEASHEDENERGY, 121
- .set STRINGID_PKMNFATIGUECONFUSION, 122
- .set STRINGID_PKMNPICKEDUPITEM, 123
- .set STRINGID_PKMNUNAFFECTED, 124
- .set STRINGID_PKMNTRANSFORMEDINTO, 125
- .set STRINGID_PKMNMADESUBSTITUTE, 126
- .set STRINGID_PKMNHASSUBSTITUTE, 127
- .set STRINGID_SUBSTITUTEDAMAGED, 128
- .set STRINGID_PKMNSUBSTITUTEFADED, 129
- .set STRINGID_PKMNMUSTRECHARGE, 130
- .set STRINGID_PKMNRAGEBUILDING, 131
- .set STRINGID_PKMNMOVEWASDISABLED, 132
- .set STRINGID_PKMNMOVEISDISABLED, 133
- .set STRINGID_PKMNMOVEDISABLEDNOMORE, 134
- .set STRINGID_PKMNGOTENCORE, 135
- .set STRINGID_PKMNENCOREENDED, 136
- .set STRINGID_PKMNTOOKAIM, 137
- .set STRINGID_PKMNSKETCHEDMOVE, 138
- .set STRINGID_PKMNTRYINGTOTAKEFOE, 139
- .set STRINGID_PKMNTOOKFOE, 140
- .set STRINGID_PKMNREDUCEDPP, 141
- .set STRINGID_PKMNSTOLEITEM, 142
- .set STRINGID_TARGETCANTESCAPENOW, 143
- .set STRINGID_PKMNFELLINTONIGHTMARE, 144
- .set STRINGID_PKMNLOCKEDINNIGHTMARE, 145
- .set STRINGID_PKMNLAIDCURSE, 146
- .set STRINGID_PKMNAFFLICTEDBYCURSE, 147
- .set STRINGID_SPIKESSCATTERED, 148
- .set STRINGID_PKMNHURTBYSPIKES, 149
- .set STRINGID_PKMNIDENTIFIED, 150
- .set STRINGID_PKMNPERISHCOUNTFELL, 151
- .set STRINGID_PKMNBRACEDITSELF, 152
- .set STRINGID_PKMNENDUREDHIT, 153
- .set STRINGID_MAGNITUDESTRENGTH, 154
- .set STRINGID_PKMNCUTHPMAXEDATTACK, 155
- .set STRINGID_PKMNCOPIEDSTATCHANGES, 156
- .set STRINGID_PKMNGOTFREE, 157
- .set STRINGID_PKMNSHEDLEECHSEED, 158
- .set STRINGID_PKMNBLEWAWAYSPIKES, 159
- .set STRINGID_PKMNFLEDFROMBATTLE, 160
- .set STRINGID_PKMNFORESAWATTACK, 161
- .set STRINGID_PKMNTOOKATTACK, 162
- .set STRINGID_PKMNATTACK, 163
- .set STRINGID_PKMNCENTERATTENTION, 164
- .set STRINGID_PKMNCHARGINGPOWER, 165
- .set STRINGID_NATUREPOWERTURNEDINTO, 166
- .set STRINGID_PKMNSTATUSNORMAL, 167
- .set STRINGID_PKMNHASNOMOVESLEFT, 168
- .set STRINGID_PKMNSUBJECTEDTOTORMENT, 169
- .set STRINGID_PKMNCANTUSEMOVETORMENT, 170
- .set STRINGID_PKMNTIGHTENINGFOCUS, 171
- .set STRINGID_PKMNFELLFORTAUNT, 172
- .set STRINGID_PKMNCANTUSEMOVETAUNT, 173
- .set STRINGID_PKMNREADYTOHELP, 174
- .set STRINGID_PKMNSWITCHEDITEMS, 175
- .set STRINGID_PKMNCOPIEDFOE, 176
- .set STRINGID_PKMNMADEWISH, 177
- .set STRINGID_PKMNWISHCAMETRUE, 178
- .set STRINGID_PKMNPLANTEDROOTS, 179
- .set STRINGID_PKMNABSORBEDNUTRIENTS, 180
- .set STRINGID_PKMNANCHOREDITSELF, 181
- .set STRINGID_PKMNWASMADEDROWSY, 182
- .set STRINGID_PKMNKNOCKEDOFF, 183
- .set STRINGID_PKMNSWAPPEDABILITIES, 184
- .set STRINGID_PKMNSEALEDOPPONENTMOVE, 185
- .set STRINGID_PKMNCANTUSEMOVESEALED, 186
- .set STRINGID_PKMNWANTSGRUDGE, 187
- .set STRINGID_PKMNLOSTPPGRUDGE, 188
- .set STRINGID_PKMNSHROUDEDITSELF, 189
- .set STRINGID_PKMNMOVEBOUNCED, 190
- .set STRINGID_PKMNWAITSFORTARGET, 191
- .set STRINGID_PKMNSNATCHEDMOVE, 192
- .set STRINGID_PKMNMADEITRAIN, 193
- .set STRINGID_PKMNRAISEDSPEED, 194
- .set STRINGID_PKMNPROTECTEDBY, 195
- .set STRINGID_PKMNPREVENTSUSAGE, 196
- .set STRINGID_PKMNRESTOREDHPUSING, 197
- .set STRINGID_PKMNCHANGEDTYPEWITH, 198
- .set STRINGID_PKMNPREVENTSPARALYSISWITH, 199
- .set STRINGID_PKMNPREVENTSROMANCEWITH, 200
- .set STRINGID_PKMNPREVENTSPOISONINGWITH, 201
- .set STRINGID_PKMNPREVENTSCONFUSIONWITH, 202
- .set STRINGID_PKMNRAISEDFIREPOWERWITH, 203
- .set STRINGID_PKMNANCHORSITSELFWITH, 204
- .set STRINGID_PKMNCUTSATTACKWITH, 205
- .set STRINGID_PKMNPREVENTSSTATLOSSWITH, 206
- .set STRINGID_PKMNHURTSWITH, 207
- .set STRINGID_PKMNTRACED, 208
- .set STRINGID_STATSHARPLY, 209
- .set STRINGID_STATROSE, 210
- .set STRINGID_STATHARSHLY, 211
- .set STRINGID_STATFELL, 212
- .set STRINGID_PKMNSSTATCHANGED, 213
- .set STRINGID_PKMNSSTATCHANGED2, 214
- .set STRINGID_PKMNSSTATCHANGED3, 215
- .set STRINGID_PKMNSSTATCHANGED4, 216
- .set STRINGID_CRITICALHIT, 217
- .set STRINGID_ONEHITKO, 218
- .set STRINGID_123POOF, 219
- .set STRINGID_ANDELLIPSIS, 220
- .set STRINGID_NOTVERYEFFECTIVE, 221
- .set STRINGID_SUPEREFFECTIVE, 222
- .set STRINGID_GOTAWAYSAFELY, 223
- .set STRINGID_WILDPKMNFLED, 224
- .set STRINGID_NORUNNINGFROMTRAINERS, 225
- .set STRINGID_CANTESCAPE, 226
- .set STRINGID_DONTLEAVEBIRCH, 227
- .set STRINGID_BUTNOTHINGHAPPENED, 228
- .set STRINGID_BUTITFAILED, 229
- .set STRINGID_ITHURTCONFUSION, 230
- .set STRINGID_MIRRORMOVEFAILED, 231
- .set STRINGID_STARTEDTORAIN, 232
- .set STRINGID_DOWNPOURSTARTED, 233
- .set STRINGID_RAINCONTINUES, 234
- .set STRINGID_DOWNPOURCONTINUES, 235
- .set STRINGID_RAINSTOPPED, 236
- .set STRINGID_SANDSTORMBREWED, 237
- .set STRINGID_SANDSTORMRAGES, 238
- .set STRINGID_SANDSTORMSUBSIDED, 239
- .set STRINGID_SUNLIGHTGOTBRIGHT, 240
- .set STRINGID_SUNLIGHTSTRONG, 241
- .set STRINGID_SUNLIGHTFADED, 242
- .set STRINGID_STARTEDHAIL, 243
- .set STRINGID_HAILCONTINUES, 244
- .set STRINGID_HAILSTOPPED, 245
- .set STRINGID_FAILEDTOSPITUP, 246
- .set STRINGID_FAILEDTOSWALLOW, 247
- .set STRINGID_WINDBECAMEHEATWAVE, 248
- .set STRINGID_STATCHANGESGONE, 249
- .set STRINGID_COINSSCATTERED, 250
- .set STRINGID_TOOWEAKFORSUBSTITUTE, 251
- .set STRINGID_SHAREDPAIN, 252
- .set STRINGID_BELLCHIMED, 253
- .set STRINGID_FAINTINTHREE, 254
- .set STRINGID_NOPPLEFT, 255
- .set STRINGID_BUTNOPPLEFT, 256
- .set STRINGID_PLAYERUSEDITEM, 257
- .set STRINGID_WALLYUSEDITEM, 258
- .set STRINGID_TRAINERBLOCKEDBALL, 259
- .set STRINGID_DONTBEATHIEF, 260
- .set STRINGID_ITDODGEDBALL, 261
- .set STRINGID_YOUMISSEDPKMN, 262
- .set STRINGID_PKMNBROKEFREE, 263
- .set STRINGID_ITAPPEAREDCAUGHT, 264
- .set STRINGID_AARGHALMOSTHADIT, 265
- .set STRINGID_SHOOTSOCLOSE, 266
- .set STRINGID_GOTCHAPKMNCAUGHT, 267
- .set STRINGID_GOTCHAPKMNCAUGHT2, 268
- .set STRINGID_GIVENICKNAMECAPTURED, 269
- .set STRINGID_PKMNSENTTOPC, 270
- .set STRINGID_PKMNDATAADDEDTODEX, 271
- .set STRINGID_ITISRAINING, 272
- .set STRINGID_SANDSTORMISRAGING, 273
- .set STRINGID_CANTESCAPE2, 274
- .set STRINGID_PKMNIGNORESASLEEP, 275
- .set STRINGID_PKMNIGNOREDORDERS, 276
- .set STRINGID_PKMNBEGANTONAP, 277
- .set STRINGID_PKMNLOAFING, 278
- .set STRINGID_PKMNWONTOBEY, 279
- .set STRINGID_PKMNTURNEDAWAY, 280
- .set STRINGID_PKMNPRETENDNOTNOTICE, 281
- .set STRINGID_ENEMYABOUTTOSWITCHPKMN, 282
- .set STRINGID_CREPTCLOSER, 283
- .set STRINGID_CANTGETCLOSER, 284
- .set STRINGID_PKMNWATCHINGCAREFULLY, 285
- .set STRINGID_PKMNCURIOUSABOUTX, 286
- .set STRINGID_PKMNENTHRALLEDBYX, 287
- .set STRINGID_PKMNIGNOREDX, 288
- .set STRINGID_THREWPOKEBLOCKATPKMN, 289
- .set STRINGID_OUTOFSAFARIBALLS, 290
- .set STRINGID_PKMNSITEMCUREDPARALYSIS, 291
- .set STRINGID_PKMNSITEMCUREDPOISON, 292
- .set STRINGID_PKMNSITEMHEALEDBURN, 293
- .set STRINGID_PKMNSITEMDEFROSTEDIT, 294
- .set STRINGID_PKMNSITEMWOKEIT, 295
- .set STRINGID_PKMNSITEMSNAPPEDOUT, 296
- .set STRINGID_PKMNSITEMCUREDPROBLEM, 297
- .set STRINGID_PKMNSITEMRESTOREDHEALTH, 298
- .set STRINGID_PKMNSITEMRESTOREDPP, 299
- .set STRINGID_PKMNSITEMRESTOREDSTATUS, 300
- .set STRINGID_PKMNSITEMRESTOREDHPALITTLE, 301
- .set STRINGID_ITEMALLOWSONLYYMOVE, 302
- .set STRINGID_PKMNHUNGONWITHX, 303
- .set STRINGID_EMPTYSTRING3, 304
- .set STRINGID_PKMNSXPREVENTSBURNS, 305
- .set STRINGID_PKMNSXBLOCKSY, 306
- .set STRINGID_PKMNSXRESTOREDHPALITTLE2, 307
- .set STRINGID_PKMNSXWHIPPEDUPSANDSTORM, 308
- .set STRINGID_PKMNSXPREVENTSYLOSS, 309
- .set STRINGID_PKMNSXINFATUATEDY, 310
- .set STRINGID_PKMNSXMADEYINEFFECTIVE, 311
- .set STRINGID_PKMNSXCUREDYPROBLEM, 312
- .set STRINGID_ITSUCKEDLIQUIDOOZE, 313
- .set STRINGID_PKMNTRANSFORMED, 314
- .set STRINGID_ELECTRICITYWEAKENED, 315
- .set STRINGID_FIREWEAKENED, 316
- .set STRINGID_PKMNHIDUNDERWATER, 317
- .set STRINGID_PKMNSPRANGUP, 318
- .set STRINGID_HMMOVESCANTBEFORGOTTEN, 319
- .set STRINGID_XFOUNDONEY, 320
- .set STRINGID_PLAYERDEFEATEDTRAINER1, 321
- .set STRINGID_SOOTHINGAROMA, 322
- .set STRINGID_ITEMSCANTBEUSEDNOW, 323
- .set STRINGID_FORXCOMMAYZ, 324
- .set STRINGID_USINGXTHEYOFZN, 325
- .set STRINGID_PKMNUSEDXTOGETPUMPED, 326
- .set STRINGID_PKMNSXMADEYUSELESS, 327
- .set STRINGID_PKMNTRAPPEDBYSANDTOMB, 328
- .set STRINGID_EMPTYSTRING4, 329
- .set STRINGID_ABOOSTED, 330
- .set STRINGID_PKMNSXINTENSIFIEDSUN, 331
- .set STRINGID_PKMNMAKESGROUNDMISS, 332
- .set STRINGID_YOUTHROWABALLNOWRIGHT, 333
- .set STRINGID_PKMNSXTOOKATTACK, 334
- .set STRINGID_PKMNCHOSEXASDESTINY, 335
- .set STRINGID_PKMNLOSTFOCUS, 336
- .set STRINGID_USENEXTPKMN, 337
- .set STRINGID_PKMNFLEDUSINGITS, 338
- .set STRINGID_PKMNFLEDUSING, 339
- .set STRINGID_PKMNWASDRAGGEDOUT, 340
- .set STRINGID_PREVENTEDFROMWORKING, 341
- .set STRINGID_PKMNSITEMNORMALIZEDSTATUS, 342
- .set STRINGID_TRAINER1USEDITEM, 343
- .set STRINGID_BOXISFULL, 344
- .set STRINGID_PKMNAVOIDEDATTACK, 345
- .set STRINGID_PKMNSXMADEITINEFFECTIVE, 346
- .set STRINGID_PKMNSXPREVENTSFLINCHING, 347
- .set STRINGID_PKMNALREADYHASBURN, 348
- .set STRINGID_STATSWONTDECREASE2, 349
- .set STRINGID_PKMNSXBLOCKSY2, 350
- .set STRINGID_PKMNSXWOREOFF, 351
- .set STRINGID_PKMNRAISEDDEFALITTLE, 352
- .set STRINGID_PKMNRAISEDSPDEFALITTLE, 353
- .set STRINGID_THEWALLSHATTERED, 354
- .set STRINGID_PKMNSXPREVENTSYSZ, 355
- .set STRINGID_PKMNSXCUREDITSYPROBLEM, 356
- .set STRINGID_ATTACKERCANTESCAPE, 357
- .set STRINGID_PKMNOBTAINEDX, 358
- .set STRINGID_PKMNOBTAINEDX2, 359
- .set STRINGID_PKMNOBTAINEDXYOBTAINEDZ, 360
- .set STRINGID_BUTNOEFFECT, 361
- .set STRINGID_PKMNSXHADNOEFFECTONY, 362
- .set STRINGID_TWOENEMIESDEFEATED, 363
- .set STRINGID_TRAINER2LOSETEXT, 364
- .set STRINGID_PKMNINCAPABLEOFPOWER, 365
- .set STRINGID_GLINTAPPEARSINEYE, 366
- .set STRINGID_PKMNGETTINGINTOPOSITION, 367
- .set STRINGID_PKMNBEGANGROWLINGDEEPLY, 368
- .set STRINGID_PKMNEAGERFORMORE, 369
- .set STRINGID_DEFEATEDOPPONENTBYREFEREE, 370
- .set STRINGID_LOSTTOOPPONENTBYREFEREE, 371
- .set STRINGID_TIEDOPPONENTBYREFEREE, 372
- .set STRINGID_QUESTIONFORFEITMATCH, 373
- .set STRINGID_FORFEITEDMATCH, 374
- .set STRINGID_PKMNTRANSFERREDSOMEONESPC, 375
- .set STRINGID_PKMNTRANSFERREDLANETTESPC, 376
- .set STRINGID_PKMNBOXSOMEONESPCFULL, 377
- .set STRINGID_PKMNBOXLANETTESPCFULL, 378
- .set STRINGID_TRAINER1WINTEXT, 379
- .set STRINGID_TRAINER2WINTEXT, 380
diff --git a/constants/constants.inc b/constants/constants.inc
index 99c3d3c73..10d582eb1 100644
--- a/constants/constants.inc
+++ b/constants/constants.inc
@@ -1,11 +1,9 @@
.include "constants/gba_constants.inc"
.include "constants/misc_constants.inc"
- .include "constants/type_constants.inc"
.include "constants/contest_constants.inc"
.include "constants/pokemon_data_constants.inc"
.include "constants/item_data_constants.inc"
.include "constants/battle_move_constants.inc"
- .include "constants/trainer_constants.inc"
.include "constants/battle_frontier_constants.inc"
.include "constants/map_constants.inc"
.include "constants/berry_constants.inc"
diff --git a/constants/pokemon_data_constants.inc b/constants/pokemon_data_constants.inc
index cf5d4df41..646bd6d4c 100644
--- a/constants/pokemon_data_constants.inc
+++ b/constants/pokemon_data_constants.inc
@@ -1,29 +1,3 @@
- .set NATURE_HARDY, 0
- .set NATURE_LONELY, 1
- .set NATURE_BRAVE, 2
- .set NATURE_ADAMANT, 3
- .set NATURE_NAUGHTY, 4
- .set NATURE_BOLD, 5
- .set NATURE_DOCILE, 6
- .set NATURE_RELAXED, 7
- .set NATURE_IMPISH, 8
- .set NATURE_LAX, 9
- .set NATURE_TIMID, 10
- .set NATURE_HASTY, 11
- .set NATURE_SERIOUS, 12
- .set NATURE_JOLLY, 13
- .set NATURE_NAIVE, 14
- .set NATURE_MODEST, 15
- .set NATURE_MILD, 16
- .set NATURE_QUIET, 17
- .set NATURE_BASHFUL, 18
- .set NATURE_RASH, 19
- .set NATURE_CALM, 20
- .set NATURE_GENTLE, 21
- .set NATURE_SASSY, 22
- .set NATURE_CAREFUL, 23
- .set NATURE_QUIRKY, 24
-
.set GROWTH_MEDIUM_FAST, 0x00
.set GROWTH_ERRATIC, 0x01
.set GROWTH_FLUCTUATING, 0x02
@@ -31,23 +5,6 @@
.set GROWTH_FAST, 0x04
.set GROWTH_SLOW, 0x05
- .set EGG_GROUP_NONE, 0x00
- .set EGG_GROUP_MONSTER, 0x01
- .set EGG_GROUP_WATER_1, 0x02
- .set EGG_GROUP_BUG, 0x03
- .set EGG_GROUP_FLYING, 0x04
- .set EGG_GROUP_FIELD, 0x05
- .set EGG_GROUP_FAIRY, 0x06
- .set EGG_GROUP_GRASS, 0x07
- .set EGG_GROUP_HUMAN_LIKE, 0x08
- .set EGG_GROUP_WATER_3, 0x09
- .set EGG_GROUP_MINERAL, 0x0a
- .set EGG_GROUP_AMORPHOUS, 0x0b
- .set EGG_GROUP_WATER_2, 0x0c
- .set EGG_GROUP_DITTO, 0x0d
- .set EGG_GROUP_DRAGON, 0x0e
- .set EGG_GROUP_UNDISCOVERED, 0x0f
-
.set BODY_COLOR_RED, 0x00
.set BODY_COLOR_BLUE, 0x01
.set BODY_COLOR_YELLOW, 0x02
diff --git a/constants/species_constants.inc b/constants/species_constants.inc
deleted file mode 100644
index 64f1e19f7..000000000
--- a/constants/species_constants.inc
+++ /dev/null
@@ -1,387 +0,0 @@
- .set SPECIES_BULBASAUR, 0x001
- .set SPECIES_IVYSAUR, 0x002
- .set SPECIES_VENUSAUR, 0x003
- .set SPECIES_CHARMANDER, 0x004
- .set SPECIES_CHARMELEON, 0x005
- .set SPECIES_CHARIZARD, 0x006
- .set SPECIES_SQUIRTLE, 0x007
- .set SPECIES_WARTORTLE, 0x008
- .set SPECIES_BLASTOISE, 0x009
- .set SPECIES_CATERPIE, 0x00a
- .set SPECIES_METAPOD, 0x00b
- .set SPECIES_BUTTERFREE, 0x00c
- .set SPECIES_WEEDLE, 0x00d
- .set SPECIES_KAKUNA, 0x00e
- .set SPECIES_BEEDRILL, 0x00f
- .set SPECIES_PIDGEY, 0x010
- .set SPECIES_PIDGEOTTO, 0x011
- .set SPECIES_PIDGEOT, 0x012
- .set SPECIES_RATTATA, 0x013
- .set SPECIES_RATICATE, 0x014
- .set SPECIES_SPEAROW, 0x015
- .set SPECIES_FEAROW, 0x016
- .set SPECIES_EKANS, 0x017
- .set SPECIES_ARBOK, 0x018
- .set SPECIES_PIKACHU, 0x019
- .set SPECIES_RAICHU, 0x01a
- .set SPECIES_SANDSHREW, 0x01b
- .set SPECIES_SANDSLASH, 0x01c
- .set SPECIES_NIDORAN_F, 0x01d
- .set SPECIES_NIDORINA, 0x01e
- .set SPECIES_NIDOQUEEN, 0x01f
- .set SPECIES_NIDORAN_M, 0x020
- .set SPECIES_NIDORINO, 0x021
- .set SPECIES_NIDOKING, 0x022
- .set SPECIES_CLEFAIRY, 0x023
- .set SPECIES_CLEFABLE, 0x024
- .set SPECIES_VULPIX, 0x025
- .set SPECIES_NINETALES, 0x026
- .set SPECIES_JIGGLYPUFF, 0x027
- .set SPECIES_WIGGLYTUFF, 0x028
- .set SPECIES_ZUBAT, 0x029
- .set SPECIES_GOLBAT, 0x02a
- .set SPECIES_ODDISH, 0x02b
- .set SPECIES_GLOOM, 0x02c
- .set SPECIES_VILEPLUME, 0x02d
- .set SPECIES_PARAS, 0x02e
- .set SPECIES_PARASECT, 0x02f
- .set SPECIES_VENONAT, 0x030
- .set SPECIES_VENOMOTH, 0x031
- .set SPECIES_DIGLETT, 0x032
- .set SPECIES_DUGTRIO, 0x033
- .set SPECIES_MEOWTH, 0x034
- .set SPECIES_PERSIAN, 0x035
- .set SPECIES_PSYDUCK, 0x036
- .set SPECIES_GOLDUCK, 0x037
- .set SPECIES_MANKEY, 0x038
- .set SPECIES_PRIMEAPE, 0x039
- .set SPECIES_GROWLITHE, 0x03a
- .set SPECIES_ARCANINE, 0x03b
- .set SPECIES_POLIWAG, 0x03c
- .set SPECIES_POLIWHIRL, 0x03d
- .set SPECIES_POLIWRATH, 0x03e
- .set SPECIES_ABRA, 0x03f
- .set SPECIES_KADABRA, 0x040
- .set SPECIES_ALAKAZAM, 0x041
- .set SPECIES_MACHOP, 0x042
- .set SPECIES_MACHOKE, 0x043
- .set SPECIES_MACHAMP, 0x044
- .set SPECIES_BELLSPROUT, 0x045
- .set SPECIES_WEEPINBELL, 0x046
- .set SPECIES_VICTREEBEL, 0x047
- .set SPECIES_TENTACOOL, 0x048
- .set SPECIES_TENTACRUEL, 0x049
- .set SPECIES_GEODUDE, 0x04a
- .set SPECIES_GRAVELER, 0x04b
- .set SPECIES_GOLEM, 0x04c
- .set SPECIES_PONYTA, 0x04d
- .set SPECIES_RAPIDASH, 0x04e
- .set SPECIES_SLOWPOKE, 0x04f
- .set SPECIES_SLOWBRO, 0x050
- .set SPECIES_MAGNEMITE, 0x051
- .set SPECIES_MAGNETON, 0x052
- .set SPECIES_FARFETCH_D, 0x053
- .set SPECIES_DODUO, 0x054
- .set SPECIES_DODRIO, 0x055
- .set SPECIES_SEEL, 0x056
- .set SPECIES_DEWGONG, 0x057
- .set SPECIES_GRIMER, 0x058
- .set SPECIES_MUK, 0x059
- .set SPECIES_SHELLDER, 0x05a
- .set SPECIES_CLOYSTER, 0x05b
- .set SPECIES_GASTLY, 0x05c
- .set SPECIES_HAUNTER, 0x05d
- .set SPECIES_GENGAR, 0x05e
- .set SPECIES_ONIX, 0x05f
- .set SPECIES_DROWZEE, 0x060
- .set SPECIES_HYPNO, 0x061
- .set SPECIES_KRABBY, 0x062
- .set SPECIES_KINGLER, 0x063
- .set SPECIES_VOLTORB, 0x064
- .set SPECIES_ELECTRODE, 0x065
- .set SPECIES_EXEGGCUTE, 0x066
- .set SPECIES_EXEGGUTOR, 0x067
- .set SPECIES_CUBONE, 0x068
- .set SPECIES_MAROWAK, 0x069
- .set SPECIES_HITMONLEE, 0x06a
- .set SPECIES_HITMONCHAN, 0x06b
- .set SPECIES_LICKITUNG, 0x06c
- .set SPECIES_KOFFING, 0x06d
- .set SPECIES_WEEZING, 0x06e
- .set SPECIES_RHYHORN, 0x06f
- .set SPECIES_RHYDON, 0x070
- .set SPECIES_CHANSEY, 0x071
- .set SPECIES_TANGELA, 0x072
- .set SPECIES_KANGASKHAN, 0x073
- .set SPECIES_HORSEA, 0x074
- .set SPECIES_SEADRA, 0x075
- .set SPECIES_GOLDEEN, 0x076
- .set SPECIES_SEAKING, 0x077
- .set SPECIES_STARYU, 0x078
- .set SPECIES_STARMIE, 0x079
- .set SPECIES_MR_MIME, 0x07a
- .set SPECIES_SCYTHER, 0x07b
- .set SPECIES_JYNX, 0x07c
- .set SPECIES_ELECTABUZZ, 0x07d
- .set SPECIES_MAGMAR, 0x07e
- .set SPECIES_PINSIR, 0x07f
- .set SPECIES_TAUROS, 0x080
- .set SPECIES_MAGIKARP, 0x081
- .set SPECIES_GYARADOS, 0x082
- .set SPECIES_LAPRAS, 0x083
- .set SPECIES_DITTO, 0x084
- .set SPECIES_EEVEE, 0x085
- .set SPECIES_VAPOREON, 0x086
- .set SPECIES_JOLTEON, 0x087
- .set SPECIES_FLAREON, 0x088
- .set SPECIES_PORYGON, 0x089
- .set SPECIES_OMANYTE, 0x08a
- .set SPECIES_OMASTAR, 0x08b
- .set SPECIES_KABUTO, 0x08c
- .set SPECIES_KABUTOPS, 0x08d
- .set SPECIES_AERODACTYL, 0x08e
- .set SPECIES_SNORLAX, 0x08f
- .set SPECIES_ARTICUNO, 0x090
- .set SPECIES_ZAPDOS, 0x091
- .set SPECIES_MOLTRES, 0x092
- .set SPECIES_DRATINI, 0x093
- .set SPECIES_DRAGONAIR, 0x094
- .set SPECIES_DRAGONITE, 0x095
- .set SPECIES_MEWTWO, 0x096
- .set SPECIES_MEW, 0x097
- .set SPECIES_CHIKORITA, 0x098
- .set SPECIES_BAYLEEF, 0x099
- .set SPECIES_MEGANIUM, 0x09a
- .set SPECIES_CYNDAQUIL, 0x09b
- .set SPECIES_QUILAVA, 0x09c
- .set SPECIES_TYPHLOSION, 0x09d
- .set SPECIES_TOTODILE, 0x09e
- .set SPECIES_CROCONAW, 0x09f
- .set SPECIES_FERALIGATR, 0x0a0
- .set SPECIES_SENTRET, 0x0a1
- .set SPECIES_FURRET, 0x0a2
- .set SPECIES_HOOTHOOT, 0x0a3
- .set SPECIES_NOCTOWL, 0x0a4
- .set SPECIES_LEDYBA, 0x0a5
- .set SPECIES_LEDIAN, 0x0a6
- .set SPECIES_SPINARAK, 0x0a7
- .set SPECIES_ARIADOS, 0x0a8
- .set SPECIES_CROBAT, 0x0a9
- .set SPECIES_CHINCHOU, 0x0aa
- .set SPECIES_LANTURN, 0x0ab
- .set SPECIES_PICHU, 0x0ac
- .set SPECIES_CLEFFA, 0x0ad
- .set SPECIES_IGGLYBUFF, 0x0ae
- .set SPECIES_TOGEPI, 0x0af
- .set SPECIES_TOGETIC, 0x0b0
- .set SPECIES_NATU, 0x0b1
- .set SPECIES_XATU, 0x0b2
- .set SPECIES_MAREEP, 0x0b3
- .set SPECIES_FLAAFFY, 0x0b4
- .set SPECIES_AMPHAROS, 0x0b5
- .set SPECIES_BELLOSSOM, 0x0b6
- .set SPECIES_MARILL, 0x0b7
- .set SPECIES_AZUMARILL, 0x0b8
- .set SPECIES_SUDOWOODO, 0x0b9
- .set SPECIES_POLITOED, 0x0ba
- .set SPECIES_HOPPIP, 0x0bb
- .set SPECIES_SKIPLOOM, 0x0bc
- .set SPECIES_JUMPLUFF, 0x0bd
- .set SPECIES_AIPOM, 0x0be
- .set SPECIES_SUNKERN, 0x0bf
- .set SPECIES_SUNFLORA, 0x0c0
- .set SPECIES_YANMA, 0x0c1
- .set SPECIES_WOOPER, 0x0c2
- .set SPECIES_QUAGSIRE, 0x0c3
- .set SPECIES_ESPEON, 0x0c4
- .set SPECIES_UMBREON, 0x0c5
- .set SPECIES_MURKROW, 0x0c6
- .set SPECIES_SLOWKING, 0x0c7
- .set SPECIES_MISDREAVUS, 0x0c8
- .set SPECIES_UNOWN, 0x0c9
- .set SPECIES_WOBBUFFET, 0x0ca
- .set SPECIES_GIRAFARIG, 0x0cb
- .set SPECIES_PINECO, 0x0cc
- .set SPECIES_FORRETRESS, 0x0cd
- .set SPECIES_DUNSPARCE, 0x0ce
- .set SPECIES_GLIGAR, 0x0cf
- .set SPECIES_STEELIX, 0x0d0
- .set SPECIES_SNUBBULL, 0x0d1
- .set SPECIES_GRANBULL, 0x0d2
- .set SPECIES_QWILFISH, 0x0d3
- .set SPECIES_SCIZOR, 0x0d4
- .set SPECIES_SHUCKLE, 0x0d5
- .set SPECIES_HERACROSS, 0x0d6
- .set SPECIES_SNEASEL, 0x0d7
- .set SPECIES_TEDDIURSA, 0x0d8
- .set SPECIES_URSARING, 0x0d9
- .set SPECIES_SLUGMA, 0x0da
- .set SPECIES_MAGCARGO, 0x0db
- .set SPECIES_SWINUB, 0x0dc
- .set SPECIES_PILOSWINE, 0x0dd
- .set SPECIES_CORSOLA, 0x0de
- .set SPECIES_REMORAID, 0x0df
- .set SPECIES_OCTILLERY, 0x0e0
- .set SPECIES_DELIBIRD, 0x0e1
- .set SPECIES_MANTINE, 0x0e2
- .set SPECIES_SKARMORY, 0x0e3
- .set SPECIES_HOUNDOUR, 0x0e4
- .set SPECIES_HOUNDOOM, 0x0e5
- .set SPECIES_KINGDRA, 0x0e6
- .set SPECIES_PHANPY, 0x0e7
- .set SPECIES_DONPHAN, 0x0e8
- .set SPECIES_PORYGON2, 0x0e9
- .set SPECIES_STANTLER, 0x0ea
- .set SPECIES_SMEARGLE, 0x0eb
- .set SPECIES_TYROGUE, 0x0ec
- .set SPECIES_HITMONTOP, 0x0ed
- .set SPECIES_SMOOCHUM, 0x0ee
- .set SPECIES_ELEKID, 0x0ef
- .set SPECIES_MAGBY, 0x0f0
- .set SPECIES_MILTANK, 0x0f1
- .set SPECIES_BLISSEY, 0x0f2
- .set SPECIES_RAIKOU, 0x0f3
- .set SPECIES_ENTEI, 0x0f4
- .set SPECIES_SUICUNE, 0x0f5
- .set SPECIES_LARVITAR, 0x0f6
- .set SPECIES_PUPITAR, 0x0f7
- .set SPECIES_TYRANITAR, 0x0f8
- .set SPECIES_LUGIA, 0x0f9
- .set SPECIES_HO_OH, 0x0fa
- .set SPECIES_CELEBI, 0x0fb
- .set SPECIES_TREECKO, 0x115
- .set SPECIES_GROVYLE, 0x116
- .set SPECIES_SCEPTILE, 0x117
- .set SPECIES_TORCHIC, 0x118
- .set SPECIES_COMBUSKEN, 0x119
- .set SPECIES_BLAZIKEN, 0x11a
- .set SPECIES_MUDKIP, 0x11b
- .set SPECIES_MARSHTOMP, 0x11c
- .set SPECIES_SWAMPERT, 0x11d
- .set SPECIES_POOCHYENA, 0x11e
- .set SPECIES_MIGHTYENA, 0x11f
- .set SPECIES_ZIGZAGOON, 0x120
- .set SPECIES_LINOONE, 0x121
- .set SPECIES_WURMPLE, 0x122
- .set SPECIES_SILCOON, 0x123
- .set SPECIES_BEAUTIFLY, 0x124
- .set SPECIES_CASCOON, 0x125
- .set SPECIES_DUSTOX, 0x126
- .set SPECIES_LOTAD, 0x127
- .set SPECIES_LOMBRE, 0x128
- .set SPECIES_LUDICOLO, 0x129
- .set SPECIES_SEEDOT, 0x12a
- .set SPECIES_NUZLEAF, 0x12b
- .set SPECIES_SHIFTRY, 0x12c
- .set SPECIES_NINCADA, 0x12d
- .set SPECIES_NINJASK, 0x12e
- .set SPECIES_SHEDINJA, 0x12f
- .set SPECIES_TAILLOW, 0x130
- .set SPECIES_SWELLOW, 0x131
- .set SPECIES_SHROOMISH, 0x132
- .set SPECIES_BRELOOM, 0x133
- .set SPECIES_SPINDA, 0x134
- .set SPECIES_WINGULL, 0x135
- .set SPECIES_PELIPPER, 0x136
- .set SPECIES_SURSKIT, 0x137
- .set SPECIES_MASQUERAIN, 0x138
- .set SPECIES_WAILMER, 0x139
- .set SPECIES_WAILORD, 0x13a
- .set SPECIES_SKITTY, 0x13b
- .set SPECIES_DELCATTY, 0x13c
- .set SPECIES_KECLEON, 0x13d
- .set SPECIES_BALTOY, 0x13e
- .set SPECIES_CLAYDOL, 0x13f
- .set SPECIES_NOSEPASS, 0x140
- .set SPECIES_TORKOAL, 0x141
- .set SPECIES_SABLEYE, 0x142
- .set SPECIES_BARBOACH, 0x143
- .set SPECIES_WHISCASH, 0x144
- .set SPECIES_LUVDISC, 0x145
- .set SPECIES_CORPHISH, 0x146
- .set SPECIES_CRAWDAUNT, 0x147
- .set SPECIES_FEEBAS, 0x148
- .set SPECIES_MILOTIC, 0x149
- .set SPECIES_CARVANHA, 0x14a
- .set SPECIES_SHARPEDO, 0x14b
- .set SPECIES_TRAPINCH, 0x14c
- .set SPECIES_VIBRAVA, 0x14d
- .set SPECIES_FLYGON, 0x14e
- .set SPECIES_MAKUHITA, 0x14f
- .set SPECIES_HARIYAMA, 0x150
- .set SPECIES_ELECTRIKE, 0x151
- .set SPECIES_MANECTRIC, 0x152
- .set SPECIES_NUMEL, 0x153
- .set SPECIES_CAMERUPT, 0x154
- .set SPECIES_SPHEAL, 0x155
- .set SPECIES_SEALEO, 0x156
- .set SPECIES_WALREIN, 0x157
- .set SPECIES_CACNEA, 0x158
- .set SPECIES_CACTURNE, 0x159
- .set SPECIES_SNORUNT, 0x15a
- .set SPECIES_GLALIE, 0x15b
- .set SPECIES_LUNATONE, 0x15c
- .set SPECIES_SOLROCK, 0x15d
- .set SPECIES_AZURILL, 0x15e
- .set SPECIES_SPOINK, 0x15f
- .set SPECIES_GRUMPIG, 0x160
- .set SPECIES_PLUSLE, 0x161
- .set SPECIES_MINUN, 0x162
- .set SPECIES_MAWILE, 0x163
- .set SPECIES_MEDITITE, 0x164
- .set SPECIES_MEDICHAM, 0x165
- .set SPECIES_SWABLU, 0x166
- .set SPECIES_ALTARIA, 0x167
- .set SPECIES_WYNAUT, 0x168
- .set SPECIES_DUSKULL, 0x169
- .set SPECIES_DUSCLOPS, 0x16a
- .set SPECIES_ROSELIA, 0x16b
- .set SPECIES_SLAKOTH, 0x16c
- .set SPECIES_VIGOROTH, 0x16d
- .set SPECIES_SLAKING, 0x16e
- .set SPECIES_GULPIN, 0x16f
- .set SPECIES_SWALOT, 0x170
- .set SPECIES_TROPIUS, 0x171
- .set SPECIES_WHISMUR, 0x172
- .set SPECIES_LOUDRED, 0x173
- .set SPECIES_EXPLOUD, 0x174
- .set SPECIES_CLAMPERL, 0x175
- .set SPECIES_HUNTAIL, 0x176
- .set SPECIES_GOREBYSS, 0x177
- .set SPECIES_ABSOL, 0x178
- .set SPECIES_SHUPPET, 0x179
- .set SPECIES_BANETTE, 0x17a
- .set SPECIES_SEVIPER, 0x17b
- .set SPECIES_ZANGOOSE, 0x17c
- .set SPECIES_RELICANTH, 0x17d
- .set SPECIES_ARON, 0x17e
- .set SPECIES_LAIRON, 0x17f
- .set SPECIES_AGGRON, 0x180
- .set SPECIES_CASTFORM, 0x181
- .set SPECIES_VOLBEAT, 0x182
- .set SPECIES_ILLUMISE, 0x183
- .set SPECIES_LILEEP, 0x184
- .set SPECIES_CRADILY, 0x185
- .set SPECIES_ANORITH, 0x186
- .set SPECIES_ARMALDO, 0x187
- .set SPECIES_RALTS, 0x188
- .set SPECIES_KIRLIA, 0x189
- .set SPECIES_GARDEVOIR, 0x18a
- .set SPECIES_BAGON, 0x18b
- .set SPECIES_SHELGON, 0x18c
- .set SPECIES_SALAMENCE, 0x18d
- .set SPECIES_BELDUM, 0x18e
- .set SPECIES_METANG, 0x18f
- .set SPECIES_METAGROSS, 0x190
- .set SPECIES_REGIROCK, 0x191
- .set SPECIES_REGICE, 0x192
- .set SPECIES_REGISTEEL, 0x193
- .set SPECIES_KYOGRE, 0x194
- .set SPECIES_GROUDON, 0x195
- .set SPECIES_RAYQUAZA, 0x196
- .set SPECIES_LATIAS, 0x197
- .set SPECIES_LATIOS, 0x198
- .set SPECIES_JIRACHI, 0x199
- .set SPECIES_DEOXYS, 0x19a
- .set SPECIES_CHIMECHO, 0x19b
- .set SPECIES_EGG, 0x19c
diff --git a/constants/trainer_constants.inc b/constants/trainer_constants.inc
deleted file mode 100644
index f761b721c..000000000
--- a/constants/trainer_constants.inc
+++ /dev/null
@@ -1,1122 +0,0 @@
- .set TRAINER_NONE, 0
- .set TRAINER_SAWYER_1, 1
- .set TRAINER_GRUNT_1, 2
- .set TRAINER_GRUNT_2, 3
- .set TRAINER_GRUNT_3, 4
- .set TRAINER_GRUNT_4, 5
- .set TRAINER_GRUNT_5, 6
- .set TRAINER_GRUNT_6, 7
- .set TRAINER_GRUNT_7, 8
- .set TRAINER_GABRIELLE_1, 9
- .set TRAINER_GRUNT_8, 10
- .set TRAINER_MARCEL, 11
- .set TRAINER_ALBERTO, 12
- .set TRAINER_ED, 13
- .set TRAINER_GRUNT_9, 14
- .set TRAINER_DECLAN, 15
- .set TRAINER_GRUNT_10, 16
- .set TRAINER_GRUNT_11, 17
- .set TRAINER_GRUNT_12, 18
- .set TRAINER_GRUNT_13, 19
- .set TRAINER_GRUNT_14, 20
- .set TRAINER_GRUNT_15, 21
- .set TRAINER_GRUNT_16, 22
- .set TRAINER_GRUNT_17, 23
- .set TRAINER_GRUNT_18, 24
- .set TRAINER_GRUNT_19, 25
- .set TRAINER_GRUNT_20, 26
- .set TRAINER_GRUNT_21, 27
- .set TRAINER_GRUNT_22, 28
- .set TRAINER_FREDRICK, 29
- .set TRAINER_MATT, 30
- .set TRAINER_ZANDER, 31
- .set TRAINER_SHELLY_1, 32
- .set TRAINER_SHELLY_2, 33
- .set TRAINER_ARCHIE, 34
- .set TRAINER_LEAH, 35
- .set TRAINER_DAISY, 36
- .set TRAINER_ROSE_1, 37
- .set TRAINER_FELIX, 38
- .set TRAINER_VIOLET, 39
- .set TRAINER_ROSE_2, 40
- .set TRAINER_ROSE_3, 41
- .set TRAINER_ROSE_4, 42
- .set TRAINER_ROSE_5, 43
- .set TRAINER_DUSTY_1, 44
- .set TRAINER_CHIP, 45
- .set TRAINER_FOSTER, 46
- .set TRAINER_DUSTY_2, 47
- .set TRAINER_DUSTY_3, 48
- .set TRAINER_DUSTY_4, 49
- .set TRAINER_DUSTY_5, 50
- .set TRAINER_GABBY_AND_TY_1, 51
- .set TRAINER_GABBY_AND_TY_2, 52
- .set TRAINER_GABBY_AND_TY_3, 53
- .set TRAINER_GABBY_AND_TY_4, 54
- .set TRAINER_GABBY_AND_TY_5, 55
- .set TRAINER_GABBY_AND_TY_6, 56
- .set TRAINER_LOLA_1, 57
- .set TRAINER_AUSTINA, 58
- .set TRAINER_GWEN, 59
- .set TRAINER_LOLA_2, 60
- .set TRAINER_LOLA_3, 61
- .set TRAINER_LOLA_4, 62
- .set TRAINER_LOLA_5, 63
- .set TRAINER_RICKY_1, 64
- .set TRAINER_SIMON, 65
- .set TRAINER_CHARLIE, 66
- .set TRAINER_RICKY_2, 67
- .set TRAINER_RICKY_3, 68
- .set TRAINER_RICKY_4, 69
- .set TRAINER_RICKY_5, 70
- .set TRAINER_RANDALL, 71
- .set TRAINER_PARKER, 72
- .set TRAINER_GEORGE, 73
- .set TRAINER_BERKE, 74
- .set TRAINER_BRAXTON, 75
- .set TRAINER_VINCENT, 76
- .set TRAINER_LEROY, 77
- .set TRAINER_WILTON_1, 78
- .set TRAINER_EDGAR, 79
- .set TRAINER_ALBERT, 80
- .set TRAINER_SAMUEL, 81
- .set TRAINER_VITO, 82
- .set TRAINER_OWEN, 83
- .set TRAINER_WILTON_2, 84
- .set TRAINER_WILTON_3, 85
- .set TRAINER_WILTON_4, 86
- .set TRAINER_WILTON_5, 87
- .set TRAINER_WARREN, 88
- .set TRAINER_MARY, 89
- .set TRAINER_ALEXIA, 90
- .set TRAINER_JODY, 91
- .set TRAINER_WENDY, 92
- .set TRAINER_KEIRA, 93
- .set TRAINER_BROOKE_1, 94
- .set TRAINER_JENNIFER, 95
- .set TRAINER_HOPE, 96
- .set TRAINER_SHANNON, 97
- .set TRAINER_MICHELLE, 98
- .set TRAINER_CAROLINE, 99
- .set TRAINER_JULIE, 100
- .set TRAINER_BROOKE_2, 101
- .set TRAINER_BROOKE_3, 102
- .set TRAINER_BROOKE_4, 103
- .set TRAINER_BROOKE_5, 104
- .set TRAINER_PATRICIA, 105
- .set TRAINER_KINDRA, 106
- .set TRAINER_TAMMY, 107
- .set TRAINER_VALERIE_1, 108
- .set TRAINER_TASHA, 109
- .set TRAINER_VALERIE_2, 110
- .set TRAINER_VALERIE_3, 111
- .set TRAINER_VALERIE_4, 112
- .set TRAINER_VALERIE_5, 113
- .set TRAINER_CINDY_1, 114
- .set TRAINER_DAPHNE, 115
- .set TRAINER_GRUNT_23, 116
- .set TRAINER_CINDY_2, 117
- .set TRAINER_BRIANNA, 118
- .set TRAINER_NAOMI, 119
- .set TRAINER_CINDY_3, 120
- .set TRAINER_CINDY_4, 121
- .set TRAINER_CINDY_5, 122
- .set TRAINER_CINDY_6, 123
- .set TRAINER_MELISSA, 124
- .set TRAINER_SHEILA, 125
- .set TRAINER_SHIRLEY, 126
- .set TRAINER_JESSICA_1, 127
- .set TRAINER_CONNIE, 128
- .set TRAINER_BRIDGET, 129
- .set TRAINER_OLIVIA, 130
- .set TRAINER_TIFFANY, 131
- .set TRAINER_JESSICA_2, 132
- .set TRAINER_JESSICA_3, 133
- .set TRAINER_JESSICA_4, 134
- .set TRAINER_JESSICA_5, 135
- .set TRAINER_WINSTON_1, 136
- .set TRAINER_MOLLIE, 137
- .set TRAINER_GARRET, 138
- .set TRAINER_WINSTON_2, 139
- .set TRAINER_WINSTON_3, 140
- .set TRAINER_WINSTON_4, 141
- .set TRAINER_WINSTON_5, 142
- .set TRAINER_STEVE_1, 143
- .set TRAINER_THALIA_1, 144
- .set TRAINER_MARK, 145
- .set TRAINER_GRUNT_24, 146
- .set TRAINER_STEVE_2, 147
- .set TRAINER_STEVE_3, 148
- .set TRAINER_STEVE_4, 149
- .set TRAINER_STEVE_5, 150
- .set TRAINER_LUIS, 151
- .set TRAINER_DOMINIK, 152
- .set TRAINER_DOUGLAS, 153
- .set TRAINER_DARRIN, 154
- .set TRAINER_TONY_1, 155
- .set TRAINER_JEROME, 156
- .set TRAINER_MATTHEW, 157
- .set TRAINER_DAVID, 158
- .set TRAINER_SPENCER, 159
- .set TRAINER_ROLAND, 160
- .set TRAINER_NOLEN, 161
- .set TRAINER_STAN, 162
- .set TRAINER_BARRY, 163
- .set TRAINER_DEAN, 164
- .set TRAINER_RODNEY, 165
- .set TRAINER_RICHARD, 166
- .set TRAINER_HERMAN, 167
- .set TRAINER_SANTIAGO, 168
- .set TRAINER_GILBERT, 169
- .set TRAINER_FRANKLIN, 170
- .set TRAINER_KEVIN, 171
- .set TRAINER_JACK, 172
- .set TRAINER_DUDLEY, 173
- .set TRAINER_CHAD, 174
- .set TRAINER_TONY_2, 175
- .set TRAINER_TONY_3, 176
- .set TRAINER_TONY_4, 177
- .set TRAINER_TONY_5, 178
- .set TRAINER_TAKAO, 179
- .set TRAINER_HITOSHI, 180
- .set TRAINER_KIYO, 181
- .set TRAINER_KOICHI, 182
- .set TRAINER_NOB_1, 183
- .set TRAINER_NOB_2, 184
- .set TRAINER_NOB_3, 185
- .set TRAINER_NOB_4, 186
- .set TRAINER_NOB_5, 187
- .set TRAINER_YUJI, 188
- .set TRAINER_DAISUKE, 189
- .set TRAINER_ATSUSHI, 190
- .set TRAINER_KIRK, 191
- .set TRAINER_GRUNT_25, 192
- .set TRAINER_GRUNT_26, 193
- .set TRAINER_SHAWN, 194
- .set TRAINER_FERNANDO_1, 195
- .set TRAINER_DALTON_1, 196
- .set TRAINER_DALTON_2, 197
- .set TRAINER_DALTON_3, 198
- .set TRAINER_DALTON_4, 199
- .set TRAINER_DALTON_5, 200
- .set TRAINER_COLE, 201
- .set TRAINER_JEFF, 202
- .set TRAINER_AXLE, 203
- .set TRAINER_JACE, 204
- .set TRAINER_KEEGAN, 205
- .set TRAINER_BERNIE_1, 206
- .set TRAINER_BERNIE_2, 207
- .set TRAINER_BERNIE_3, 208
- .set TRAINER_BERNIE_4, 209
- .set TRAINER_BERNIE_5, 210
- .set TRAINER_DREW, 211
- .set TRAINER_BEAU, 212
- .set TRAINER_LARRY, 213
- .set TRAINER_SHANE, 214
- .set TRAINER_JUSTIN, 215
- .set TRAINER_ETHAN_1, 216
- .set TRAINER_AUTUMN, 217
- .set TRAINER_TRAVIS, 218
- .set TRAINER_ETHAN_2, 219
- .set TRAINER_ETHAN_3, 220
- .set TRAINER_ETHAN_4, 221
- .set TRAINER_ETHAN_5, 222
- .set TRAINER_BRENT, 223
- .set TRAINER_DONALD, 224
- .set TRAINER_TAYLOR, 225
- .set TRAINER_JEFFREY_1, 226
- .set TRAINER_DEREK, 227
- .set TRAINER_JEFFREY_2, 228
- .set TRAINER_JEFFREY_3, 229
- .set TRAINER_JEFFREY_4, 230
- .set TRAINER_JEFFREY_5, 231
- .set TRAINER_EDWARD, 232
- .set TRAINER_PRESTON, 233
- .set TRAINER_VIRGIL, 234
- .set TRAINER_BLAKE, 235
- .set TRAINER_WILLIAM, 236
- .set TRAINER_JOSHUA, 237
- .set TRAINER_CAMERON_1, 238
- .set TRAINER_CAMERON_2, 239
- .set TRAINER_CAMERON_3, 240
- .set TRAINER_CAMERON_4, 241
- .set TRAINER_CAMERON_5, 242
- .set TRAINER_JACLYN, 243
- .set TRAINER_HANNAH, 244
- .set TRAINER_SAMANTHA, 245
- .set TRAINER_MAURA, 246
- .set TRAINER_KAYLA, 247
- .set TRAINER_ALEXIS, 248
- .set TRAINER_JACKI_1, 249
- .set TRAINER_JACKI_2, 250
- .set TRAINER_JACKI_3, 251
- .set TRAINER_JACKI_4, 252
- .set TRAINER_JACKI_5, 253
- .set TRAINER_WALTER_1, 254
- .set TRAINER_MICAH, 255
- .set TRAINER_THOMAS, 256
- .set TRAINER_WALTER_2, 257
- .set TRAINER_WALTER_3, 258
- .set TRAINER_WALTER_4, 259
- .set TRAINER_WALTER_5, 260
- .set TRAINER_SIDNEY, 261
- .set TRAINER_PHOEBE, 262
- .set TRAINER_GLACIA, 263
- .set TRAINER_DRAKE, 264
- .set TRAINER_ROXANNE_1, 265
- .set TRAINER_BRAWLY_1, 266
- .set TRAINER_WATTSON_1, 267
- .set TRAINER_FLANNERY_1, 268
- .set TRAINER_NORMAN_1, 269
- .set TRAINER_WINONA_1, 270
- .set TRAINER_TATE_AND_LIZA_1, 271
- .set TRAINER_JUAN_1, 272
- .set TRAINER_JERRY_1, 273
- .set TRAINER_TED, 274
- .set TRAINER_PAUL, 275
- .set TRAINER_JERRY_2, 276
- .set TRAINER_JERRY_3, 277
- .set TRAINER_JERRY_4, 278
- .set TRAINER_JERRY_5, 279
- .set TRAINER_KAREN_1, 280
- .set TRAINER_GEORGIA, 281
- .set TRAINER_KAREN_2, 282
- .set TRAINER_KAREN_3, 283
- .set TRAINER_KAREN_4, 284
- .set TRAINER_KAREN_5, 285
- .set TRAINER_KATE_AND_JOY, 286
- .set TRAINER_ANNA_AND_MEG_1, 287
- .set TRAINER_ANNA_AND_MEG_2, 288
- .set TRAINER_ANNA_AND_MEG_3, 289
- .set TRAINER_ANNA_AND_MEG_4, 290
- .set TRAINER_ANNA_AND_MEG_5, 291
- .set TRAINER_VICTOR, 292
- .set TRAINER_MIGUEL_1, 293
- .set TRAINER_COLTON, 294
- .set TRAINER_MIGUEL_2, 295
- .set TRAINER_MIGUEL_3, 296
- .set TRAINER_MIGUEL_4, 297
- .set TRAINER_MIGUEL_5, 298
- .set TRAINER_VICTORIA, 299
- .set TRAINER_VANESSA, 300
- .set TRAINER_BETHANY, 301
- .set TRAINER_ISABEL_1, 302
- .set TRAINER_ISABEL_2, 303
- .set TRAINER_ISABEL_3, 304
- .set TRAINER_ISABEL_4, 305
- .set TRAINER_ISABEL_5, 306
- .set TRAINER_TIMOTHY_1, 307
- .set TRAINER_TIMOTHY_2, 308
- .set TRAINER_TIMOTHY_3, 309
- .set TRAINER_TIMOTHY_4, 310
- .set TRAINER_TIMOTHY_5, 311
- .set TRAINER_VICKY, 312
- .set TRAINER_SHELBY_1, 313
- .set TRAINER_SHELBY_2, 314
- .set TRAINER_SHELBY_3, 315
- .set TRAINER_SHELBY_4, 316
- .set TRAINER_SHELBY_5, 317
- .set TRAINER_CALVIN_1, 318
- .set TRAINER_BILLY, 319
- .set TRAINER_JOSH, 320
- .set TRAINER_TOMMY, 321
- .set TRAINER_JOEY, 322
- .set TRAINER_BEN, 323
- .set TRAINER_QUINCY, 324
- .set TRAINER_KATELYNN, 325
- .set TRAINER_JAYLEN, 326
- .set TRAINER_DILLON, 327
- .set TRAINER_CALVIN_2, 328
- .set TRAINER_CALVIN_3, 329
- .set TRAINER_CALVIN_4, 330
- .set TRAINER_CALVIN_5, 331
- .set TRAINER_EDDIE, 332
- .set TRAINER_ALLEN, 333
- .set TRAINER_TIMMY, 334
- .set TRAINER_WALLACE, 335
- .set TRAINER_ANDREW, 336
- .set TRAINER_IVAN, 337
- .set TRAINER_CLAUDE, 338
- .set TRAINER_ELLIOT_1, 339
- .set TRAINER_NED, 340
- .set TRAINER_DALE, 341
- .set TRAINER_NOLAN, 342
- .set TRAINER_BARNY, 343
- .set TRAINER_WADE, 344
- .set TRAINER_CARTER, 345
- .set TRAINER_ELLIOT_2, 346
- .set TRAINER_ELLIOT_3, 347
- .set TRAINER_ELLIOT_4, 348
- .set TRAINER_ELLIOT_5, 349
- .set TRAINER_RONALD, 350
- .set TRAINER_JACOB, 351
- .set TRAINER_ANTHONY, 352
- .set TRAINER_BENJAMIN_1, 353
- .set TRAINER_BENJAMIN_2, 354
- .set TRAINER_BENJAMIN_3, 355
- .set TRAINER_BENJAMIN_4, 356
- .set TRAINER_BENJAMIN_5, 357
- .set TRAINER_ABIGAIL_1, 358
- .set TRAINER_JASMINE, 359
- .set TRAINER_ABIGAIL_2, 360
- .set TRAINER_ABIGAIL_3, 361
- .set TRAINER_ABIGAIL_4, 362
- .set TRAINER_ABIGAIL_5, 363
- .set TRAINER_DYLAN_1, 364
- .set TRAINER_DYLAN_2, 365
- .set TRAINER_DYLAN_3, 366
- .set TRAINER_DYLAN_4, 367
- .set TRAINER_DYLAN_5, 368
- .set TRAINER_MARIA_1, 369
- .set TRAINER_MARIA_2, 370
- .set TRAINER_MARIA_3, 371
- .set TRAINER_MARIA_4, 372
- .set TRAINER_MARIA_5, 373
- .set TRAINER_CAMDEN, 374
- .set TRAINER_DEMETRIUS, 375
- .set TRAINER_ISAIAH_1, 376
- .set TRAINER_PABLO_1, 377
- .set TRAINER_CHASE, 378
- .set TRAINER_ISAIAH_2, 379
- .set TRAINER_ISAIAH_3, 380
- .set TRAINER_ISAIAH_4, 381
- .set TRAINER_ISAIAH_5, 382
- .set TRAINER_ISOBEL, 383
- .set TRAINER_DONNY, 384
- .set TRAINER_TALIA, 385
- .set TRAINER_KATELYN_1, 386
- .set TRAINER_ALLISON, 387
- .set TRAINER_KATELYN_2, 388
- .set TRAINER_KATELYN_3, 389
- .set TRAINER_KATELYN_4, 390
- .set TRAINER_KATELYN_5, 391
- .set TRAINER_NICOLAS_1, 392
- .set TRAINER_NICOLAS_2, 393
- .set TRAINER_NICOLAS_3, 394
- .set TRAINER_NICOLAS_4, 395
- .set TRAINER_NICOLAS_5, 396
- .set TRAINER_AARON, 397
- .set TRAINER_PERRY, 398
- .set TRAINER_HUGH, 399
- .set TRAINER_PHIL, 400
- .set TRAINER_JARED, 401
- .set TRAINER_HUMBERTO, 402
- .set TRAINER_PRESLEY, 403
- .set TRAINER_EDWARDO, 404
- .set TRAINER_COLIN, 405
- .set TRAINER_ROBERT_1, 406
- .set TRAINER_BENNY, 407
- .set TRAINER_CHESTER, 408
- .set TRAINER_ROBERT_2, 409
- .set TRAINER_ROBERT_3, 410
- .set TRAINER_ROBERT_4, 411
- .set TRAINER_ROBERT_5, 412
- .set TRAINER_ALEX, 413
- .set TRAINER_BECK, 414
- .set TRAINER_YASU, 415
- .set TRAINER_TAKASHI, 416
- .set TRAINER_DIANNE, 417
- .set TRAINER_JANI, 418
- .set TRAINER_LAO_1, 419
- .set TRAINER_LUNG, 420
- .set TRAINER_LAO_2, 421
- .set TRAINER_LAO_3, 422
- .set TRAINER_LAO_4, 423
- .set TRAINER_LAO_5, 424
- .set TRAINER_JOCELYN, 425
- .set TRAINER_LAURA, 426
- .set TRAINER_CYNDY_1, 427
- .set TRAINER_CORA, 428
- .set TRAINER_PAULA, 429
- .set TRAINER_CYNDY_2, 430
- .set TRAINER_CYNDY_3, 431
- .set TRAINER_CYNDY_4, 432
- .set TRAINER_CYNDY_5, 433
- .set TRAINER_MADELINE_1, 434
- .set TRAINER_CLARISSA, 435
- .set TRAINER_ANGELICA, 436
- .set TRAINER_MADELINE_2, 437
- .set TRAINER_MADELINE_3, 438
- .set TRAINER_MADELINE_4, 439
- .set TRAINER_MADELINE_5, 440
- .set TRAINER_BEVERLY, 441
- .set TRAINER_IMANI, 442
- .set TRAINER_KYLA, 443
- .set TRAINER_DENISE, 444
- .set TRAINER_BETH, 445
- .set TRAINER_TARA, 446
- .set TRAINER_MISSY, 447
- .set TRAINER_ALICE, 448
- .set TRAINER_JENNY_1, 449
- .set TRAINER_GRACE, 450
- .set TRAINER_TANYA, 451
- .set TRAINER_SHARON, 452
- .set TRAINER_NIKKI, 453
- .set TRAINER_BRENDA, 454
- .set TRAINER_KATIE, 455
- .set TRAINER_SUSIE, 456
- .set TRAINER_KARA, 457
- .set TRAINER_DANA, 458
- .set TRAINER_SIENNA, 459
- .set TRAINER_DEBRA, 460
- .set TRAINER_LINDA, 461
- .set TRAINER_KAYLEE, 462
- .set TRAINER_LAUREL, 463
- .set TRAINER_CARLEE, 464
- .set TRAINER_JENNY_2, 465
- .set TRAINER_JENNY_3, 466
- .set TRAINER_JENNY_4, 467
- .set TRAINER_JENNY_5, 468
- .set TRAINER_HEIDI, 469
- .set TRAINER_BECKY, 470
- .set TRAINER_CAROL, 471
- .set TRAINER_NANCY, 472
- .set TRAINER_MARTHA, 473
- .set TRAINER_DIANA_1, 474
- .set TRAINER_CEDRIC, 475
- .set TRAINER_IRENE, 476
- .set TRAINER_DIANA_2, 477
- .set TRAINER_DIANA_3, 478
- .set TRAINER_DIANA_4, 479
- .set TRAINER_DIANA_5, 480
- .set TRAINER_AMY_AND_LIV_1, 481
- .set TRAINER_AMY_AND_LIV_2, 482
- .set TRAINER_GINA_AND_MIA_1, 483
- .set TRAINER_MIU_AND_YUKI, 484
- .set TRAINER_AMY_AND_LIV_3, 485
- .set TRAINER_GINA_AND_MIA_2, 486
- .set TRAINER_AMY_AND_LIV_4, 487
- .set TRAINER_AMY_AND_LIV_5, 488
- .set TRAINER_AMY_AND_LIV_6, 489
- .set TRAINER_HUEY, 490
- .set TRAINER_EDMOND, 491
- .set TRAINER_ERNEST_1, 492
- .set TRAINER_DWAYNE, 493
- .set TRAINER_PHILLIP, 494
- .set TRAINER_LEONARD, 495
- .set TRAINER_DUNCAN, 496
- .set TRAINER_ERNEST_2, 497
- .set TRAINER_ERNEST_3, 498
- .set TRAINER_ERNEST_4, 499
- .set TRAINER_ERNEST_5, 500
- .set TRAINER_ELI, 501
- .set TRAINER_ANNIKA, 502
- .set TRAINER_JAZMYN, 503
- .set TRAINER_JONAS, 504
- .set TRAINER_KAYLEY, 505
- .set TRAINER_AURON, 506
- .set TRAINER_KELVIN, 507
- .set TRAINER_MARLEY, 508
- .set TRAINER_REYNA, 509
- .set TRAINER_HUDSON, 510
- .set TRAINER_CONOR, 511
- .set TRAINER_EDWIN_1, 512
- .set TRAINER_HECTOR, 513
- .set TRAINER_TABITHA_1, 514
- .set TRAINER_EDWIN_2, 515
- .set TRAINER_EDWIN_3, 516
- .set TRAINER_EDWIN_4, 517
- .set TRAINER_EDWIN_5, 518
- .set TRAINER_WALLY_1, 519
- .set TRAINER_BRENDAN_1, 520
- .set TRAINER_BRENDAN_2, 521
- .set TRAINER_BRENDAN_3, 522
- .set TRAINER_BRENDAN_4, 523
- .set TRAINER_BRENDAN_5, 524
- .set TRAINER_BRENDAN_6, 525
- .set TRAINER_BRENDAN_7, 526
- .set TRAINER_BRENDAN_8, 527
- .set TRAINER_BRENDAN_9, 528
- .set TRAINER_MAY_1, 529
- .set TRAINER_MAY_2, 530
- .set TRAINER_MAY_3, 531
- .set TRAINER_MAY_4, 532
- .set TRAINER_MAY_5, 533
- .set TRAINER_MAY_6, 534
- .set TRAINER_MAY_7, 535
- .set TRAINER_MAY_8, 536
- .set TRAINER_MAY_9, 537
- .set TRAINER_ISAAC_1, 538
- .set TRAINER_DAVIS, 539
- .set TRAINER_MITCHELL, 540
- .set TRAINER_ISAAC_2, 541
- .set TRAINER_ISAAC_3, 542
- .set TRAINER_ISAAC_4, 543
- .set TRAINER_ISAAC_5, 544
- .set TRAINER_LYDIA_1, 545
- .set TRAINER_HALLE, 546
- .set TRAINER_GARRISON, 547
- .set TRAINER_LYDIA_2, 548
- .set TRAINER_LYDIA_3, 549
- .set TRAINER_LYDIA_4, 550
- .set TRAINER_LYDIA_5, 551
- .set TRAINER_JACKSON_1, 552
- .set TRAINER_LORENZO, 553
- .set TRAINER_SEBASTIAN, 554
- .set TRAINER_JACKSON_2, 555
- .set TRAINER_JACKSON_3, 556
- .set TRAINER_JACKSON_4, 557
- .set TRAINER_JACKSON_5, 558
- .set TRAINER_CATHERINE_1, 559
- .set TRAINER_JENNA, 560
- .set TRAINER_SOPHIA, 561
- .set TRAINER_CATHERINE_2, 562
- .set TRAINER_CATHERINE_3, 563
- .set TRAINER_CATHERINE_4, 564
- .set TRAINER_CATHERINE_5, 565
- .set TRAINER_JULIO, 566
- .set TRAINER_GRUNT_27, 567
- .set TRAINER_GRUNT_28, 568
- .set TRAINER_GRUNT_29, 569
- .set TRAINER_GRUNT_30, 570
- .set TRAINER_MARC, 571
- .set TRAINER_BRENDEN, 572
- .set TRAINER_LILITH, 573
- .set TRAINER_CRISTIAN, 574
- .set TRAINER_SYLVIA, 575
- .set TRAINER_LEONARDO, 576
- .set TRAINER_ATHENA, 577
- .set TRAINER_HARRISON, 578
- .set TRAINER_GRUNT_31, 579
- .set TRAINER_CLARENCE, 580
- .set TRAINER_TERRY, 581
- .set TRAINER_NATE, 582
- .set TRAINER_KATHLEEN, 583
- .set TRAINER_CLIFFORD, 584
- .set TRAINER_NICHOLAS, 585
- .set TRAINER_GRUNT_32, 586
- .set TRAINER_GRUNT_33, 587
- .set TRAINER_GRUNT_34, 588
- .set TRAINER_GRUNT_35, 589
- .set TRAINER_GRUNT_36, 590
- .set TRAINER_MACEY, 591
- .set TRAINER_BRENDAN_10, 592
- .set TRAINER_BRENDAN_11, 593
- .set TRAINER_PAXTON, 594
- .set TRAINER_ISABELLA, 595
- .set TRAINER_GRUNT_37, 596
- .set TRAINER_TABITHA_2, 597
- .set TRAINER_JONATHAN, 598
- .set TRAINER_BRENDAN_12, 599
- .set TRAINER_MAY_10, 600
- .set TRAINER_MAXIE_1, 601
- .set TRAINER_MAXIE_2, 602
- .set TRAINER_TIANA, 603
- .set TRAINER_HALEY_1, 604
- .set TRAINER_JANICE, 605
- .set TRAINER_VIVI, 606
- .set TRAINER_HALEY_2, 607
- .set TRAINER_HALEY_3, 608
- .set TRAINER_HALEY_4, 609
- .set TRAINER_HALEY_5, 610
- .set TRAINER_SALLY, 611
- .set TRAINER_ROBIN, 612
- .set TRAINER_ANDREA, 613
- .set TRAINER_CRISSY, 614
- .set TRAINER_RICK, 615
- .set TRAINER_LYLE, 616
- .set TRAINER_JOSE, 617
- .set TRAINER_DOUG, 618
- .set TRAINER_GREG, 619
- .set TRAINER_KENT, 620
- .set TRAINER_JAMES_1, 621
- .set TRAINER_JAMES_2, 622
- .set TRAINER_JAMES_3, 623
- .set TRAINER_JAMES_4, 624
- .set TRAINER_JAMES_5, 625
- .set TRAINER_BRICE, 626
- .set TRAINER_TRENT_1, 627
- .set TRAINER_LENNY, 628
- .set TRAINER_LUCAS_1, 629
- .set TRAINER_ALAN, 630
- .set TRAINER_CLARK, 631
- .set TRAINER_ERIC, 632
- .set TRAINER_LUCAS_2, 633
- .set TRAINER_MIKE_1, 634
- .set TRAINER_MIKE_2, 635
- .set TRAINER_TRENT_2, 636
- .set TRAINER_TRENT_3, 637
- .set TRAINER_TRENT_4, 638
- .set TRAINER_TRENT_5, 639
- .set TRAINER_DEZ_AND_LUKE, 640
- .set TRAINER_LEA_AND_JED, 641
- .set TRAINER_KIRA_AND_DAN_1, 642
- .set TRAINER_KIRA_AND_DAN_2, 643
- .set TRAINER_KIRA_AND_DAN_3, 644
- .set TRAINER_KIRA_AND_DAN_4, 645
- .set TRAINER_KIRA_AND_DAN_5, 646
- .set TRAINER_JOHANNA, 647
- .set TRAINER_GERALD, 648
- .set TRAINER_VIVIAN, 649
- .set TRAINER_DANIELLE, 650
- .set TRAINER_HIDEO, 651
- .set TRAINER_KEIGO, 652
- .set TRAINER_RILEY, 653
- .set TRAINER_FLINT, 654
- .set TRAINER_ASHLEY, 655
- .set TRAINER_WALLY_2, 656
- .set TRAINER_WALLY_3, 657
- .set TRAINER_WALLY_4, 658
- .set TRAINER_WALLY_5, 659
- .set TRAINER_WALLY_6, 660
- .set TRAINER_BRENDAN_13, 661
- .set TRAINER_BRENDAN_14, 662
- .set TRAINER_BRENDAN_15, 663
- .set TRAINER_MAY_11, 664
- .set TRAINER_MAY_12, 665
- .set TRAINER_MAY_13, 666
- .set TRAINER_JONAH, 667
- .set TRAINER_HENRY, 668
- .set TRAINER_ROGER, 669
- .set TRAINER_ALEXA, 670
- .set TRAINER_RUBEN, 671
- .set TRAINER_KOJI_1, 672
- .set TRAINER_WAYNE, 673
- .set TRAINER_AIDAN, 674
- .set TRAINER_REED, 675
- .set TRAINER_TISHA, 676
- .set TRAINER_TORI_AND_TIA, 677
- .set TRAINER_KIM_AND_IRIS, 678
- .set TRAINER_TYRA_AND_IVY, 679
- .set TRAINER_MEL_AND_PAUL, 680
- .set TRAINER_JOHN_AND_JAY_1, 681
- .set TRAINER_JOHN_AND_JAY_2, 682
- .set TRAINER_JOHN_AND_JAY_3, 683
- .set TRAINER_JOHN_AND_JAY_4, 684
- .set TRAINER_JOHN_AND_JAY_5, 685
- .set TRAINER_RELI_AND_IAN, 686
- .set TRAINER_LILA_AND_ROY_1, 687
- .set TRAINER_LILA_AND_ROY_2, 688
- .set TRAINER_LILA_AND_ROY_3, 689
- .set TRAINER_LILA_AND_ROY_4, 690
- .set TRAINER_LILA_AND_ROY_5, 691
- .set TRAINER_LISA_AND_RAY, 692
- .set TRAINER_CHRIS, 693
- .set TRAINER_DAWSON, 694
- .set TRAINER_SARAH, 695
- .set TRAINER_DARIAN, 696
- .set TRAINER_HAILEY, 697
- .set TRAINER_CHANDLER, 698
- .set TRAINER_KALEB, 699
- .set TRAINER_JOSEPH, 700
- .set TRAINER_ALYSSA, 701
- .set TRAINER_MARCOS, 702
- .set TRAINER_RHETT, 703
- .set TRAINER_TYRON, 704
- .set TRAINER_CELINA, 705
- .set TRAINER_BIANCA, 706
- .set TRAINER_HAYDEN, 707
- .set TRAINER_SOPHIE, 708
- .set TRAINER_COBY, 709
- .set TRAINER_LAWRENCE, 710
- .set TRAINER_WYATT, 711
- .set TRAINER_ANGELINA, 712
- .set TRAINER_KAI, 713
- .set TRAINER_CHARLOTTE, 714
- .set TRAINER_DEANDRE, 715
- .set TRAINER_GRUNT_38, 716
- .set TRAINER_GRUNT_39, 717
- .set TRAINER_GRUNT_40, 718
- .set TRAINER_GRUNT_41, 719
- .set TRAINER_GRUNT_42, 720
- .set TRAINER_GRUNT_43, 721
- .set TRAINER_GRUNT_44, 722
- .set TRAINER_GRUNT_45, 723
- .set TRAINER_GRUNT_46, 724
- .set TRAINER_GRUNT_47, 725
- .set TRAINER_GRUNT_48, 726
- .set TRAINER_GRUNT_49, 727
- .set TRAINER_GRUNT_50, 728
- .set TRAINER_GRUNT_51, 729
- .set TRAINER_GRUNT_52, 730
- .set TRAINER_GRUNT_53, 731
- .set TRAINER_TABITHA_3, 732
- .set TRAINER_DARCY, 733
- .set TRAINER_MAXIE_3, 734
- .set TRAINER_PETE, 735
- .set TRAINER_ISABELLE, 736
- .set TRAINER_ANDRES_1, 737
- .set TRAINER_JOSUE, 738
- .set TRAINER_CAMRON, 739
- .set TRAINER_CORY_1, 740
- .set TRAINER_CAROLINA, 741
- .set TRAINER_ELIJAH, 742
- .set TRAINER_CELIA, 743
- .set TRAINER_BRYAN, 744
- .set TRAINER_BRANDEN, 745
- .set TRAINER_BRYANT, 746
- .set TRAINER_SHAYLA, 747
- .set TRAINER_KYRA, 748
- .set TRAINER_JAIDEN, 749
- .set TRAINER_ALIX, 750
- .set TRAINER_HELENE, 751
- .set TRAINER_MARLENE, 752
- .set TRAINER_DEVAN, 753
- .set TRAINER_JOHNSON, 754
- .set TRAINER_MELINA, 755
- .set TRAINER_BRANDI, 756
- .set TRAINER_AISHA, 757
- .set TRAINER_MAKAYLA, 758
- .set TRAINER_FABIAN, 759
- .set TRAINER_DAYTON, 760
- .set TRAINER_RACHEL, 761
- .set TRAINER_LEONEL, 762
- .set TRAINER_CALLIE, 763
- .set TRAINER_CALE, 764
- .set TRAINER_MYLES, 765
- .set TRAINER_PAT, 766
- .set TRAINER_CRISTIN_1, 767
- .set TRAINER_MAY_14, 768
- .set TRAINER_MAY_15, 769
- .set TRAINER_ROXANNE_2, 770
- .set TRAINER_ROXANNE_3, 771
- .set TRAINER_ROXANNE_4, 772
- .set TRAINER_ROXANNE_5, 773
- .set TRAINER_BRAWLY_2, 774
- .set TRAINER_BRAWLY_3, 775
- .set TRAINER_BRAWLY_4, 776
- .set TRAINER_BRAWLY_5, 777
- .set TRAINER_WATTSON_2, 778
- .set TRAINER_WATTSON_3, 779
- .set TRAINER_WATTSON_4, 780
- .set TRAINER_WATTSON_5, 781
- .set TRAINER_FLANNERY_2, 782
- .set TRAINER_FLANNERY_3, 783
- .set TRAINER_FLANNERY_4, 784
- .set TRAINER_FLANNERY_5, 785
- .set TRAINER_NORMAN_2, 786
- .set TRAINER_NORMAN_3, 787
- .set TRAINER_NORMAN_4, 788
- .set TRAINER_NORMAN_5, 789
- .set TRAINER_WINONA_2, 790
- .set TRAINER_WINONA_3, 791
- .set TRAINER_WINONA_4, 792
- .set TRAINER_WINONA_5, 793
- .set TRAINER_TATE_AND_LIZA_2, 794
- .set TRAINER_TATE_AND_LIZA_3, 795
- .set TRAINER_TATE_AND_LIZA_4, 796
- .set TRAINER_TATE_AND_LIZA_5, 797
- .set TRAINER_JUAN_2, 798
- .set TRAINER_JUAN_3, 799
- .set TRAINER_JUAN_4, 800
- .set TRAINER_JUAN_5, 801
- .set TRAINER_ANGELO, 802
- .set TRAINER_DARIUS, 803
- .set TRAINER_STEVEN, 804
- .set TRAINER_ANABEL, 805
- .set TRAINER_TUCKER, 806
- .set TRAINER_SPENSER, 807
- .set TRAINER_GRETA, 808
- .set TRAINER_NOLAND, 809
- .set TRAINER_LUCY, 810
- .set TRAINER_BRANDON, 811
- .set TRAINER_ANDRES_2, 812
- .set TRAINER_ANDRES_3, 813
- .set TRAINER_ANDRES_4, 814
- .set TRAINER_ANDRES_5, 815
- .set TRAINER_CORY_2, 816
- .set TRAINER_CORY_3, 817
- .set TRAINER_CORY_4, 818
- .set TRAINER_CORY_5, 819
- .set TRAINER_PABLO_2, 820
- .set TRAINER_PABLO_3, 821
- .set TRAINER_PABLO_4, 822
- .set TRAINER_PABLO_5, 823
- .set TRAINER_KOJI_2, 824
- .set TRAINER_KOJI_3, 825
- .set TRAINER_KOJI_4, 826
- .set TRAINER_KOJI_5, 827
- .set TRAINER_CRISTIN_2, 828
- .set TRAINER_CRISTIN_3, 829
- .set TRAINER_CRISTIN_4, 830
- .set TRAINER_CRISTIN_5, 831
- .set TRAINER_FERNANDO_2, 832
- .set TRAINER_FERNANDO_3, 833
- .set TRAINER_FERNANDO_4, 834
- .set TRAINER_FERNANDO_5, 835
- .set TRAINER_SAWYER_2, 836
- .set TRAINER_SAWYER_3, 837
- .set TRAINER_SAWYER_4, 838
- .set TRAINER_SAWYER_5, 839
- .set TRAINER_GABRIELLE_2, 840
- .set TRAINER_GABRIELLE_3, 841
- .set TRAINER_GABRIELLE_4, 842
- .set TRAINER_GABRIELLE_5, 843
- .set TRAINER_THALIA_2, 844
- .set TRAINER_THALIA_3, 845
- .set TRAINER_THALIA_4, 846
- .set TRAINER_THALIA_5, 847
- .set TRAINER_MARIELA, 848
- .set TRAINER_ALVARO, 849
- .set TRAINER_EVERETT, 850
- .set TRAINER_RED, 851
- .set TRAINER_LEAF, 852
- .set TRAINER_BRENDAN_16, 853
- .set TRAINER_MAY_16, 854
-
- .set TRAINER_PIC_HIKER, 0
- .set TRAINER_PIC_AQUA_GRUNT_M, 1
- .set TRAINER_PIC_POKEMON_BREEDER_F, 2
- .set TRAINER_PIC_COOL_TRAINER_M, 3
- .set TRAINER_PIC_BIRD_KEEPER, 4
- .set TRAINER_PIC_COLLECTOR, 5
- .set TRAINER_PIC_AQUA_GRUNT_F, 6
- .set TRAINER_PIC_SWIMMER_M, 7
- .set TRAINER_PIC_MAGMA_GRUNT_M, 8
- .set TRAINER_PIC_EXPERT_M, 9
- .set TRAINER_PIC_AQUA_ADMIN_M, 10
- .set TRAINER_PIC_BLACK_BELT, 11
- .set TRAINER_PIC_AQUA_ADMIN_F, 12
- .set TRAINER_PIC_AQUA_LEADER_ARCHIE, 13
- .set TRAINER_PIC_HEX_MANIAC, 14
- .set TRAINER_PIC_AROMA_LADY, 15
- .set TRAINER_PIC_RUIN_MANIAC, 16
- .set TRAINER_PIC_INTERVIEWER, 17
- .set TRAINER_PIC_TUBER_F, 18
- .set TRAINER_PIC_TUBER_M, 19
- .set TRAINER_PIC_COOL_TRAINER_F, 20
- .set TRAINER_PIC_LADY, 21
- .set TRAINER_PIC_BEAUTY, 22
- .set TRAINER_PIC_RICH_BOY, 23
- .set TRAINER_PIC_EXPERT_F, 24
- .set TRAINER_PIC_POKEMANIAC, 25
- .set TRAINER_PIC_MAGMA_GRUNT_F, 26
- .set TRAINER_PIC_GUITARIST, 27
- .set TRAINER_PIC_KINDLER, 28
- .set TRAINER_PIC_CAMPER, 29
- .set TRAINER_PIC_PICNICKER, 30
- .set TRAINER_PIC_BUG_MANIAC, 31
- .set TRAINER_PIC_POKEMON_BREEDER_M, 32
- .set TRAINER_PIC_PSYCHIC_M, 33
- .set TRAINER_PIC_PSYCHIC_F, 34
- .set TRAINER_PIC_GENTLEMAN, 35
- .set TRAINER_PIC_ELITE_FOUR_SIDNEY, 36
- .set TRAINER_PIC_ELITE_FOUR_PHOEBE, 37
- .set TRAINER_PIC_ELITE_FOUR_GLACIA, 38
- .set TRAINER_PIC_ELITE_FOUR_DRAKE, 39
- .set TRAINER_PIC_LEADER_ROXANNE, 40
- .set TRAINER_PIC_LEADER_BRAWLY, 41
- .set TRAINER_PIC_LEADER_WATTSON, 42
- .set TRAINER_PIC_LEADER_FLANNERY, 43
- .set TRAINER_PIC_LEADER_NORMAN, 44
- .set TRAINER_PIC_LEADER_WINONA, 45
- .set TRAINER_PIC_LEADER_TATE_AND_LIZA, 46
- .set TRAINER_PIC_LEADER_JUAN, 47
- .set TRAINER_PIC_SCHOOL_KID_M, 48
- .set TRAINER_PIC_SCHOOL_KID_F, 49
- .set TRAINER_PIC_SR_AND_JR, 50
- .set TRAINER_PIC_WINSTRATE_M, 51
- .set TRAINER_PIC_WINSTRATE_F, 52
- .set TRAINER_PIC_YOUNGSTER, 53
- .set TRAINER_PIC_CHAMPION_WALLACE, 54
- .set TRAINER_PIC_FISHERMAN, 55
- .set TRAINER_PIC_CYCLING_TRIATHLETE_M, 56
- .set TRAINER_PIC_CYCLING_TRIATHLETE_F, 57
- .set TRAINER_PIC_RUNNING_TRIATHLETE_M, 58
- .set TRAINER_PIC_RUNNING_TRIATHLETE_F, 59
- .set TRAINER_PIC_SWIMMING_TRIATHLETE_M, 60
- .set TRAINER_PIC_SWIMMING_TRIATHLETE_F, 61
- .set TRAINER_PIC_DRAGON_TAMER, 62
- .set TRAINER_PIC_NINJA_BOY, 63
- .set TRAINER_PIC_BATTLE_GIRL, 64
- .set TRAINER_PIC_PARASOL_LADY, 65
- .set TRAINER_PIC_SWIMMER_F, 66
- .set TRAINER_PIC_TWINS, 67
- .set TRAINER_PIC_SAILOR, 68
- .set TRAINER_PIC_MAGMA_ADMIN, 69
- .set TRAINER_PIC_WALLY, 70
- .set TRAINER_PIC_BRENDAN, 71
- .set TRAINER_PIC_MAY, 72
- .set TRAINER_PIC_BUG_CATCHER, 73
- .set TRAINER_PIC_POKEMON_RANGER_M, 74
- .set TRAINER_PIC_POKEMON_RANGER_F, 75
- .set TRAINER_PIC_MAGMA_LEADER_MAXIE, 76
- .set TRAINER_PIC_LASS, 77
- .set TRAINER_PIC_YOUNG_COUPLE, 78
- .set TRAINER_PIC_OLD_COUPLE, 79
- .set TRAINER_PIC_SIS_AND_BRO, 80
- .set TRAINER_PIC_STEVEN, 81
- .set TRAINER_PIC_SALON_MAIDEN_ANABEL, 82
- .set TRAINER_PIC_DOME_ACE_TUCKER, 83
- .set TRAINER_PIC_PALACE_MAVEN_SPENSER, 84
- .set TRAINER_PIC_ARENA_TYCOON_GRETA, 85
- .set TRAINER_PIC_FACTORY_HEAD_NOLAND, 86
- .set TRAINER_PIC_PIKE_QUEEN_LUCY, 87
- .set TRAINER_PIC_PYRAMID_KING_BRANDON, 88
- .set TRAINER_PIC_RED, 89
- .set TRAINER_PIC_LEAF, 90
- .set TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, 91
- .set TRAINER_PIC_RUBY_SAPPHIRE_MAY, 92
-
- .set TRAINER_CLASS_HIKER, 0x0
- .set TRAINER_CLASS_TEAM_AQUA_1, 0x1
- .set TRAINER_CLASS_PKMN_BREEDER_1, 0x2
- .set TRAINER_CLASS_COOLTRAINER_1, 0x3
- .set TRAINER_CLASS_BIRD_KEEPER, 0x4
- .set TRAINER_CLASS_COLLECTOR, 0x5
- .set TRAINER_CLASS_TEAM_AQUA_2, 0x6
- .set TRAINER_CLASS_SWIMMER_M, 0x7
- .set TRAINER_CLASS_TEAM_MAGMA_1, 0x8
- .set TRAINER_CLASS_EXPERT_1, 0x9
- .set TRAINER_CLASS_BLACK_BELT, 0xa
- .set TRAINER_CLASS_AQUA_LEADER, 0xb
- .set TRAINER_CLASS_HEX_MANIAC, 0xc
- .set TRAINER_CLASS_AROMA_LADY, 0xd
- .set TRAINER_CLASS_RUIN_MANIAC, 0xe
- .set TRAINER_CLASS_INTERVIEWER, 0xf
- .set TRAINER_CLASS_TUBER_1, 0x10
- .set TRAINER_CLASS_TUBER_2, 0x11
- .set TRAINER_CLASS_COOLTRAINER_2, 0x12
- .set TRAINER_CLASS_LADY, 0x13
- .set TRAINER_CLASS_BEAUTY, 0x14
- .set TRAINER_CLASS_RICH_BOY, 0x15
- .set TRAINER_CLASS_EXPERT_2, 0x16
- .set TRAINER_CLASS_POKEMANIAC, 0x17
- .set TRAINER_CLASS_TEAM_MAGMA_2, 0x18
- .set TRAINER_CLASS_GUITARIST, 0x19
- .set TRAINER_CLASS_KINDLER, 0x1a
- .set TRAINER_CLASS_CAMPER, 0x1b
- .set TRAINER_CLASS_PICNICKER, 0x1c
- .set TRAINER_CLASS_BUG_MANIAC, 0x1d
- .set TRAINER_CLASS_PSYCHIC_1, 0x1e
- .set TRAINER_CLASS_PSYCHIC_2, 0x1f
- .set TRAINER_CLASS_GENTLEMAN, 0x20
- .set TRAINER_CLASS_ELITE_FOUR_1, 0x21
- .set TRAINER_CLASS_ELITE_FOUR_2, 0x22
- .set TRAINER_CLASS_LEADER_1, 0x23
- .set TRAINER_CLASS_LEADER_2, 0x24
- .set TRAINER_CLASS_LEADER_3, 0x25
- .set TRAINER_CLASS_SCHOOL_KID_1, 0x26
- .set TRAINER_CLASS_SCHOOL_KID_2, 0x27
- .set TRAINER_CLASS_SR_AND_JR, 0x28
- .set TRAINER_CLASS_POKEFAN_1, 0x29
- .set TRAINER_CLASS_POKEFAN_2, 0x2a
- .set TRAINER_CLASS_YOUNGSTER, 0x2b
- .set TRAINER_CLASS_CHAMPION, 0x2c
- .set TRAINER_CLASS_FISHERMAN, 0x2d
- .set TRAINER_CLASS_TRIATHLETE_1, 0x2e
- .set TRAINER_CLASS_TRIATHLETE_2, 0x2f
- .set TRAINER_CLASS_TRIATHLETE_3, 0x30
- .set TRAINER_CLASS_TRIATHLETE_4, 0x31
- .set TRAINER_CLASS_TRIATHLETE_5, 0x32
- .set TRAINER_CLASS_TRIATHLETE_6, 0x33
- .set TRAINER_CLASS_DRAGON_TAMER, 0x34
- .set TRAINER_CLASS_NINJA_BOY, 0x35
- .set TRAINER_CLASS_BATTLE_GIRL, 0x36
- .set TRAINER_CLASS_PARASOL_LADY, 0x37
- .set TRAINER_CLASS_SWIMMER_F, 0x38
- .set TRAINER_CLASS_TWINS, 0x39
- .set TRAINER_CLASS_SAILOR, 0x3a
- .set TRAINER_CLASS_PKMN_TRAINER_1, 0x3b
- .set TRAINER_CLASS_PKMN_TRAINER_2, 0x3c
- .set TRAINER_CLASS_PKMN_TRAINER_3, 0x3d
- .set TRAINER_CLASS_PKMN_TRAINER_4, 0x3e
- .set TRAINER_CLASS_PKMN_TRAINER_5, 0x3f
- .set TRAINER_CLASS_PKMN_TRAINER_6, 0x40
- .set TRAINER_CLASS_PKMN_TRAINER_7, 0x41
- .set TRAINER_CLASS_PKMN_BREEDER_2, 0x42
- .set TRAINER_CLASS_BUG_CATCHER, 0x43
- .set TRAINER_CLASS_PKMN_RANGER_1, 0x44
- .set TRAINER_CLASS_PKMN_RANGER_2, 0x45
- .set TRAINER_CLASS_MAGMA_LEADER, 0x46
- .set TRAINER_CLASS_LASS, 0x47
- .set TRAINER_CLASS_YOUNG_COUPLE, 0x48
- .set TRAINER_CLASS_OLD_COUPLE, 0x49
- .set TRAINER_CLASS_SIS_AND_BRO, 0x4a
- .set TRAINER_CLASS_PKMN_TRAINER_8, 0x4b
- .set TRAINER_CLASS_SALON_MAIDEN, 0x4c
- .set TRAINER_CLASS_DOME_ACE, 0x4d
- .set TRAINER_CLASS_PKMN_TRAINER_9, 0x4e
- .set TRAINER_CLASS_PKMN_TRAINER_10, 0x4f
- .set TRAINER_CLASS_PKMN_TRAINER_11, 0x50
- .set TRAINER_CLASS_PKMN_TRAINER_12, 0x51
-
- .set TRAINER_CLASS_NAME_PKMN_TRAINER_1, 0x0
- .set TRAINER_CLASS_NAME_PKMN_TRAINER_2, 0x1
- .set TRAINER_CLASS_NAME_HIKER, 0x2
- .set TRAINER_CLASS_NAME_TEAM_AQUA, 0x3
- .set TRAINER_CLASS_NAME_PKMN_BREEDER, 0x4
- .set TRAINER_CLASS_NAME_COOLTRAINER_1, 0x5
- .set TRAINER_CLASS_NAME_BIRD_KEEPER, 0x6
- .set TRAINER_CLASS_NAME_COLLECTOR, 0x7
- .set TRAINER_CLASS_NAME_SWIMMER_M, 0x8
- .set TRAINER_CLASS_NAME_TEAM_MAGMA, 0x9
- .set TRAINER_CLASS_NAME_EXPERT, 0xa
- .set TRAINER_CLASS_NAME_AQUA_ADMIN, 0xb
- .set TRAINER_CLASS_NAME_BLACK_BELT, 0xc
- .set TRAINER_CLASS_NAME_AQUA_LEADER, 0xd
- .set TRAINER_CLASS_NAME_HEX_MANIAC, 0xe
- .set TRAINER_CLASS_NAME_AROMA_LADY, 0xf
- .set TRAINER_CLASS_NAME_RUIN_MANIAC, 0x10
- .set TRAINER_CLASS_NAME_INTERVIEWER, 0x11
- .set TRAINER_CLASS_NAME_TUBER_1, 0x12
- .set TRAINER_CLASS_NAME_TUBER_2, 0x13
- .set TRAINER_CLASS_NAME_LADY, 0x14
- .set TRAINER_CLASS_NAME_BEAUTY, 0x15
- .set TRAINER_CLASS_NAME_RICH_BOY, 0x16
- .set TRAINER_CLASS_NAME_POKEMANIAC, 0x17
- .set TRAINER_CLASS_NAME_GUITARIST, 0x18
- .set TRAINER_CLASS_NAME_KINDLER, 0x19
- .set TRAINER_CLASS_NAME_CAMPER, 0x1a
- .set TRAINER_CLASS_NAME_PICNICKER, 0x1b
- .set TRAINER_CLASS_NAME_BUG_MANIAC, 0x1c
- .set TRAINER_CLASS_NAME_PSYCHIC, 0x1d
- .set TRAINER_CLASS_NAME_GENTLEMAN, 0x1e
- .set TRAINER_CLASS_NAME_ELITE_FOUR, 0x1f
- .set TRAINER_CLASS_NAME_LEADER, 0x20
- .set TRAINER_CLASS_NAME_SCHOOL_KID, 0x21
- .set TRAINER_CLASS_NAME_SR_AND_JR, 0x22
- .set TRAINER_CLASS_NAME_WINSTRATE, 0x23
- .set TRAINER_CLASS_NAME_POKEFAN, 0x24
- .set TRAINER_CLASS_NAME_YOUNGSTER, 0x25
- .set TRAINER_CLASS_NAME_CHAMPION, 0x26
- .set TRAINER_CLASS_NAME_FISHERMAN, 0x27
- .set TRAINER_CLASS_NAME_TRIATHLETE, 0x28
- .set TRAINER_CLASS_NAME_DRAGON_TAMER, 0x29
- .set TRAINER_CLASS_NAME_NINJA_BOY, 0x2a
- .set TRAINER_CLASS_NAME_BATTLE_GIRL, 0x2b
- .set TRAINER_CLASS_NAME_PARASOL_LADY, 0x2c
- .set TRAINER_CLASS_NAME_SWIMMER_F, 0x2d
- .set TRAINER_CLASS_NAME_TWINS, 0x2e
- .set TRAINER_CLASS_NAME_SAILOR, 0x2f
- .set TRAINER_CLASS_NAME_COOLTRAINER_2, 0x30
- .set TRAINER_CLASS_NAME_MAGMA_ADMIN, 0x31
- .set TRAINER_CLASS_NAME_PKMN_TRAINER_3, 0x32
- .set TRAINER_CLASS_NAME_BUG_CATCHER, 0x33
- .set TRAINER_CLASS_NAME_PKMN_RANGER, 0x34
- .set TRAINER_CLASS_NAME_MAGMA_LEADER, 0x35
- .set TRAINER_CLASS_NAME_LASS, 0x36
- .set TRAINER_CLASS_NAME_YOUNG_COUPLE, 0x37
- .set TRAINER_CLASS_NAME_OLD_COUPLE, 0x38
- .set TRAINER_CLASS_NAME_SIS_AND_BRO, 0x39
- .set TRAINER_CLASS_NAME_SALON_MAIDEN, 0x3a
- .set TRAINER_CLASS_NAME_DOME_ACE, 0x3b
- .set TRAINER_CLASS_NAME_PALACE_MAVEN, 0x3c
- .set TRAINER_CLASS_NAME_ARENA_TYCOON, 0x3d
- .set TRAINER_CLASS_NAME_FACTORY_HEAD, 0x3e
- .set TRAINER_CLASS_NAME_PIKE_QUEEN, 0x3f
- .set TRAINER_CLASS_NAME_PYRAMID_KING, 0x40
- .set TRAINER_CLASS_NAME_PKMN_TRAINER_4, 0x41
-
- .set TRAINER_ENCOUNTER_MUSIC_MALE, 0 @ standard male encounter music
- .set TRAINER_ENCOUNTER_MUSIC_FEMALE, 1 @ standard female encounter music
- .set TRAINER_ENCOUNTER_MUSIC_GIRL, 2 @ used for male Tubers and Young Couples too
- .set TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, 3
- .set TRAINER_ENCOUNTER_MUSIC_INTENSE, 4
- .set TRAINER_ENCOUNTER_MUSIC_COOL, 5
- .set TRAINER_ENCOUNTER_MUSIC_AQUA, 6
- .set TRAINER_ENCOUNTER_MUSIC_MAGMA, 7
- .set TRAINER_ENCOUNTER_MUSIC_SWIMMER, 8
- .set TRAINER_ENCOUNTER_MUSIC_TWINS, 9 @ used for other trainer classes too
- .set TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, 10
- .set TRAINER_ENCOUNTER_MUSIC_HIKER, 11 @ used for other trainer classes too
- .set TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, 12
- .set TRAINER_ENCOUNTER_MUSIC_RICH, 13 @ Rich Boys and Gentlemen
-
- .set F_TRAINER_FEMALE, 1 << 7
-
-@ All trainer parties specify the IV, level, and species for each Pokémon in the
-@ party. Some trainer parties also specify held items and custom moves for each
-@ Pokémon.
- .set F_TRAINER_PARTY_CUSTOM_MOVESET, 1 << 0
- .set F_TRAINER_PARTY_HELD_ITEM, 1 << 1
diff --git a/constants/type_constants.inc b/constants/type_constants.inc
deleted file mode 100644
index 86e3c9df3..000000000
--- a/constants/type_constants.inc
+++ /dev/null
@@ -1,18 +0,0 @@
- .set TYPE_NORMAL, 0x00
- .set TYPE_FIGHTING, 0x01
- .set TYPE_FLYING, 0x02
- .set TYPE_POISON, 0x03
- .set TYPE_GROUND, 0x04
- .set TYPE_ROCK, 0x05
- .set TYPE_BUG, 0x06
- .set TYPE_GHOST, 0x07
- .set TYPE_STEEL, 0x08
- .set TYPE_UNKNOWN, 0x09
- .set TYPE_FIRE, 0x0a
- .set TYPE_WATER, 0x0b
- .set TYPE_GRASS, 0x0c
- .set TYPE_ELECTRIC, 0x0d
- .set TYPE_PSYCHIC, 0x0e
- .set TYPE_ICE, 0x0f
- .set TYPE_DRAGON, 0x10
- .set TYPE_DARK, 0x11
diff --git a/data/base_stats.inc b/data/base_stats.inc
deleted file mode 100644
index 43b5ae499..000000000
--- a/data/base_stats.inc
+++ /dev/null
@@ -1,8635 +0,0 @@
- .align 2
-gBaseStats:: @ 83203CC
-@ ??????????
- .fill 28, 1, 0
-
-@ Bulbasaur
- base_stats 45, 49, 49, 45, 65, 65
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 64 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_GRASS
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Ivysaur
- base_stats 60, 62, 63, 60, 80, 80
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 141 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_GRASS
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Venusaur
- base_stats 80, 82, 83, 80, 100, 100
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 208 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_GRASS
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Charmander
- base_stats 39, 52, 43, 65, 60, 50
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 65 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Charmeleon
- base_stats 58, 64, 58, 80, 80, 65
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 142 @ base exp. yield
- ev_yield 0, 0, 0, 1, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Charizard
- base_stats 78, 84, 78, 100, 109, 85
- .byte TYPE_FIRE
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 209 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Squirtle
- base_stats 44, 48, 65, 43, 50, 64
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 66 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Wartortle
- base_stats 59, 63, 80, 58, 65, 80
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 143 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Blastoise
- base_stats 79, 83, 100, 78, 85, 105
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 210 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Caterpie
- base_stats 45, 30, 35, 45, 20, 20
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 255 @ catch rate
- .byte 53 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHIELD_DUST
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Metapod
- base_stats 50, 20, 55, 30, 25, 25
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 120 @ catch rate
- .byte 72 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHED_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Butterfree
- base_stats 60, 45, 50, 70, 80, 80
- .byte TYPE_BUG
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 160 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 1
- .2byte ITEM_NONE
- .2byte ITEM_SILVER_POWDER
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_COMPOUND_EYES
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Weedle
- base_stats 40, 35, 30, 50, 20, 20
- .byte TYPE_BUG
- .byte TYPE_POISON
- .byte 255 @ catch rate
- .byte 52 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHIELD_DUST
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Kakuna
- base_stats 45, 25, 50, 35, 25, 25
- .byte TYPE_BUG
- .byte TYPE_POISON
- .byte 120 @ catch rate
- .byte 71 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHED_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Beedrill
- base_stats 65, 80, 40, 75, 45, 80
- .byte TYPE_BUG
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 159 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_POISON_BARB
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Pidgey
- base_stats 40, 45, 40, 56, 35, 35
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 255 @ catch rate
- .byte 55 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Pidgeotto
- base_stats 63, 60, 55, 71, 50, 50
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 120 @ catch rate
- .byte 113 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Pidgeot
- base_stats 83, 80, 75, 91, 70, 70
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 172 @ base exp. yield
- ev_yield 0, 0, 0, 3, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Rattata
- base_stats 30, 56, 35, 72, 25, 35
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 255 @ catch rate
- .byte 57 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_GUTS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Raticate
- base_stats 55, 81, 60, 97, 50, 70
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 127 @ catch rate
- .byte 116 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_GUTS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Spearow
- base_stats 40, 60, 30, 70, 31, 31
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 255 @ catch rate
- .byte 58 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Fearow
- base_stats 65, 90, 65, 100, 61, 61
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 90 @ catch rate
- .byte 162 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SHARP_BEAK
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Ekans
- base_stats 35, 60, 44, 55, 40, 54
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 255 @ catch rate
- .byte 62 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_SHED_SKIN
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Arbok
- base_stats 60, 85, 69, 80, 65, 79
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 90 @ catch rate
- .byte 147 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_SHED_SKIN
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Pikachu
- base_stats 35, 55, 30, 90, 50, 40
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 190 @ catch rate
- .byte 82 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_ORAN_BERRY
- .2byte ITEM_LIGHT_BALL
- .byte 127 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_STATIC
- .byte ABILITY_NONE
- .byte 6 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Raichu
- base_stats 60, 90, 55, 100, 90, 80
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 75 @ catch rate
- .byte 122 @ base exp. yield
- ev_yield 0, 0, 0, 3, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_ORAN_BERRY
- .byte 127 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_STATIC
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Sandshrew
- base_stats 50, 75, 85, 40, 20, 30
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 255 @ catch rate
- .byte 93 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_QUICK_CLAW
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SAND_VEIL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Sandslash
- base_stats 75, 100, 110, 65, 45, 55
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 90 @ catch rate
- .byte 163 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_QUICK_CLAW
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SAND_VEIL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Nidoran♀
- base_stats 55, 47, 52, 41, 40, 40
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 235 @ catch rate
- .byte 59 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 254 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_POISON_POINT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Nidorina
- base_stats 70, 62, 67, 56, 55, 55
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 120 @ catch rate
- .byte 117 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 254 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_POISON_POINT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Nidoqueen
- base_stats 90, 82, 87, 76, 75, 85
- .byte TYPE_POISON
- .byte TYPE_GROUND
- .byte 45 @ catch rate
- .byte 194 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 254 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_POISON_POINT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Nidoran♂
- base_stats 46, 57, 40, 50, 40, 40
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 235 @ catch rate
- .byte 60 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_POISON_POINT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Nidorino
- base_stats 61, 72, 57, 65, 55, 55
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 120 @ catch rate
- .byte 118 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_POISON_POINT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Nidoking
- base_stats 81, 92, 77, 85, 85, 75
- .byte TYPE_POISON
- .byte TYPE_GROUND
- .byte 45 @ catch rate
- .byte 195 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_POISON_POINT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Clefairy
- base_stats 70, 45, 48, 35, 60, 65
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 150 @ catch rate
- .byte 68 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_LEPPA_BERRY
- .2byte ITEM_MOON_STONE
- .byte 191 @ gender
- .byte 10 @ egg cycles
- .byte 140 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_CUTE_CHARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Clefable
- base_stats 95, 70, 73, 60, 85, 90
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 25 @ catch rate
- .byte 129 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_LEPPA_BERRY
- .2byte ITEM_MOON_STONE
- .byte 191 @ gender
- .byte 10 @ egg cycles
- .byte 140 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_CUTE_CHARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Vulpix
- base_stats 38, 41, 40, 65, 50, 65
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 190 @ catch rate
- .byte 63 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_RAWST_BERRY
- .byte 191 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_FLASH_FIRE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Ninetales
- base_stats 73, 76, 75, 100, 81, 100
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 75 @ catch rate
- .byte 178 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 1
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_RAWST_BERRY
- .byte 191 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_FLASH_FIRE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Jigglypuff
- base_stats 115, 45, 20, 20, 45, 25
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 170 @ catch rate
- .byte 76 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 191 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_CUTE_CHARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Wigglytuff
- base_stats 140, 70, 45, 45, 75, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 50 @ catch rate
- .byte 109 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 191 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_CUTE_CHARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Zubat
- base_stats 40, 45, 35, 55, 30, 40
- .byte TYPE_POISON
- .byte TYPE_FLYING
- .byte 255 @ catch rate
- .byte 54 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_INNER_FOCUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Golbat
- base_stats 75, 80, 70, 90, 65, 75
- .byte TYPE_POISON
- .byte TYPE_FLYING
- .byte 90 @ catch rate
- .byte 171 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_INNER_FOCUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Oddish
- base_stats 45, 50, 55, 30, 75, 65
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 255 @ catch rate
- .byte 78 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 4 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Gloom
- base_stats 60, 65, 70, 40, 85, 75
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 120 @ catch rate
- .byte 132 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 6 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Vileplume
- base_stats 75, 80, 85, 50, 100, 90
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 184 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Paras
- base_stats 35, 70, 55, 25, 45, 55
- .byte TYPE_BUG
- .byte TYPE_GRASS
- .byte 190 @ catch rate
- .byte 70 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_TINY_MUSHROOM
- .2byte ITEM_BIG_MUSHROOM
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_GRASS
- .byte ABILITY_EFFECT_SPORE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Parasect
- base_stats 60, 95, 80, 30, 60, 80
- .byte TYPE_BUG
- .byte TYPE_GRASS
- .byte 75 @ catch rate
- .byte 128 @ base exp. yield
- ev_yield 0, 2, 1, 0, 0, 0
- .2byte ITEM_TINY_MUSHROOM
- .2byte ITEM_BIG_MUSHROOM
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_GRASS
- .byte ABILITY_EFFECT_SPORE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Venonat
- base_stats 60, 55, 50, 45, 40, 55
- .byte TYPE_BUG
- .byte TYPE_POISON
- .byte 190 @ catch rate
- .byte 75 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_COMPOUND_EYES
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Venomoth
- base_stats 70, 65, 60, 90, 90, 75
- .byte TYPE_BUG
- .byte TYPE_POISON
- .byte 75 @ catch rate
- .byte 138 @ base exp. yield
- ev_yield 0, 0, 0, 1, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHIELD_DUST
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Diglett
- base_stats 10, 55, 25, 95, 35, 45
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 255 @ catch rate
- .byte 81 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SAND_VEIL
- .byte ABILITY_ARENA_TRAP
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Dugtrio
- base_stats 35, 80, 50, 120, 50, 70
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 50 @ catch rate
- .byte 153 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SAND_VEIL
- .byte ABILITY_ARENA_TRAP
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Meowth
- base_stats 40, 45, 35, 90, 40, 40
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 255 @ catch rate
- .byte 69 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_PICKUP
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Persian
- base_stats 65, 70, 60, 115, 65, 65
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 90 @ catch rate
- .byte 148 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_LIMBER
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Psyduck
- base_stats 50, 52, 48, 55, 65, 50
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 190 @ catch rate
- .byte 80 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_DAMP
- .byte ABILITY_CLOUD_NINE
- .byte 6 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Golduck
- base_stats 80, 82, 78, 85, 95, 80
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 75 @ catch rate
- .byte 174 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_DAMP
- .byte ABILITY_CLOUD_NINE
- .byte 8 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Mankey
- base_stats 40, 80, 35, 70, 35, 45
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 190 @ catch rate
- .byte 74 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_VITAL_SPIRIT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Primeape
- base_stats 65, 105, 60, 95, 60, 70
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 75 @ catch rate
- .byte 149 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_VITAL_SPIRIT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Growlithe
- base_stats 55, 70, 45, 60, 70, 50
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 190 @ catch rate
- .byte 91 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_RAWST_BERRY
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_FLASH_FIRE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Arcanine
- base_stats 90, 110, 80, 95, 100, 80
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 75 @ catch rate
- .byte 213 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_RAWST_BERRY
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_FLASH_FIRE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Poliwag
- base_stats 40, 50, 40, 90, 40, 40
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 255 @ catch rate
- .byte 77 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_WATER_ABSORB
- .byte ABILITY_DAMP
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Poliwhirl
- base_stats 65, 65, 65, 90, 50, 50
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 120 @ catch rate
- .byte 131 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_KINGS_ROCK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_WATER_ABSORB
- .byte ABILITY_DAMP
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Poliwrath
- base_stats 90, 85, 95, 70, 70, 90
- .byte TYPE_WATER
- .byte TYPE_FIGHTING
- .byte 45 @ catch rate
- .byte 185 @ base exp. yield
- ev_yield 0, 0, 3, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_KINGS_ROCK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_WATER_ABSORB
- .byte ABILITY_DAMP
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Abra
- base_stats 25, 20, 15, 90, 105, 55
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 200 @ catch rate
- .byte 73 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_TWISTED_SPOON
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_INNER_FOCUS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Kadabra
- base_stats 40, 35, 30, 105, 120, 70
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 100 @ catch rate
- .byte 145 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_TWISTED_SPOON
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_INNER_FOCUS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Alakazam
- base_stats 55, 50, 45, 120, 135, 85
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 50 @ catch rate
- .byte 186 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_TWISTED_SPOON
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_INNER_FOCUS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Machop
- base_stats 70, 80, 50, 35, 35, 35
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 180 @ catch rate
- .byte 88 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_GUTS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Machoke
- base_stats 80, 100, 70, 45, 50, 60
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 90 @ catch rate
- .byte 146 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_GUTS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Machamp
- base_stats 90, 130, 80, 55, 65, 85
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 45 @ catch rate
- .byte 193 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_GUTS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Bellsprout
- base_stats 50, 75, 35, 40, 70, 30
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 255 @ catch rate
- .byte 84 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Weepinbell
- base_stats 65, 90, 50, 55, 85, 45
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 120 @ catch rate
- .byte 151 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Victreebel
- base_stats 80, 105, 65, 70, 100, 60
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 191 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Tentacool
- base_stats 40, 40, 35, 70, 50, 100
- .byte TYPE_WATER
- .byte TYPE_POISON
- .byte 190 @ catch rate
- .byte 105 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_CLEAR_BODY
- .byte ABILITY_LIQUID_OOZE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Tentacruel
- base_stats 80, 70, 65, 100, 80, 120
- .byte TYPE_WATER
- .byte TYPE_POISON
- .byte 60 @ catch rate
- .byte 205 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_CLEAR_BODY
- .byte ABILITY_LIQUID_OOZE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Geodude
- base_stats 40, 80, 100, 20, 30, 30
- .byte TYPE_ROCK
- .byte TYPE_GROUND
- .byte 255 @ catch rate
- .byte 86 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_EVERSTONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_STURDY
- .byte 4 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Graveler
- base_stats 55, 95, 115, 35, 45, 45
- .byte TYPE_ROCK
- .byte TYPE_GROUND
- .byte 120 @ catch rate
- .byte 134 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_EVERSTONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_STURDY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Golem
- base_stats 80, 110, 130, 45, 55, 65
- .byte TYPE_ROCK
- .byte TYPE_GROUND
- .byte 45 @ catch rate
- .byte 177 @ base exp. yield
- ev_yield 0, 0, 3, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_EVERSTONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_STURDY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Ponyta
- base_stats 50, 85, 55, 90, 65, 65
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 190 @ catch rate
- .byte 152 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_FLASH_FIRE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Rapidash
- base_stats 65, 100, 70, 105, 80, 80
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 60 @ catch rate
- .byte 192 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_FLASH_FIRE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Slowpoke
- base_stats 90, 65, 65, 15, 40, 40
- .byte TYPE_WATER
- .byte TYPE_PSYCHIC
- .byte 190 @ catch rate
- .byte 99 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_KINGS_ROCK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_OWN_TEMPO
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Slowbro
- base_stats 95, 75, 110, 30, 100, 80
- .byte TYPE_WATER
- .byte TYPE_PSYCHIC
- .byte 75 @ catch rate
- .byte 164 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_KINGS_ROCK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_OWN_TEMPO
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Magnemite
- base_stats 25, 35, 70, 45, 95, 55
- .byte TYPE_ELECTRIC
- .byte TYPE_STEEL
- .byte 190 @ catch rate
- .byte 89 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_METAL_COAT
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_MAGNET_PULL
- .byte ABILITY_STURDY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Magneton
- base_stats 50, 60, 95, 70, 120, 70
- .byte TYPE_ELECTRIC
- .byte TYPE_STEEL
- .byte 60 @ catch rate
- .byte 161 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_METAL_COAT
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_MAGNET_PULL
- .byte ABILITY_STURDY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Farfetch'd
- base_stats 52, 65, 55, 60, 58, 62
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 94 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_STICK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FIELD
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_INNER_FOCUS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Doduo
- base_stats 35, 85, 45, 75, 35, 35
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 190 @ catch rate
- .byte 96 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SHARP_BEAK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_EARLY_BIRD
- .byte 8 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Dodrio
- base_stats 60, 110, 70, 100, 60, 60
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 158 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SHARP_BEAK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_EARLY_BIRD
- .byte 10 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Seel
- base_stats 65, 45, 55, 45, 45, 70
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 190 @ catch rate
- .byte 100 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_THICK_FAT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Dewgong
- base_stats 90, 70, 80, 70, 70, 95
- .byte TYPE_WATER
- .byte TYPE_ICE
- .byte 75 @ catch rate
- .byte 176 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_THICK_FAT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Grimer
- base_stats 80, 80, 50, 25, 40, 50
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 190 @ catch rate
- .byte 90 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NUGGET
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_STENCH
- .byte ABILITY_STICKY_HOLD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Muk
- base_stats 105, 105, 75, 50, 65, 100
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 75 @ catch rate
- .byte 157 @ base exp. yield
- ev_yield 1, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NUGGET
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_STENCH
- .byte ABILITY_STICKY_HOLD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Shellder
- base_stats 30, 65, 100, 40, 45, 25
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 190 @ catch rate
- .byte 97 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_PEARL
- .2byte ITEM_BIG_PEARL
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_SHELL_ARMOR
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Cloyster
- base_stats 50, 95, 180, 70, 85, 45
- .byte TYPE_WATER
- .byte TYPE_ICE
- .byte 60 @ catch rate
- .byte 203 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_PEARL
- .2byte ITEM_BIG_PEARL
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_SHELL_ARMOR
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Gastly
- base_stats 30, 35, 30, 80, 100, 35
- .byte TYPE_GHOST
- .byte TYPE_POISON
- .byte 190 @ catch rate
- .byte 95 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Haunter
- base_stats 45, 50, 45, 95, 115, 55
- .byte TYPE_GHOST
- .byte TYPE_POISON
- .byte 90 @ catch rate
- .byte 126 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Gengar
- base_stats 60, 65, 60, 110, 130, 75
- .byte TYPE_GHOST
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 190 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Onix
- base_stats 35, 45, 160, 70, 30, 45
- .byte TYPE_ROCK
- .byte TYPE_GROUND
- .byte 45 @ catch rate
- .byte 108 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_STURDY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Drowzee
- base_stats 60, 48, 45, 42, 43, 90
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 190 @ catch rate
- .byte 102 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_INSOMNIA
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Hypno
- base_stats 85, 73, 70, 67, 73, 115
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 75 @ catch rate
- .byte 165 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_INSOMNIA
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Krabby
- base_stats 30, 105, 90, 50, 25, 25
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 225 @ catch rate
- .byte 115 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_HYPER_CUTTER
- .byte ABILITY_SHELL_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Kingler
- base_stats 55, 130, 115, 75, 50, 50
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 60 @ catch rate
- .byte 206 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_HYPER_CUTTER
- .byte ABILITY_SHELL_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Voltorb
- base_stats 40, 30, 50, 100, 55, 55
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 190 @ catch rate
- .byte 103 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_SOUNDPROOF
- .byte ABILITY_STATIC
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Electrode
- base_stats 60, 50, 70, 140, 80, 80
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 60 @ catch rate
- .byte 150 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_SOUNDPROOF
- .byte ABILITY_STATIC
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Exeggcute
- base_stats 60, 40, 80, 40, 60, 45
- .byte TYPE_GRASS
- .byte TYPE_PSYCHIC
- .byte 90 @ catch rate
- .byte 98 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Exeggutor
- base_stats 95, 95, 85, 55, 125, 65
- .byte TYPE_GRASS
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 212 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Cubone
- base_stats 50, 50, 95, 35, 40, 50
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 190 @ catch rate
- .byte 87 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_THICK_CLUB
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_LIGHTNING_ROD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Marowak
- base_stats 60, 80, 110, 45, 50, 80
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 75 @ catch rate
- .byte 124 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_THICK_CLUB
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_LIGHTNING_ROD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Hitmonlee
- base_stats 50, 120, 53, 87, 35, 110
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 45 @ catch rate
- .byte 139 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_LIMBER
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Hitmonchan
- base_stats 50, 105, 79, 76, 35, 110
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 45 @ catch rate
- .byte 140 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Lickitung
- base_stats 90, 55, 75, 30, 60, 75
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 127 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_OWN_TEMPO
- .byte ABILITY_OBLIVIOUS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Koffing
- base_stats 40, 65, 95, 35, 60, 45
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 190 @ catch rate
- .byte 114 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SMOKE_BALL
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Weezing
- base_stats 65, 90, 120, 60, 85, 70
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 60 @ catch rate
- .byte 173 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SMOKE_BALL
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Rhyhorn
- base_stats 80, 85, 95, 25, 30, 30
- .byte TYPE_GROUND
- .byte TYPE_ROCK
- .byte 120 @ catch rate
- .byte 135 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_LIGHTNING_ROD
- .byte ABILITY_ROCK_HEAD
- .byte 4 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Rhydon
- base_stats 105, 130, 120, 40, 45, 45
- .byte TYPE_GROUND
- .byte TYPE_ROCK
- .byte 60 @ catch rate
- .byte 204 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_LIGHTNING_ROD
- .byte ABILITY_ROCK_HEAD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Chansey
- base_stats 250, 5, 5, 50, 35, 105
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 30 @ catch rate
- .byte 255 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_LUCKY_EGG
- .byte 254 @ gender
- .byte 40 @ egg cycles
- .byte 140 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_NATURAL_CURE
- .byte ABILITY_SERENE_GRACE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Tangela
- base_stats 65, 55, 115, 60, 100, 40
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 166 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Kangaskhan
- base_stats 105, 95, 80, 90, 40, 80
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 175 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 254 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_EARLY_BIRD
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Horsea
- base_stats 30, 40, 70, 60, 70, 25
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 225 @ catch rate
- .byte 83 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Seadra
- base_stats 55, 65, 95, 85, 95, 45
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 75 @ catch rate
- .byte 155 @ base exp. yield
- ev_yield 0, 0, 1, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_POISON_POINT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Goldeen
- base_stats 45, 67, 60, 63, 35, 50
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 225 @ catch rate
- .byte 111 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_WATER_VEIL
- .byte 4 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Seaking
- base_stats 80, 92, 65, 68, 65, 80
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 60 @ catch rate
- .byte 170 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_WATER_VEIL
- .byte 6 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Staryu
- base_stats 30, 45, 55, 85, 70, 55
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 225 @ catch rate
- .byte 106 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_STARDUST
- .2byte ITEM_STAR_PIECE
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_ILLUMINATE
- .byte ABILITY_NATURAL_CURE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Starmie
- base_stats 60, 75, 85, 115, 100, 85
- .byte TYPE_WATER
- .byte TYPE_PSYCHIC
- .byte 60 @ catch rate
- .byte 207 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_STARDUST
- .2byte ITEM_STAR_PIECE
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_ILLUMINATE
- .byte ABILITY_NATURAL_CURE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Mr. mime
- base_stats 40, 45, 65, 90, 100, 120
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 136 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_LEPPA_BERRY
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_SOUNDPROOF
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Scyther
- base_stats 70, 110, 80, 105, 55, 80
- .byte TYPE_BUG
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 187 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Jynx
- base_stats 65, 50, 35, 95, 115, 95
- .byte TYPE_ICE
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 137 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_ASPEAR_BERRY
- .2byte ITEM_ASPEAR_BERRY
- .byte 254 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Electabuzz
- base_stats 65, 83, 57, 105, 95, 85
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 45 @ catch rate
- .byte 156 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 63 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_STATIC
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Magmar
- base_stats 65, 95, 57, 93, 100, 85
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 167 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_RAWST_BERRY
- .byte 63 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_FLAME_BODY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Pinsir
- base_stats 65, 125, 100, 85, 55, 70
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 45 @ catch rate
- .byte 200 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_HYPER_CUTTER
- .byte ABILITY_NONE
- .byte 8 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Tauros
- base_stats 75, 100, 95, 110, 40, 70
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 211 @ base exp. yield
- ev_yield 0, 1, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Magikarp
- base_stats 20, 10, 55, 80, 15, 20
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 255 @ catch rate
- .byte 20 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 5 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_NONE
- .byte 4 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Gyarados
- base_stats 95, 125, 79, 81, 60, 100
- .byte TYPE_WATER
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 214 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 5 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Lapras
- base_stats 130, 85, 80, 60, 85, 95
- .byte TYPE_WATER
- .byte TYPE_ICE
- .byte 45 @ catch rate
- .byte 219 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_WATER_ABSORB
- .byte ABILITY_SHELL_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Ditto
- base_stats 48, 48, 48, 48, 48, 48
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 35 @ catch rate
- .byte 61 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_METAL_POWDER
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_DITTO
- .byte EGG_GROUP_DITTO
- .byte ABILITY_LIMBER
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Eevee
- base_stats 55, 55, 50, 55, 45, 65
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 92 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 35 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Vaporeon
- base_stats 130, 65, 60, 65, 110, 95
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 196 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 35 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_WATER_ABSORB
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Jolteon
- base_stats 65, 65, 60, 130, 110, 95
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 45 @ catch rate
- .byte 197 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 35 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_VOLT_ABSORB
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Flareon
- base_stats 65, 130, 60, 65, 95, 110
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 198 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 35 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_FLASH_FIRE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Porygon
- base_stats 65, 60, 70, 40, 85, 75
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 130 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_TRACE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Omanyte
- base_stats 35, 40, 100, 35, 90, 55
- .byte TYPE_ROCK
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 120 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 30 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_SHELL_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Omastar
- base_stats 70, 60, 125, 55, 115, 70
- .byte TYPE_ROCK
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 199 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 30 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_SHELL_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Kabuto
- base_stats 30, 80, 90, 55, 55, 45
- .byte TYPE_ROCK
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 119 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 30 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_BATTLE_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Kabutops
- base_stats 60, 115, 105, 80, 65, 70
- .byte TYPE_ROCK
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 201 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 30 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_BATTLE_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Aerodactyl
- base_stats 80, 105, 65, 130, 60, 75
- .byte TYPE_ROCK
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 202 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 35 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_PRESSURE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Snorlax
- base_stats 160, 110, 65, 30, 65, 110
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 25 @ catch rate
- .byte 154 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_LEFTOVERS
- .2byte ITEM_LEFTOVERS
- .byte 31 @ gender
- .byte 40 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_IMMUNITY
- .byte ABILITY_THICK_FAT
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Articuno
- base_stats 90, 85, 100, 85, 95, 125
- .byte TYPE_ICE
- .byte TYPE_FLYING
- .byte 3 @ catch rate
- .byte 215 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Zapdos
- base_stats 90, 90, 85, 100, 125, 90
- .byte TYPE_ELECTRIC
- .byte TYPE_FLYING
- .byte 3 @ catch rate
- .byte 216 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Moltres
- base_stats 90, 100, 90, 90, 125, 85
- .byte TYPE_FIRE
- .byte TYPE_FLYING
- .byte 3 @ catch rate
- .byte 217 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Dratini
- base_stats 41, 64, 45, 50, 50, 50
- .byte TYPE_DRAGON
- .byte TYPE_DRAGON
- .byte 45 @ catch rate
- .byte 67 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_SHED_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Dragonair
- base_stats 61, 84, 65, 70, 70, 70
- .byte TYPE_DRAGON
- .byte TYPE_DRAGON
- .byte 45 @ catch rate
- .byte 144 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_SHED_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Dragonite
- base_stats 91, 134, 95, 80, 100, 100
- .byte TYPE_DRAGON
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 218 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_INNER_FOCUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Mewtwo
- base_stats 106, 110, 90, 130, 154, 90
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 3 @ catch rate
- .byte 220 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Mew
- base_stats 100, 100, 100, 100, 100, 100
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 64 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_LUM_BERRY
- .2byte ITEM_LUM_BERRY
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 100 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Chikorita
- base_stats 45, 49, 65, 45, 49, 65
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 64 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_GRASS
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Bayleef
- base_stats 60, 62, 80, 60, 63, 80
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 141 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_GRASS
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Meganium
- base_stats 80, 82, 100, 80, 83, 100
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 208 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_GRASS
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Cyndaquil
- base_stats 39, 52, 43, 65, 60, 50
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 65 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Quilava
- base_stats 58, 64, 58, 80, 80, 65
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 142 @ base exp. yield
- ev_yield 0, 0, 0, 1, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Typhlosion
- base_stats 78, 84, 78, 100, 109, 85
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 209 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Totodile
- base_stats 50, 65, 64, 43, 44, 48
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 66 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Croconaw
- base_stats 65, 80, 80, 58, 59, 63
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 143 @ base exp. yield
- ev_yield 0, 1, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Feraligatr
- base_stats 85, 105, 100, 78, 79, 83
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 210 @ base exp. yield
- ev_yield 0, 2, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Sentret
- base_stats 35, 46, 34, 20, 35, 45
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 255 @ catch rate
- .byte 57 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_ORAN_BERRY
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_KEEN_EYE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Furret
- base_stats 85, 76, 64, 90, 45, 55
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 90 @ catch rate
- .byte 116 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_ORAN_BERRY
- .2byte ITEM_SITRUS_BERRY
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_KEEN_EYE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Hoothoot
- base_stats 60, 30, 30, 50, 36, 56
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 255 @ catch rate
- .byte 58 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_INSOMNIA
- .byte ABILITY_KEEN_EYE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Noctowl
- base_stats 100, 50, 50, 70, 76, 96
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 90 @ catch rate
- .byte 162 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_INSOMNIA
- .byte ABILITY_KEEN_EYE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Ledyba
- base_stats 40, 20, 30, 55, 40, 80
- .byte TYPE_BUG
- .byte TYPE_FLYING
- .byte 255 @ catch rate
- .byte 54 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_EARLY_BIRD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Ledian
- base_stats 55, 35, 50, 85, 55, 110
- .byte TYPE_BUG
- .byte TYPE_FLYING
- .byte 90 @ catch rate
- .byte 134 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_EARLY_BIRD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Spinarak
- base_stats 40, 60, 40, 30, 40, 40
- .byte TYPE_BUG
- .byte TYPE_POISON
- .byte 255 @ catch rate
- .byte 54 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_INSOMNIA
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Ariados
- base_stats 70, 90, 70, 40, 60, 60
- .byte TYPE_BUG
- .byte TYPE_POISON
- .byte 90 @ catch rate
- .byte 134 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_INSOMNIA
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Crobat
- base_stats 85, 90, 80, 130, 70, 80
- .byte TYPE_POISON
- .byte TYPE_FLYING
- .byte 90 @ catch rate
- .byte 204 @ base exp. yield
- ev_yield 0, 0, 0, 3, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_INNER_FOCUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Chinchou
- base_stats 75, 38, 38, 67, 56, 56
- .byte TYPE_WATER
- .byte TYPE_ELECTRIC
- .byte 190 @ catch rate
- .byte 90 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_YELLOW_SHARD
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_VOLT_ABSORB
- .byte ABILITY_ILLUMINATE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Lanturn
- base_stats 125, 58, 58, 67, 76, 76
- .byte TYPE_WATER
- .byte TYPE_ELECTRIC
- .byte 75 @ catch rate
- .byte 156 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_YELLOW_SHARD
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_VOLT_ABSORB
- .byte ABILITY_ILLUMINATE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Pichu
- base_stats 20, 40, 15, 60, 35, 35
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 190 @ catch rate
- .byte 42 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_ORAN_BERRY
- .byte 127 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_STATIC
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Cleffa
- base_stats 50, 25, 28, 15, 45, 55
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 150 @ catch rate
- .byte 37 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_LEPPA_BERRY
- .2byte ITEM_MOON_STONE
- .byte 191 @ gender
- .byte 10 @ egg cycles
- .byte 140 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_CUTE_CHARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Igglybuff
- base_stats 90, 30, 15, 15, 40, 20
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 170 @ catch rate
- .byte 39 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 191 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_CUTE_CHARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Togepi
- base_stats 35, 20, 65, 20, 40, 65
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 190 @ catch rate
- .byte 74 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_HUSTLE
- .byte ABILITY_SERENE_GRACE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Togetic
- base_stats 55, 40, 85, 40, 80, 105
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 75 @ catch rate
- .byte 114 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_HUSTLE
- .byte ABILITY_SERENE_GRACE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Natu
- base_stats 40, 50, 45, 70, 70, 45
- .byte TYPE_PSYCHIC
- .byte TYPE_FLYING
- .byte 190 @ catch rate
- .byte 73 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_EARLY_BIRD
- .byte 6 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Xatu
- base_stats 65, 75, 70, 95, 95, 70
- .byte TYPE_PSYCHIC
- .byte TYPE_FLYING
- .byte 75 @ catch rate
- .byte 171 @ base exp. yield
- ev_yield 0, 0, 0, 1, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_EARLY_BIRD
- .byte 8 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Mareep
- base_stats 55, 40, 40, 35, 65, 45
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 235 @ catch rate
- .byte 59 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_STATIC
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Flaaffy
- base_stats 70, 55, 55, 45, 80, 60
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 120 @ catch rate
- .byte 117 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_STATIC
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Ampharos
- base_stats 90, 75, 75, 55, 115, 90
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 45 @ catch rate
- .byte 194 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_STATIC
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Bellossom
- base_stats 75, 80, 85, 50, 90, 100
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 184 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Marill
- base_stats 70, 20, 50, 40, 20, 50
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 190 @ catch rate
- .byte 58 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_THICK_FAT
- .byte ABILITY_HUGE_POWER
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Azumarill
- base_stats 100, 50, 80, 50, 50, 80
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 75 @ catch rate
- .byte 153 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_THICK_FAT
- .byte ABILITY_HUGE_POWER
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Sudowoodo
- base_stats 70, 100, 115, 30, 30, 65
- .byte TYPE_ROCK
- .byte TYPE_ROCK
- .byte 65 @ catch rate
- .byte 135 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_STURDY
- .byte ABILITY_ROCK_HEAD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Politoed
- base_stats 90, 75, 75, 70, 90, 100
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 185 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_KINGS_ROCK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_WATER_ABSORB
- .byte ABILITY_DAMP
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Hoppip
- base_stats 35, 35, 40, 50, 35, 55
- .byte TYPE_GRASS
- .byte TYPE_FLYING
- .byte 255 @ catch rate
- .byte 74 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Skiploom
- base_stats 55, 45, 50, 80, 45, 65
- .byte TYPE_GRASS
- .byte TYPE_FLYING
- .byte 120 @ catch rate
- .byte 136 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Jumpluff
- base_stats 75, 55, 70, 110, 55, 85
- .byte TYPE_GRASS
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 176 @ base exp. yield
- ev_yield 0, 0, 0, 3, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Aipom
- base_stats 55, 70, 55, 85, 40, 55
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 94 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_PICKUP
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Sunkern
- base_stats 30, 30, 30, 30, 30, 30
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 235 @ catch rate
- .byte 52 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Sunflora
- base_stats 75, 75, 55, 30, 105, 85
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 120 @ catch rate
- .byte 146 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Yanma
- base_stats 65, 65, 45, 95, 75, 45
- .byte TYPE_BUG
- .byte TYPE_FLYING
- .byte 75 @ catch rate
- .byte 147 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SPEED_BOOST
- .byte ABILITY_COMPOUND_EYES
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Wooper
- base_stats 55, 45, 45, 15, 25, 25
- .byte TYPE_WATER
- .byte TYPE_GROUND
- .byte 255 @ catch rate
- .byte 52 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_DAMP
- .byte ABILITY_WATER_ABSORB
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Quagsire
- base_stats 95, 85, 85, 35, 65, 65
- .byte TYPE_WATER
- .byte TYPE_GROUND
- .byte 90 @ catch rate
- .byte 137 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_DAMP
- .byte ABILITY_WATER_ABSORB
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Espeon
- base_stats 65, 65, 60, 110, 130, 95
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 197 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 35 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Umbreon
- base_stats 95, 65, 110, 65, 60, 130
- .byte TYPE_DARK
- .byte TYPE_DARK
- .byte 45 @ catch rate
- .byte 197 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 35 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Murkrow
- base_stats 60, 85, 42, 91, 85, 42
- .byte TYPE_DARK
- .byte TYPE_FLYING
- .byte 30 @ catch rate
- .byte 107 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_INSOMNIA
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Slowking
- base_stats 95, 75, 80, 30, 100, 110
- .byte TYPE_WATER
- .byte TYPE_PSYCHIC
- .byte 70 @ catch rate
- .byte 164 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_KINGS_ROCK
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_OWN_TEMPO
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Misdreavus
- base_stats 60, 60, 60, 85, 85, 85
- .byte TYPE_GHOST
- .byte TYPE_GHOST
- .byte 45 @ catch rate
- .byte 147 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 1
- .2byte ITEM_NONE
- .2byte ITEM_SPELL_TAG
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Unown
- base_stats 48, 72, 48, 48, 72, 48
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 225 @ catch rate
- .byte 61 @ base exp. yield
- ev_yield 0, 1, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 40 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Wobbuffet
- base_stats 190, 33, 58, 33, 33, 58
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 177 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_SHADOW_TAG
- .byte ABILITY_NONE
- .byte 4 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Girafarig
- base_stats 70, 80, 65, 85, 90, 65
- .byte TYPE_NORMAL
- .byte TYPE_PSYCHIC
- .byte 60 @ catch rate
- .byte 149 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_PERSIM_BERRY
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_INNER_FOCUS
- .byte ABILITY_EARLY_BIRD
- .byte 4 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Pineco
- base_stats 50, 65, 90, 15, 35, 35
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 190 @ catch rate
- .byte 60 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_STURDY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Forretress
- base_stats 75, 90, 140, 40, 60, 60
- .byte TYPE_BUG
- .byte TYPE_STEEL
- .byte 75 @ catch rate
- .byte 118 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_STURDY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Dunsparce
- base_stats 100, 70, 70, 45, 65, 65
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 190 @ catch rate
- .byte 75 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SERENE_GRACE
- .byte ABILITY_RUN_AWAY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Gligar
- base_stats 65, 75, 105, 85, 35, 65
- .byte TYPE_GROUND
- .byte TYPE_FLYING
- .byte 60 @ catch rate
- .byte 108 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_HYPER_CUTTER
- .byte ABILITY_SAND_VEIL
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Steelix
- base_stats 75, 85, 200, 30, 55, 65
- .byte TYPE_STEEL
- .byte TYPE_GROUND
- .byte 25 @ catch rate
- .byte 196 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_METAL_COAT
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_STURDY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Snubbull
- base_stats 60, 80, 50, 30, 40, 40
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 190 @ catch rate
- .byte 63 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 191 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_RUN_AWAY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Granbull
- base_stats 90, 120, 75, 45, 60, 60
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 75 @ catch rate
- .byte 178 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 191 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_INTIMIDATE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Qwilfish
- base_stats 65, 95, 75, 85, 55, 55
- .byte TYPE_WATER
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 100 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_POISON_POINT
- .byte ABILITY_SWIFT_SWIM
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Scizor
- base_stats 70, 130, 100, 65, 55, 80
- .byte TYPE_BUG
- .byte TYPE_STEEL
- .byte 25 @ catch rate
- .byte 200 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Shuckle
- base_stats 20, 10, 230, 5, 10, 230
- .byte TYPE_BUG
- .byte TYPE_ROCK
- .byte 190 @ catch rate
- .byte 80 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 1
- .2byte ITEM_ORAN_BERRY
- .2byte ITEM_ORAN_BERRY
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_STURDY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Heracross
- base_stats 80, 125, 75, 85, 40, 95
- .byte TYPE_BUG
- .byte TYPE_FIGHTING
- .byte 45 @ catch rate
- .byte 200 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_GUTS
- .byte 8 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Sneasel
- base_stats 55, 95, 55, 115, 35, 75
- .byte TYPE_DARK
- .byte TYPE_ICE
- .byte 60 @ catch rate
- .byte 132 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_QUICK_CLAW
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_INNER_FOCUS
- .byte ABILITY_KEEN_EYE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Teddiursa
- base_stats 60, 80, 50, 40, 50, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 120 @ catch rate
- .byte 124 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_PICKUP
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Ursaring
- base_stats 90, 130, 75, 55, 75, 75
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 60 @ catch rate
- .byte 189 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_GUTS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Slugma
- base_stats 40, 40, 40, 20, 70, 40
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 190 @ catch rate
- .byte 78 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_MAGMA_ARMOR
- .byte ABILITY_FLAME_BODY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Magcargo
- base_stats 50, 50, 120, 30, 80, 80
- .byte TYPE_FIRE
- .byte TYPE_ROCK
- .byte 75 @ catch rate
- .byte 154 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_MAGMA_ARMOR
- .byte ABILITY_FLAME_BODY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Swinub
- base_stats 50, 50, 40, 50, 30, 30
- .byte TYPE_ICE
- .byte TYPE_GROUND
- .byte 225 @ catch rate
- .byte 78 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Piloswine
- base_stats 100, 100, 80, 50, 60, 60
- .byte TYPE_ICE
- .byte TYPE_GROUND
- .byte 75 @ catch rate
- .byte 160 @ base exp. yield
- ev_yield 1, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Corsola
- base_stats 55, 55, 85, 35, 65, 85
- .byte TYPE_WATER
- .byte TYPE_ROCK
- .byte 60 @ catch rate
- .byte 113 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_RED_SHARD
- .byte 191 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_HUSTLE
- .byte ABILITY_NATURAL_CURE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Remoraid
- base_stats 35, 65, 35, 65, 65, 35
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 190 @ catch rate
- .byte 78 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_HUSTLE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Octillery
- base_stats 75, 105, 75, 45, 105, 75
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 75 @ catch rate
- .byte 164 @ base exp. yield
- ev_yield 0, 1, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_SUCTION_CUPS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Delibird
- base_stats 45, 55, 45, 75, 65, 45
- .byte TYPE_ICE
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 183 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_VITAL_SPIRIT
- .byte ABILITY_HUSTLE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Mantine
- base_stats 65, 40, 70, 70, 80, 140
- .byte TYPE_WATER
- .byte TYPE_FLYING
- .byte 25 @ catch rate
- .byte 168 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_WATER_ABSORB
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Skarmory
- base_stats 65, 80, 140, 70, 40, 70
- .byte TYPE_STEEL
- .byte TYPE_FLYING
- .byte 25 @ catch rate
- .byte 168 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_STURDY
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Houndour
- base_stats 45, 60, 30, 65, 80, 50
- .byte TYPE_DARK
- .byte TYPE_FIRE
- .byte 120 @ catch rate
- .byte 114 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_EARLY_BIRD
- .byte ABILITY_FLASH_FIRE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Houndoom
- base_stats 75, 90, 50, 95, 110, 80
- .byte TYPE_DARK
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 204 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_EARLY_BIRD
- .byte ABILITY_FLASH_FIRE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Kingdra
- base_stats 75, 95, 95, 85, 95, 95
- .byte TYPE_WATER
- .byte TYPE_DRAGON
- .byte 45 @ catch rate
- .byte 207 @ base exp. yield
- ev_yield 0, 1, 0, 0, 1, 1
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Phanpy
- base_stats 90, 60, 60, 40, 40, 40
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 120 @ catch rate
- .byte 124 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_PICKUP
- .byte ABILITY_NONE
- .byte 10 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Donphan
- base_stats 90, 120, 120, 50, 60, 60
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 60 @ catch rate
- .byte 189 @ base exp. yield
- ev_yield 0, 1, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_STURDY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Porygon2
- base_stats 85, 80, 90, 60, 105, 95
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 180 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_TRACE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Stantler
- base_stats 73, 95, 62, 85, 85, 65
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 165 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Smeargle
- base_stats 55, 20, 35, 75, 20, 45
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 106 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_OWN_TEMPO
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Tyrogue
- base_stats 35, 35, 35, 35, 35, 35
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 75 @ catch rate
- .byte 91 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_GUTS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Hitmontop
- base_stats 50, 95, 95, 70, 35, 110
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 45 @ catch rate
- .byte 138 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Smoochum
- base_stats 45, 30, 15, 65, 85, 65
- .byte TYPE_ICE
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 87 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_ASPEAR_BERRY
- .2byte ITEM_ASPEAR_BERRY
- .byte 254 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Elekid
- base_stats 45, 63, 37, 95, 65, 55
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 45 @ catch rate
- .byte 106 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 63 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_STATIC
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Magby
- base_stats 45, 75, 37, 83, 70, 55
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 117 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_RAWST_BERRY
- .byte 63 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_FLAME_BODY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Miltank
- base_stats 95, 80, 105, 100, 40, 70
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 200 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_MOOMOO_MILK
- .2byte ITEM_MOOMOO_MILK
- .byte 254 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_THICK_FAT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Blissey
- base_stats 255, 10, 10, 55, 75, 135
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 30 @ catch rate
- .byte 255 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_LUCKY_EGG
- .byte 254 @ gender
- .byte 40 @ egg cycles
- .byte 140 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_NATURAL_CURE
- .byte ABILITY_SERENE_GRACE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Raikou
- base_stats 90, 85, 75, 115, 115, 100
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 3 @ catch rate
- .byte 216 @ base exp. yield
- ev_yield 0, 0, 0, 2, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Entei
- base_stats 115, 115, 85, 100, 90, 75
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 3 @ catch rate
- .byte 217 @ base exp. yield
- ev_yield 1, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Suicune
- base_stats 100, 75, 115, 85, 90, 115
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 3 @ catch rate
- .byte 215 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Larvitar
- base_stats 50, 64, 50, 41, 45, 50
- .byte TYPE_ROCK
- .byte TYPE_GROUND
- .byte 45 @ catch rate
- .byte 67 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_GUTS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Pupitar
- base_stats 70, 84, 70, 51, 65, 70
- .byte TYPE_ROCK
- .byte TYPE_GROUND
- .byte 45 @ catch rate
- .byte 144 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_SHED_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Tyranitar
- base_stats 100, 134, 110, 61, 95, 100
- .byte TYPE_ROCK
- .byte TYPE_DARK
- .byte 45 @ catch rate
- .byte 218 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_SAND_STREAM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Lugia
- base_stats 106, 90, 130, 110, 90, 154
- .byte TYPE_PSYCHIC
- .byte TYPE_FLYING
- .byte 3 @ catch rate
- .byte 220 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Ho-Oh
- base_stats 106, 130, 90, 90, 110, 154
- .byte TYPE_FIRE
- .byte TYPE_FLYING
- .byte 3 @ catch rate
- .byte 220 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_SACRED_ASH
- .2byte ITEM_SACRED_ASH
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Celebi
- base_stats 100, 100, 100, 100, 100, 100
- .byte TYPE_PSYCHIC
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 64 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_LUM_BERRY
- .2byte ITEM_LUM_BERRY
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 100 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NATURAL_CURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ ?
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 3 @ catch rate
- .byte 1 @ base exp. yield
- ev_yield 2, 2, 2, 2, 2, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_NONE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Treecko
- base_stats 40, 45, 35, 70, 65, 55
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 65 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Grovyle
- base_stats 50, 65, 45, 95, 85, 65
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 141 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Sceptile
- base_stats 70, 85, 65, 120, 105, 85
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 208 @ base exp. yield
- ev_yield 0, 0, 0, 3, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_OVERGROW
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Torchic
- base_stats 45, 60, 40, 45, 70, 50
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 45 @ catch rate
- .byte 65 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Combusken
- base_stats 60, 85, 60, 55, 85, 60
- .byte TYPE_FIRE
- .byte TYPE_FIGHTING
- .byte 45 @ catch rate
- .byte 142 @ base exp. yield
- ev_yield 0, 1, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Blaziken
- base_stats 80, 120, 70, 80, 110, 70
- .byte TYPE_FIRE
- .byte TYPE_FIGHTING
- .byte 45 @ catch rate
- .byte 209 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_BLAZE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Mudkip
- base_stats 50, 70, 50, 40, 50, 50
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 65 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Marshtomp
- base_stats 70, 85, 70, 50, 60, 70
- .byte TYPE_WATER
- .byte TYPE_GROUND
- .byte 45 @ catch rate
- .byte 143 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Swampert
- base_stats 100, 110, 90, 60, 85, 90
- .byte TYPE_WATER
- .byte TYPE_GROUND
- .byte 45 @ catch rate
- .byte 210 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_TORRENT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Poochyena
- base_stats 35, 55, 35, 35, 30, 30
- .byte TYPE_DARK
- .byte TYPE_DARK
- .byte 255 @ catch rate
- .byte 55 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_PECHA_BERRY
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_RUN_AWAY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Mightyena
- base_stats 70, 90, 70, 70, 60, 60
- .byte TYPE_DARK
- .byte TYPE_DARK
- .byte 127 @ catch rate
- .byte 128 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_PECHA_BERRY
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Zigzagoon
- base_stats 38, 30, 41, 60, 30, 41
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 255 @ catch rate
- .byte 60 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_ORAN_BERRY
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_PICKUP
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Linoone
- base_stats 78, 70, 61, 100, 50, 61
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 90 @ catch rate
- .byte 128 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_ORAN_BERRY
- .2byte ITEM_SITRUS_BERRY
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_PICKUP
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Wurmple
- base_stats 45, 45, 35, 20, 20, 30
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 255 @ catch rate
- .byte 54 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHIELD_DUST
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Silcoon
- base_stats 50, 35, 55, 15, 25, 25
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 120 @ catch rate
- .byte 71 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHED_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Beautifly
- base_stats 60, 70, 50, 65, 90, 50
- .byte TYPE_BUG
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 161 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_SILVER_POWDER
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Cascoon
- base_stats 50, 35, 55, 15, 25, 25
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 120 @ catch rate
- .byte 72 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHED_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Dustox
- base_stats 60, 50, 70, 65, 50, 90
- .byte TYPE_BUG
- .byte TYPE_POISON
- .byte 45 @ catch rate
- .byte 160 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_SILVER_POWDER
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SHIELD_DUST
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Lotad
- base_stats 40, 30, 30, 30, 40, 50
- .byte TYPE_WATER
- .byte TYPE_GRASS
- .byte 255 @ catch rate
- .byte 74 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_GRASS
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_RAIN_DISH
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Lombre
- base_stats 60, 50, 50, 50, 60, 70
- .byte TYPE_WATER
- .byte TYPE_GRASS
- .byte 120 @ catch rate
- .byte 141 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_GRASS
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_RAIN_DISH
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Ludicolo
- base_stats 80, 70, 70, 70, 90, 100
- .byte TYPE_WATER
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 181 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_GRASS
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_RAIN_DISH
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Seedot
- base_stats 40, 40, 50, 30, 30, 30
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 255 @ catch rate
- .byte 74 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_EARLY_BIRD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Nuzleaf
- base_stats 70, 70, 40, 60, 60, 40
- .byte TYPE_GRASS
- .byte TYPE_DARK
- .byte 120 @ catch rate
- .byte 141 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_EARLY_BIRD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Shiftry
- base_stats 90, 100, 60, 80, 90, 60
- .byte TYPE_GRASS
- .byte TYPE_DARK
- .byte 45 @ catch rate
- .byte 181 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_EARLY_BIRD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Nincada
- base_stats 31, 45, 90, 40, 30, 30
- .byte TYPE_BUG
- .byte TYPE_GROUND
- .byte 255 @ catch rate
- .byte 65 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_COMPOUND_EYES
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Ninjask
- base_stats 61, 90, 45, 160, 50, 50
- .byte TYPE_BUG
- .byte TYPE_FLYING
- .byte 120 @ catch rate
- .byte 155 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_SPEED_BOOST
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Shedinja
- base_stats 1, 90, 45, 40, 30, 30
- .byte TYPE_BUG
- .byte TYPE_GHOST
- .byte 45 @ catch rate
- .byte 95 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_WONDER_GUARD
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Taillow
- base_stats 40, 55, 30, 85, 30, 30
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 200 @ catch rate
- .byte 59 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_GUTS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Swellow
- base_stats 60, 85, 60, 125, 50, 50
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 162 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_FLYING
- .byte ABILITY_GUTS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Shroomish
- base_stats 60, 40, 60, 35, 40, 60
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 255 @ catch rate
- .byte 65 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_GRASS
- .byte ABILITY_EFFECT_SPORE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Breloom
- base_stats 60, 130, 80, 70, 60, 60
- .byte TYPE_GRASS
- .byte TYPE_FIGHTING
- .byte 90 @ catch rate
- .byte 165 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_GRASS
- .byte ABILITY_EFFECT_SPORE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Spinda
- base_stats 60, 60, 60, 60, 60, 60
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 255 @ catch rate
- .byte 85 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_CHESTO_BERRY
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_OWN_TEMPO
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Wingull
- base_stats 40, 30, 30, 85, 55, 30
- .byte TYPE_WATER
- .byte TYPE_FLYING
- .byte 190 @ catch rate
- .byte 64 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FLYING
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Pelipper
- base_stats 60, 50, 100, 65, 85, 70
- .byte TYPE_WATER
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 164 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FLYING
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Surskit
- base_stats 40, 30, 32, 65, 50, 52
- .byte TYPE_BUG
- .byte TYPE_WATER
- .byte 200 @ catch rate
- .byte 63 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_BUG
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Masquerain
- base_stats 70, 60, 62, 60, 80, 82
- .byte TYPE_BUG
- .byte TYPE_FLYING
- .byte 75 @ catch rate
- .byte 128 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 1
- .2byte ITEM_NONE
- .2byte ITEM_SILVER_POWDER
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_BUG
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Wailmer
- base_stats 130, 70, 35, 60, 70, 35
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 125 @ catch rate
- .byte 137 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_WATER_VEIL
- .byte ABILITY_OBLIVIOUS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Wailord
- base_stats 170, 90, 45, 60, 90, 45
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 60 @ catch rate
- .byte 206 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_WATER_VEIL
- .byte ABILITY_OBLIVIOUS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Skitty
- base_stats 50, 45, 45, 50, 35, 35
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 255 @ catch rate
- .byte 65 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_LEPPA_BERRY
- .byte 191 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_CUTE_CHARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Delcatty
- base_stats 70, 65, 65, 70, 55, 55
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 60 @ catch rate
- .byte 138 @ base exp. yield
- ev_yield 1, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_LEPPA_BERRY
- .byte 191 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_CUTE_CHARM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Kecleon
- base_stats 60, 90, 70, 40, 60, 120
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 200 @ catch rate
- .byte 132 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_PERSIM_BERRY
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_COLOR_CHANGE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Baltoy
- base_stats 40, 40, 55, 55, 40, 70
- .byte TYPE_GROUND
- .byte TYPE_PSYCHIC
- .byte 255 @ catch rate
- .byte 58 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Claydol
- base_stats 60, 70, 105, 75, 70, 120
- .byte TYPE_GROUND
- .byte TYPE_PSYCHIC
- .byte 90 @ catch rate
- .byte 189 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Nosepass
- base_stats 30, 45, 135, 30, 45, 90
- .byte TYPE_ROCK
- .byte TYPE_ROCK
- .byte 255 @ catch rate
- .byte 108 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_STURDY
- .byte ABILITY_MAGNET_PULL
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Torkoal
- base_stats 70, 85, 140, 20, 85, 70
- .byte TYPE_FIRE
- .byte TYPE_FIRE
- .byte 90 @ catch rate
- .byte 161 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_WHITE_SMOKE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Sableye
- base_stats 50, 75, 75, 50, 65, 65
- .byte TYPE_DARK
- .byte TYPE_GHOST
- .byte 45 @ catch rate
- .byte 98 @ base exp. yield
- ev_yield 0, 1, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_KEEN_EYE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Barboach
- base_stats 50, 48, 43, 60, 46, 41
- .byte TYPE_WATER
- .byte TYPE_GROUND
- .byte 190 @ catch rate
- .byte 92 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Whiscash
- base_stats 110, 78, 73, 60, 76, 71
- .byte TYPE_WATER
- .byte TYPE_GROUND
- .byte 75 @ catch rate
- .byte 158 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Luvdisc
- base_stats 43, 30, 55, 97, 40, 65
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 225 @ catch rate
- .byte 110 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_HEART_SCALE
- .2byte ITEM_NONE
- .byte 191 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Corphish
- base_stats 43, 80, 65, 35, 50, 35
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 205 @ catch rate
- .byte 111 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_HYPER_CUTTER
- .byte ABILITY_SHELL_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Crawdaunt
- base_stats 63, 120, 85, 55, 90, 55
- .byte TYPE_WATER
- .byte TYPE_DARK
- .byte 155 @ catch rate
- .byte 161 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_HYPER_CUTTER
- .byte ABILITY_SHELL_ARMOR
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Feebas
- base_stats 20, 15, 20, 80, 10, 55
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 255 @ catch rate
- .byte 61 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Milotic
- base_stats 95, 60, 79, 81, 100, 125
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 60 @ catch rate
- .byte 213 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_MARVEL_SCALE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Carvanha
- base_stats 45, 90, 20, 65, 65, 20
- .byte TYPE_WATER
- .byte TYPE_DARK
- .byte 225 @ catch rate
- .byte 88 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_ROUGH_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Sharpedo
- base_stats 70, 120, 40, 95, 95, 40
- .byte TYPE_WATER
- .byte TYPE_DARK
- .byte 60 @ catch rate
- .byte 175 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_2
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_ROUGH_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Trapinch
- base_stats 45, 100, 45, 10, 45, 45
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 255 @ catch rate
- .byte 73 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SOFT_SAND
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_HYPER_CUTTER
- .byte ABILITY_ARENA_TRAP
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Vibrava
- base_stats 50, 70, 50, 70, 50, 50
- .byte TYPE_GROUND
- .byte TYPE_DRAGON
- .byte 120 @ catch rate
- .byte 126 @ base exp. yield
- ev_yield 0, 1, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_LEVITATE
- .byte ABILITY_LEVITATE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Flygon
- base_stats 80, 100, 80, 100, 80, 80
- .byte TYPE_GROUND
- .byte TYPE_DRAGON
- .byte 45 @ catch rate
- .byte 197 @ base exp. yield
- ev_yield 0, 1, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_BUG
- .byte ABILITY_LEVITATE
- .byte ABILITY_LEVITATE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Makuhita
- base_stats 72, 60, 30, 25, 20, 30
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 180 @ catch rate
- .byte 87 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_THICK_FAT
- .byte ABILITY_GUTS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Hariyama
- base_stats 144, 120, 60, 50, 40, 60
- .byte TYPE_FIGHTING
- .byte TYPE_FIGHTING
- .byte 200 @ catch rate
- .byte 184 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_KINGS_ROCK
- .byte 63 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_THICK_FAT
- .byte ABILITY_GUTS
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Electrike
- base_stats 40, 45, 40, 65, 65, 40
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 120 @ catch rate
- .byte 104 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_STATIC
- .byte ABILITY_LIGHTNING_ROD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Manectric
- base_stats 70, 75, 60, 105, 105, 60
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 45 @ catch rate
- .byte 168 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_STATIC
- .byte ABILITY_LIGHTNING_ROD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Numel
- base_stats 60, 60, 40, 35, 65, 45
- .byte TYPE_FIRE
- .byte TYPE_GROUND
- .byte 255 @ catch rate
- .byte 88 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_RAWST_BERRY
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Camerupt
- base_stats 70, 100, 70, 40, 105, 75
- .byte TYPE_FIRE
- .byte TYPE_GROUND
- .byte 150 @ catch rate
- .byte 175 @ base exp. yield
- ev_yield 0, 1, 0, 0, 1, 0
- .2byte ITEM_RAWST_BERRY
- .2byte ITEM_RAWST_BERRY
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_MAGMA_ARMOR
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Spheal
- base_stats 70, 40, 50, 25, 55, 50
- .byte TYPE_ICE
- .byte TYPE_WATER
- .byte 255 @ catch rate
- .byte 75 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_THICK_FAT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Sealeo
- base_stats 90, 60, 70, 45, 75, 70
- .byte TYPE_ICE
- .byte TYPE_WATER
- .byte 120 @ catch rate
- .byte 128 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_THICK_FAT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Walrein
- base_stats 110, 80, 90, 65, 95, 90
- .byte TYPE_ICE
- .byte TYPE_WATER
- .byte 45 @ catch rate
- .byte 192 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_FIELD
- .byte ABILITY_THICK_FAT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Cacnea
- base_stats 50, 85, 40, 35, 85, 40
- .byte TYPE_GRASS
- .byte TYPE_GRASS
- .byte 190 @ catch rate
- .byte 97 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_POISON_BARB
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_SAND_VEIL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Cacturne
- base_stats 70, 115, 60, 55, 115, 60
- .byte TYPE_GRASS
- .byte TYPE_DARK
- .byte 60 @ catch rate
- .byte 177 @ base exp. yield
- ev_yield 0, 1, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_POISON_BARB
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_GRASS
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_SAND_VEIL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Snorunt
- base_stats 50, 50, 50, 50, 50, 50
- .byte TYPE_ICE
- .byte TYPE_ICE
- .byte 190 @ catch rate
- .byte 74 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_INNER_FOCUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Glalie
- base_stats 80, 80, 80, 80, 80, 80
- .byte TYPE_ICE
- .byte TYPE_ICE
- .byte 75 @ catch rate
- .byte 187 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NEVER_MELT_ICE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_INNER_FOCUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Lunatone
- base_stats 70, 55, 65, 70, 95, 85
- .byte TYPE_ROCK
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 150 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_MOON_STONE
- .byte 255 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Solrock
- base_stats 70, 95, 85, 70, 55, 65
- .byte TYPE_ROCK
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 150 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SUN_STONE
- .byte 255 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Azurill
- base_stats 50, 20, 40, 20, 20, 40
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 150 @ catch rate
- .byte 33 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 191 @ gender
- .byte 10 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_THICK_FAT
- .byte ABILITY_HUGE_POWER
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Spoink
- base_stats 60, 25, 35, 60, 70, 80
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 255 @ catch rate
- .byte 89 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_THICK_FAT
- .byte ABILITY_OWN_TEMPO
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Grumpig
- base_stats 80, 45, 65, 80, 90, 110
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 60 @ catch rate
- .byte 164 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_THICK_FAT
- .byte ABILITY_OWN_TEMPO
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Plusle
- base_stats 60, 50, 40, 95, 85, 75
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 200 @ catch rate
- .byte 120 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_PLUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Minun
- base_stats 60, 40, 50, 95, 75, 85
- .byte TYPE_ELECTRIC
- .byte TYPE_ELECTRIC
- .byte 200 @ catch rate
- .byte 120 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_MINUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Mawile
- base_stats 50, 85, 85, 50, 55, 55
- .byte TYPE_STEEL
- .byte TYPE_STEEL
- .byte 45 @ catch rate
- .byte 98 @ base exp. yield
- ev_yield 0, 1, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FAIRY
- .byte ABILITY_HYPER_CUTTER
- .byte ABILITY_INTIMIDATE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Meditite
- base_stats 30, 40, 55, 60, 40, 55
- .byte TYPE_FIGHTING
- .byte TYPE_PSYCHIC
- .byte 180 @ catch rate
- .byte 91 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_PURE_POWER
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Medicham
- base_stats 60, 60, 75, 80, 60, 75
- .byte TYPE_FIGHTING
- .byte TYPE_PSYCHIC
- .byte 90 @ catch rate
- .byte 153 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_HUMAN_LIKE
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_PURE_POWER
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Swablu
- base_stats 45, 40, 60, 50, 40, 75
- .byte TYPE_NORMAL
- .byte TYPE_FLYING
- .byte 255 @ catch rate
- .byte 74 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_NATURAL_CURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Altaria
- base_stats 75, 70, 90, 80, 70, 105
- .byte TYPE_DRAGON
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 188 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_FLYING
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_NATURAL_CURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Wynaut
- base_stats 95, 23, 48, 23, 23, 48
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 125 @ catch rate
- .byte 44 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_SHADOW_TAG
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Duskull
- base_stats 20, 40, 90, 25, 30, 90
- .byte TYPE_GHOST
- .byte TYPE_GHOST
- .byte 190 @ catch rate
- .byte 97 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_SPELL_TAG
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Dusclops
- base_stats 40, 70, 130, 25, 60, 130
- .byte TYPE_GHOST
- .byte TYPE_GHOST
- .byte 90 @ catch rate
- .byte 179 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_SPELL_TAG
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Roselia
- base_stats 50, 60, 45, 65, 100, 80
- .byte TYPE_GRASS
- .byte TYPE_POISON
- .byte 150 @ catch rate
- .byte 152 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_POISON_BARB
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_GRASS
- .byte ABILITY_NATURAL_CURE
- .byte ABILITY_POISON_POINT
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Slakoth
- base_stats 60, 60, 60, 30, 35, 35
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 255 @ catch rate
- .byte 83 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_TRUANT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Vigoroth
- base_stats 80, 80, 80, 90, 55, 55
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 120 @ catch rate
- .byte 126 @ base exp. yield
- ev_yield 0, 0, 0, 2, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_VITAL_SPIRIT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Slaking
- base_stats 150, 160, 100, 100, 95, 65
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 210 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_TRUANT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Gulpin
- base_stats 70, 43, 53, 40, 43, 53
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 225 @ catch rate
- .byte 75 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_BIG_PEARL
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LIQUID_OOZE
- .byte ABILITY_STICKY_HOLD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Swalot
- base_stats 100, 73, 83, 55, 73, 83
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 75 @ catch rate
- .byte 168 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_BIG_PEARL
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LIQUID_OOZE
- .byte ABILITY_STICKY_HOLD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Tropius
- base_stats 99, 68, 83, 51, 72, 87
- .byte TYPE_GRASS
- .byte TYPE_FLYING
- .byte 200 @ catch rate
- .byte 169 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_GRASS
- .byte ABILITY_CHLOROPHYLL
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Whismur
- base_stats 64, 51, 23, 28, 51, 23
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 190 @ catch rate
- .byte 68 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_CHESTO_BERRY
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SOUNDPROOF
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Loudred
- base_stats 84, 71, 43, 48, 71, 43
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 120 @ catch rate
- .byte 126 @ base exp. yield
- ev_yield 2, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_CHESTO_BERRY
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SOUNDPROOF
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Exploud
- base_stats 104, 91, 63, 68, 91, 63
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 184 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_CHESTO_BERRY
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_FIELD
- .byte ABILITY_SOUNDPROOF
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Clamperl
- base_stats 35, 64, 85, 32, 74, 55
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 255 @ catch rate
- .byte 142 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_BLUE_SHARD
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_SHELL_ARMOR
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Huntail
- base_stats 55, 104, 105, 52, 94, 75
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 60 @ catch rate
- .byte 178 @ base exp. yield
- ev_yield 0, 1, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Gorebyss
- base_stats 55, 84, 105, 52, 114, 75
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 60 @ catch rate
- .byte 178 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_1
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PINK
- .2byte 0 @ padding
-
-@ Absol
- base_stats 65, 130, 60, 75, 75, 60
- .byte TYPE_DARK
- .byte TYPE_DARK
- .byte 30 @ catch rate
- .byte 174 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_MEDIUM_SLOW
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Shuppet
- base_stats 44, 75, 35, 45, 63, 33
- .byte TYPE_GHOST
- .byte TYPE_GHOST
- .byte 225 @ catch rate
- .byte 97 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SPELL_TAG
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_INSOMNIA
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Banette
- base_stats 64, 115, 65, 65, 83, 63
- .byte TYPE_GHOST
- .byte TYPE_GHOST
- .byte 45 @ catch rate
- .byte 179 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_SPELL_TAG
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_INSOMNIA
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Seviper
- base_stats 73, 100, 60, 65, 100, 60
- .byte TYPE_POISON
- .byte TYPE_POISON
- .byte 90 @ catch rate
- .byte 165 @ base exp. yield
- ev_yield 0, 1, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_SHED_SKIN
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLACK
- .2byte 0 @ padding
-
-@ Zangoose
- base_stats 73, 115, 60, 90, 60, 60
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 90 @ catch rate
- .byte 165 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_FIELD
- .byte EGG_GROUP_FIELD
- .byte ABILITY_IMMUNITY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Relicanth
- base_stats 100, 90, 130, 55, 45, 65
- .byte TYPE_WATER
- .byte TYPE_ROCK
- .byte 25 @ catch rate
- .byte 198 @ base exp. yield
- ev_yield 1, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_GREEN_SHARD
- .byte 31 @ gender
- .byte 40 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_WATER_1
- .byte EGG_GROUP_WATER_2
- .byte ABILITY_SWIFT_SWIM
- .byte ABILITY_ROCK_HEAD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Aron
- base_stats 50, 70, 100, 30, 40, 40
- .byte TYPE_STEEL
- .byte TYPE_ROCK
- .byte 180 @ catch rate
- .byte 96 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_HARD_STONE
- .byte 127 @ gender
- .byte 35 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_STURDY
- .byte ABILITY_ROCK_HEAD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Lairon
- base_stats 60, 90, 140, 40, 50, 50
- .byte TYPE_STEEL
- .byte TYPE_ROCK
- .byte 90 @ catch rate
- .byte 152 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_HARD_STONE
- .byte 127 @ gender
- .byte 35 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_STURDY
- .byte ABILITY_ROCK_HEAD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Aggron
- base_stats 70, 110, 180, 50, 60, 60
- .byte TYPE_STEEL
- .byte TYPE_ROCK
- .byte 45 @ catch rate
- .byte 205 @ base exp. yield
- ev_yield 0, 0, 3, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_HARD_STONE
- .byte 127 @ gender
- .byte 35 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MONSTER
- .byte EGG_GROUP_MONSTER
- .byte ABILITY_STURDY
- .byte ABILITY_ROCK_HEAD
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Castform
- base_stats 70, 70, 70, 70, 70, 70
- .byte TYPE_NORMAL
- .byte TYPE_NORMAL
- .byte 45 @ catch rate
- .byte 145 @ base exp. yield
- ev_yield 1, 0, 0, 0, 0, 0
- .2byte ITEM_MYSTIC_WATER
- .2byte ITEM_MYSTIC_WATER
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_MEDIUM_FAST
- .byte EGG_GROUP_FAIRY
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_FORECAST
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Volbeat
- base_stats 65, 73, 55, 85, 47, 75
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 150 @ catch rate
- .byte 146 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_ILLUMINATE
- .byte ABILITY_SWARM
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Illumise
- base_stats 65, 47, 55, 85, 73, 75
- .byte TYPE_BUG
- .byte TYPE_BUG
- .byte 150 @ catch rate
- .byte 146 @ base exp. yield
- ev_yield 0, 0, 0, 1, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 254 @ gender
- .byte 15 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FLUCTUATING
- .byte EGG_GROUP_BUG
- .byte EGG_GROUP_HUMAN_LIKE
- .byte ABILITY_OBLIVIOUS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Lileep
- base_stats 66, 41, 77, 23, 61, 87
- .byte TYPE_ROCK
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 121 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 30 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_SUCTION_CUPS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_PURPLE
- .2byte 0 @ padding
-
-@ Cradily
- base_stats 86, 81, 97, 43, 81, 107
- .byte TYPE_ROCK
- .byte TYPE_GRASS
- .byte 45 @ catch rate
- .byte 201 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 2
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 30 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_SUCTION_CUPS
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Anorith
- base_stats 45, 95, 50, 75, 40, 50
- .byte TYPE_ROCK
- .byte TYPE_BUG
- .byte 45 @ catch rate
- .byte 119 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 30 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_BATTLE_ARMOR
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Armaldo
- base_stats 75, 125, 100, 45, 70, 80
- .byte TYPE_ROCK
- .byte TYPE_BUG
- .byte 45 @ catch rate
- .byte 200 @ base exp. yield
- ev_yield 0, 2, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 31 @ gender
- .byte 30 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_ERRATIC
- .byte EGG_GROUP_WATER_3
- .byte EGG_GROUP_WATER_3
- .byte ABILITY_BATTLE_ARMOR
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Ralts
- base_stats 28, 25, 25, 40, 45, 35
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 235 @ catch rate
- .byte 70 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_TRACE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Kirlia
- base_stats 38, 35, 35, 50, 65, 55
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 120 @ catch rate
- .byte 140 @ base exp. yield
- ev_yield 0, 0, 0, 0, 2, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_TRACE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Gardevoir
- base_stats 68, 65, 65, 80, 125, 115
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 208 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 20 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_SYNCHRONIZE
- .byte ABILITY_TRACE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Bagon
- base_stats 45, 75, 60, 50, 40, 30
- .byte TYPE_DRAGON
- .byte TYPE_DRAGON
- .byte 45 @ catch rate
- .byte 89 @ base exp. yield
- ev_yield 0, 1, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_DRAGON
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Shelgon
- base_stats 65, 95, 100, 50, 60, 50
- .byte TYPE_DRAGON
- .byte TYPE_DRAGON
- .byte 45 @ catch rate
- .byte 144 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_DRAGON
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_ROCK_HEAD
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_WHITE
- .2byte 0 @ padding
-
-@ Salamence
- base_stats 95, 135, 80, 100, 110, 80
- .byte TYPE_DRAGON
- .byte TYPE_FLYING
- .byte 45 @ catch rate
- .byte 218 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_DRAGON_SCALE
- .byte 127 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_DRAGON
- .byte EGG_GROUP_DRAGON
- .byte ABILITY_INTIMIDATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Beldum
- base_stats 40, 55, 80, 30, 35, 60
- .byte TYPE_STEEL
- .byte TYPE_PSYCHIC
- .byte 3 @ catch rate
- .byte 103 @ base exp. yield
- ev_yield 0, 0, 1, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_METAL_COAT
- .byte 255 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_CLEAR_BODY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Metang
- base_stats 60, 75, 100, 50, 55, 80
- .byte TYPE_STEEL
- .byte TYPE_PSYCHIC
- .byte 3 @ catch rate
- .byte 153 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_METAL_COAT
- .byte 255 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_CLEAR_BODY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Metagross
- base_stats 80, 135, 130, 70, 95, 90
- .byte TYPE_STEEL
- .byte TYPE_PSYCHIC
- .byte 3 @ catch rate
- .byte 210 @ base exp. yield
- ev_yield 0, 0, 3, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_METAL_COAT
- .byte 255 @ gender
- .byte 40 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_MINERAL
- .byte EGG_GROUP_MINERAL
- .byte ABILITY_CLEAR_BODY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Regirock
- base_stats 80, 100, 200, 50, 50, 100
- .byte TYPE_ROCK
- .byte TYPE_ROCK
- .byte 3 @ catch rate
- .byte 217 @ base exp. yield
- ev_yield 0, 0, 3, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_CLEAR_BODY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BROWN
- .2byte 0 @ padding
-
-@ Regice
- base_stats 80, 50, 100, 50, 100, 200
- .byte TYPE_ICE
- .byte TYPE_ICE
- .byte 3 @ catch rate
- .byte 216 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_CLEAR_BODY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Registeel
- base_stats 80, 75, 150, 50, 75, 150
- .byte TYPE_STEEL
- .byte TYPE_STEEL
- .byte 3 @ catch rate
- .byte 215 @ base exp. yield
- ev_yield 0, 0, 2, 0, 0, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 80 @ egg cycles
- .byte 35 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_CLEAR_BODY
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GRAY
- .2byte 0 @ padding
-
-@ Kyogre
- base_stats 100, 100, 90, 90, 150, 140
- .byte TYPE_WATER
- .byte TYPE_WATER
- .byte 5 @ catch rate
- .byte 218 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_DRIZZLE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Groudon
- base_stats 100, 150, 140, 90, 100, 90
- .byte TYPE_GROUND
- .byte TYPE_GROUND
- .byte 5 @ catch rate
- .byte 218 @ base exp. yield
- ev_yield 0, 3, 0, 0, 0, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_DROUGHT
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Rayquaza
- base_stats 105, 150, 90, 95, 150, 90
- .byte TYPE_DRAGON
- .byte TYPE_FLYING
- .byte 3 @ catch rate
- .byte 220 @ base exp. yield
- ev_yield 0, 2, 0, 0, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_AIR_LOCK
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_GREEN
- .2byte 0 @ padding
-
-@ Latias
- base_stats 80, 80, 90, 110, 110, 130
- .byte TYPE_DRAGON
- .byte TYPE_PSYCHIC
- .byte 3 @ catch rate
- .byte 211 @ base exp. yield
- ev_yield 0, 0, 0, 0, 0, 3
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 254 @ gender
- .byte 120 @ egg cycles
- .byte 90 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Latios
- base_stats 80, 90, 80, 110, 130, 110
- .byte TYPE_DRAGON
- .byte TYPE_PSYCHIC
- .byte 3 @ catch rate
- .byte 211 @ base exp. yield
- ev_yield 0, 0, 0, 0, 3, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 0 @ gender
- .byte 120 @ egg cycles
- .byte 90 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
-
-@ Jirachi
- base_stats 100, 100, 100, 100, 100, 100
- .byte TYPE_STEEL
- .byte TYPE_PSYCHIC
- .byte 3 @ catch rate
- .byte 215 @ base exp. yield
- ev_yield 3, 0, 0, 0, 0, 0
- .2byte ITEM_STAR_PIECE
- .2byte ITEM_STAR_PIECE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 100 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_SERENE_GRACE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_YELLOW
- .2byte 0 @ padding
-
-@ Deoxys
- base_stats 50, 150, 50, 150, 150, 50
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 3 @ catch rate
- .byte 215 @ base exp. yield
- ev_yield 0, 1, 0, 1, 1, 0
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 255 @ gender
- .byte 120 @ egg cycles
- .byte 0 @ base friendship
- .byte GROWTH_SLOW
- .byte EGG_GROUP_UNDISCOVERED
- .byte EGG_GROUP_UNDISCOVERED
- .byte ABILITY_PRESSURE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_RED
- .2byte 0 @ padding
-
-@ Chimecho
- base_stats 65, 50, 70, 65, 95, 80
- .byte TYPE_PSYCHIC
- .byte TYPE_PSYCHIC
- .byte 45 @ catch rate
- .byte 147 @ base exp. yield
- ev_yield 0, 0, 0, 0, 1, 1
- .2byte ITEM_NONE
- .2byte ITEM_NONE
- .byte 127 @ gender
- .byte 25 @ egg cycles
- .byte 70 @ base friendship
- .byte GROWTH_FAST
- .byte EGG_GROUP_AMORPHOUS
- .byte EGG_GROUP_AMORPHOUS
- .byte ABILITY_LEVITATE
- .byte ABILITY_NONE
- .byte 0 @ Safari Zone flee rate
- .byte BODY_COLOR_BLUE
- .2byte 0 @ padding
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index 2b9b6864b..430f9f403 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -1,11 +1,11 @@
- .include "include/constants/battle_ai.h"
- .include "include/constants/abilities.h"
- .include "include/constants/items.h"
- .include "include/constants/moves.h"
- .include "include/constants/battle_move_effects.h"
- .include "include/constants/hold_effects.h"
- .include "constants/battle_constants.inc"
- .include "constants/type_constants.inc"
+#include "constants/battle.h"
+#include "constants/battle_ai.h"
+#include "constants/abilities.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/battle_move_effects.h"
+#include "constants/hold_effects.h"
+#include "constants/pokemon.h"
.include "asm/macros/battle_ai_script.inc"
.section script_data, "aw", %progbits
@@ -218,7 +218,7 @@ BattleAIScript_82DC2D4:
get_ability AI_TARGET
if_equal ABILITY_INSOMNIA, Score_Minus10
if_equal ABILITY_VITAL_SPIRIT, Score_Minus10
- if_status AI_TARGET, STATUS_ANY, Score_Minus10
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus10
if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10
end
@@ -237,11 +237,11 @@ BattleAIScript_82DC31A:
BattleAIScript_82DC31B:
if_status2 AI_TARGET, STATUS2_NIGHTMARE, Score_Minus10
- if_not_status AI_TARGET, STATUS_SLEEP, Score_Minus8
+ if_not_status AI_TARGET, STATUS1_SLEEP, Score_Minus8
end
BattleAIScript_82DC330:
- if_not_status AI_TARGET, STATUS_SLEEP, Score_Minus8
+ if_not_status AI_TARGET, STATUS1_SLEEP, Score_Minus8
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
end
@@ -249,64 +249,64 @@ BattleAIScript_82DC341:
if_hp_less_than AI_USER, 51, Score_Minus10
BattleAIScript_82DC348:
- if_stat_level_equal AI_USER, ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
end
BattleAIScript_82DC351:
- if_stat_level_equal AI_USER, DEF, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
end
BattleAIScript_82DC35A:
- if_stat_level_equal AI_USER, SPEED, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus10
end
BattleAIScript_82DC363:
- if_stat_level_equal AI_USER, SPATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
end
BattleAIScript_82DC36C:
- if_stat_level_equal AI_USER, SPDEF, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus10
end
BattleAIScript_82DC375:
- if_stat_level_equal AI_USER, ACC, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_ACC, 12, Score_Minus10
end
BattleAIScript_82DC37E:
- if_stat_level_equal AI_USER, EVASION, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_EVASION, 12, Score_Minus10
end
BattleAIScript_82DC387:
- if_stat_level_equal AI_TARGET, ATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_HYPER_CUTTER, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC39C:
- if_stat_level_equal AI_TARGET, DEF, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3A9:
- if_stat_level_equal AI_TARGET, SPEED, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPEED, 0, Score_Minus10
if_ability AI_TARGET, ABILITY_SPEED_BOOST, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3BF:
- if_stat_level_equal AI_TARGET, SPATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3CC:
- if_stat_level_equal AI_TARGET, SPDEF, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPDEF, 0, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3D9:
- if_stat_level_equal AI_TARGET, ACC, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_ACC, 0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_KEEN_EYE, Score_Minus10
goto BattleAIScript_82DC3F6
BattleAIScript_82DC3EE:
- if_stat_level_equal AI_TARGET, EVASION, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_EVASION, 0, Score_Minus10
BattleAIScript_82DC3F6:
get_ability AI_TARGET
@@ -315,20 +315,20 @@ BattleAIScript_82DC3F6:
end
BattleAIScript_82DC405:
- if_stat_level_less_than AI_USER, ATK, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, DEF, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, SPEED, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, SPATK, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, SPDEF, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, ACC, 6, BattleAIScript_82DC47A
- if_stat_level_less_than AI_USER, EVASION, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, ATK, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, DEF, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, SPEED, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, SPATK, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, SPDEF, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, ACC, 6, BattleAIScript_82DC47A
- if_stat_level_more_than AI_TARGET, EVASION, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_ATK, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_DEF, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_SPEED, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_SPATK, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_ACC, 6, BattleAIScript_82DC47A
+ if_stat_level_less_than AI_USER, STAT_EVASION, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_SPEED, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_ACC, 6, BattleAIScript_82DC47A
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 6, BattleAIScript_82DC47A
goto Score_Minus10
BattleAIScript_82DC47A:
@@ -350,7 +350,7 @@ BattleAIScript_82DC48C:
if_equal TYPE_POISON, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_IMMUNITY, Score_Minus10
- if_status AI_TARGET, STATUS_ANY, Score_Minus10
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus10
if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10
end
@@ -402,7 +402,7 @@ BattleAIScript_82DC545:
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
get_ability AI_TARGET
if_equal ABILITY_LIMBER, Score_Minus10
- if_status AI_TARGET, STATUS_ANY, Score_Minus10
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus10
if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10
end
@@ -428,7 +428,7 @@ BattleAIScript_82DC59D:
end
BattleAIScript_82DC5A5:
- if_not_status AI_USER, STATUS_SLEEP, Score_Minus8
+ if_not_status AI_USER, STATUS1_SLEEP, Score_Minus8
end
BattleAIScript_82DC5B0:
@@ -436,8 +436,8 @@ BattleAIScript_82DC5B0:
end
BattleAIScript_82DC5BB:
- if_stat_level_equal AI_USER, ATK, 12, Score_Minus10
- if_stat_level_equal AI_USER, DEF, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
end
BattleAIScript_82DC5CC:
@@ -484,8 +484,8 @@ BattleAIScript_82DC635:
end
BattleAIScript_82DC640:
- if_stat_level_equal AI_TARGET, ATK, 0, Score_Minus10
- if_stat_level_equal AI_TARGET, SPATK, 0, Score_Minus8
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus8
BattleAIScript_82DC650:
count_usable_party_mons AI_USER
@@ -536,7 +536,7 @@ BattleAIScript_82DC6A9:
BattleAIScript_82DC6B4:
get_ability AI_TARGET
if_equal ABILITY_WATER_VEIL, Score_Minus10
- if_status AI_TARGET, STATUS_ANY, Score_Minus10
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus10
if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
if_type_effectiveness AI_EFFECTIVENESS_x0_5, Score_Minus10
if_type_effectiveness AI_EFFECTIVENESS_x0_25, Score_Minus10
@@ -566,7 +566,7 @@ BattleAIScript_82DC708:
end
BattleAIScript_82DC713:
- if_not_status AI_USER, STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON, Score_Minus10
+ if_not_status AI_USER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, Score_Minus10
end
BattleAIScript_82DC71E:
@@ -574,18 +574,18 @@ BattleAIScript_82DC71E:
end
BattleAIScript_82DC729:
- if_stat_level_equal AI_TARGET, ATK, 0, Score_Minus10
- if_stat_level_equal AI_TARGET, DEF, 0, Score_Minus8
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus8
end
BattleAIScript_82DC73A:
- if_stat_level_equal AI_USER, DEF, 12, Score_Minus10
- if_stat_level_equal AI_USER, SPDEF, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
end
BattleAIScript_82DC74B:
- if_stat_level_equal AI_USER, ATK, 12, Score_Minus10
- if_stat_level_equal AI_USER, DEF, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
end
BattleAIScript_82DC75C:
@@ -593,13 +593,13 @@ BattleAIScript_82DC75C:
end
BattleAIScript_82DC767:
- if_stat_level_equal AI_USER, SPATK, 12, Score_Minus10
- if_stat_level_equal AI_USER, SPDEF, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
end
BattleAIScript_82DC778:
- if_stat_level_equal AI_USER, ATK, 12, Score_Minus10
- if_stat_level_equal AI_USER, SPEED, 12, Score_Minus8
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus8
end
Score_Minus1:
@@ -805,9 +805,9 @@ BattleAIScript_82DCAC7:
end
BattleAIScript_82DCAC8:
- if_stat_level_less_than AI_TARGET, EVASION, 7, BattleAIScript_82DCAE2
+ if_stat_level_less_than AI_TARGET, STAT_EVASION, 7, BattleAIScript_82DCAE2
score -1
- if_stat_level_less_than AI_TARGET, EVASION, 10, BattleAIScript_82DCAE2
+ if_stat_level_less_than AI_TARGET, STAT_EVASION, 10, BattleAIScript_82DCAE2
if_random_less_than 128, BattleAIScript_82DCAE2
score -1
@@ -906,7 +906,7 @@ sMovesTable_82DCB6C:
.2byte -1
BattleAIScript_82DCBBC:
- if_stat_level_less_than AI_USER, ATK, 9, BattleAIScript_82DCBD1
+ if_stat_level_less_than AI_USER, STAT_ATK, 9, BattleAIScript_82DCBD1
if_random_less_than 100, BattleAIScript_82DCBE0
score -1
goto BattleAIScript_82DCBE0
@@ -928,7 +928,7 @@ BattleAIScript_82DCBF6:
end
BattleAIScript_82DCBF7:
- if_stat_level_less_than AI_USER, DEF, 9, BattleAIScript_82DCC0C
+ if_stat_level_less_than AI_USER, STAT_DEF, 9, BattleAIScript_82DCC0C
if_random_less_than 100, BattleAIScript_82DCC1B
score -1
goto BattleAIScript_82DCC1B
@@ -986,7 +986,7 @@ BattleAIScript_82DCC72:
end
BattleAIScript_82DCC73:
- if_stat_level_less_than AI_USER, SPATK, 9, BattleAIScript_82DCC88
+ if_stat_level_less_than AI_USER, STAT_SPATK, 9, BattleAIScript_82DCC88
if_random_less_than 100, BattleAIScript_82DCC97
score -1
goto BattleAIScript_82DCC97
@@ -1008,7 +1008,7 @@ BattleAIScript_82DCCAD:
end
BattleAIScript_82DCCAE:
- if_stat_level_less_than AI_USER, SPDEF, 9, BattleAIScript_82DCCC3
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 9, BattleAIScript_82DCCC3
if_random_less_than 100, BattleAIScript_82DCCD2
score -1
goto BattleAIScript_82DCCD2
@@ -1054,7 +1054,7 @@ sTypesTable_82DCD0A:
.byte -1
BattleAIScript_82DCD14:
- if_stat_level_less_than AI_USER, ACC, 9, BattleAIScript_82DCD24
+ if_stat_level_less_than AI_USER, STAT_ACC, 9, BattleAIScript_82DCD24
if_random_less_than 50, BattleAIScript_82DCD24
score -2
@@ -1071,12 +1071,12 @@ BattleAIScript_82DCD2E:
score +3
BattleAIScript_82DCD3D:
- if_stat_level_less_than AI_USER, EVASION, 9, BattleAIScript_82DCD4D
+ if_stat_level_less_than AI_USER, STAT_EVASION, 9, BattleAIScript_82DCD4D
if_random_less_than 128, BattleAIScript_82DCD4D
score -1
BattleAIScript_82DCD4D:
- if_not_status AI_TARGET, STATUS_TOXIC_POISON, BattleAIScript_82DCD6C
+ if_not_status AI_TARGET, STATUS1_TOXIC_POISON, BattleAIScript_82DCD6C
if_hp_more_than AI_USER, 50, BattleAIScript_82DCD64
if_random_less_than 80, BattleAIScript_82DCD6C
@@ -1101,7 +1101,7 @@ BattleAIScript_82DCD90:
BattleAIScript_82DCDA2:
if_hp_more_than AI_USER, 70, BattleAIScript_82DCDC7
- if_stat_level_equal AI_USER, EVASION, 6, BattleAIScript_82DCDC7
+ if_stat_level_equal AI_USER, STAT_EVASION, 6, BattleAIScript_82DCDC7
if_hp_less_than AI_USER, 40, BattleAIScript_82DCDC5
if_hp_less_than AI_TARGET, 40, BattleAIScript_82DCDC5
if_random_less_than 70, BattleAIScript_82DCDC7
@@ -1113,10 +1113,10 @@ BattleAIScript_82DCDC7:
end
BattleAIScript_82DCDC8:
- if_stat_level_more_than AI_TARGET, EVASION, 10, BattleAIScript_82DCDED
- if_stat_level_less_than AI_USER, ACC, 2, BattleAIScript_82DCDED
- if_stat_level_more_than AI_TARGET, EVASION, 8, BattleAIScript_82DCDEF
- if_stat_level_less_than AI_USER, ACC, 4, BattleAIScript_82DCDEF
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 10, BattleAIScript_82DCDED
+ if_stat_level_less_than AI_USER, STAT_ACC, 2, BattleAIScript_82DCDED
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, BattleAIScript_82DCDEF
+ if_stat_level_less_than AI_USER, STAT_ACC, 4, BattleAIScript_82DCDEF
goto BattleAIScript_82DCDF7
BattleAIScript_82DCDED:
@@ -1130,13 +1130,13 @@ BattleAIScript_82DCDF7:
end
BattleAIScript_82DCDF8:
- if_stat_level_equal AI_TARGET, ATK, 6, BattleAIScript_82DCE1B
+ if_stat_level_equal AI_TARGET, STAT_ATK, 6, BattleAIScript_82DCE1B
score -1
if_hp_more_than AI_USER, 90, BattleAIScript_82DCE0B
score -1
BattleAIScript_82DCE0B:
- if_stat_level_more_than AI_TARGET, ATK, 3, BattleAIScript_82DCE1B
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 3, BattleAIScript_82DCE1B
if_random_less_than 50, BattleAIScript_82DCE1B
score -2
@@ -1166,7 +1166,7 @@ sTypesTable_82DCE43:
BattleAIScript_82DCE4A:
if_hp_less_than AI_USER, 70, BattleAIScript_82DCE59
- if_stat_level_more_than AI_TARGET, DEF, 3, BattleAIScript_82DCE61
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 3, BattleAIScript_82DCE61
BattleAIScript_82DCE59:
if_random_less_than 50, BattleAIScript_82DCE61
@@ -1198,13 +1198,13 @@ BattleAIScript_82DCE96:
end
BattleAIScript_82DCE97:
- if_stat_level_equal AI_TARGET, ATK, 6, BattleAIScript_82DCEBA
+ if_stat_level_equal AI_TARGET, STAT_ATK, 6, BattleAIScript_82DCEBA
score -1
if_hp_more_than AI_USER, 90, BattleAIScript_82DCEAA
score -1
BattleAIScript_82DCEAA:
- if_stat_level_more_than AI_TARGET, SPATK, 3, BattleAIScript_82DCEBA
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 3, BattleAIScript_82DCEBA
if_random_less_than 50, BattleAIScript_82DCEBA
score -2
@@ -1236,7 +1236,7 @@ sTypesTable_82DCEE2:
BattleAIScript_82DCEEB:
if_hp_less_than AI_USER, 70, BattleAIScript_82DCEFA
- if_stat_level_more_than AI_TARGET, SPDEF, 3, BattleAIScript_82DCF02
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 3, BattleAIScript_82DCF02
BattleAIScript_82DCEFA:
if_random_less_than 50, BattleAIScript_82DCF02
@@ -1258,12 +1258,12 @@ BattleAIScript_82DCF1A:
score -1
BattleAIScript_82DCF22:
- if_stat_level_more_than AI_USER, ACC, 4, BattleAIScript_82DCF32
+ if_stat_level_more_than AI_USER, STAT_ACC, 4, BattleAIScript_82DCF32
if_random_less_than 80, BattleAIScript_82DCF32
score -2
BattleAIScript_82DCF32:
- if_not_status AI_TARGET, STATUS_TOXIC_POISON, BattleAIScript_82DCF44
+ if_not_status AI_TARGET, STATUS1_TOXIC_POISON, BattleAIScript_82DCF44
if_random_less_than 70, BattleAIScript_82DCF44
score +2
@@ -1284,7 +1284,7 @@ BattleAIScript_82DCF68:
BattleAIScript_82DCF7A:
if_hp_more_than AI_USER, 70, BattleAIScript_82DCF9F
- if_stat_level_equal AI_TARGET, ACC, 6, BattleAIScript_82DCF9F
+ if_stat_level_equal AI_TARGET, STAT_ACC, 6, BattleAIScript_82DCF9F
if_hp_less_than AI_USER, 40, BattleAIScript_82DCF9D
if_hp_less_than AI_TARGET, 40, BattleAIScript_82DCF9D
if_random_less_than 70, BattleAIScript_82DCF9F
@@ -1297,7 +1297,7 @@ BattleAIScript_82DCF9F:
BattleAIScript_82DCFA0:
if_hp_less_than AI_USER, 70, BattleAIScript_82DCFAF
- if_stat_level_more_than AI_TARGET, EVASION, 3, BattleAIScript_82DCFB7
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 3, BattleAIScript_82DCFB7
BattleAIScript_82DCFAF:
if_random_less_than 50, BattleAIScript_82DCFB7
@@ -1311,16 +1311,16 @@ BattleAIScript_82DCFC0:
end
BattleAIScript_82DCFC1:
- if_stat_level_more_than AI_USER, ATK, 8, BattleAIScript_82DD016
- if_stat_level_more_than AI_USER, DEF, 8, BattleAIScript_82DD016
- if_stat_level_more_than AI_USER, SPATK, 8, BattleAIScript_82DD016
- if_stat_level_more_than AI_USER, SPDEF, 8, BattleAIScript_82DD016
- if_stat_level_more_than AI_USER, EVASION, 8, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, ATK, 4, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, DEF, 4, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, SPATK, 4, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, SPDEF, 4, BattleAIScript_82DD016
- if_stat_level_less_than AI_TARGET, ACC, 4, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_ATK, 8, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_DEF, 8, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_SPATK, 8, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 8, BattleAIScript_82DD016
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_ATK, 4, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_DEF, 4, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_SPATK, 4, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_SPDEF, 4, BattleAIScript_82DD016
+ if_stat_level_less_than AI_TARGET, STAT_ACC, 4, BattleAIScript_82DD016
goto BattleAIScript_82DD01E
BattleAIScript_82DD016:
@@ -1328,16 +1328,16 @@ BattleAIScript_82DD016:
score -3
BattleAIScript_82DD01E:
- if_stat_level_more_than AI_TARGET, ATK, 8, BattleAIScript_82DD07B
- if_stat_level_more_than AI_TARGET, DEF, 8, BattleAIScript_82DD07B
- if_stat_level_more_than AI_TARGET, SPATK, 8, BattleAIScript_82DD07B
- if_stat_level_more_than AI_TARGET, SPDEF, 8, BattleAIScript_82DD07B
- if_stat_level_more_than AI_TARGET, EVASION, 8, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, ATK, 4, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, DEF, 4, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, SPATK, 4, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, SPDEF, 4, BattleAIScript_82DD07B
- if_stat_level_less_than AI_USER, ACC, 4, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, BattleAIScript_82DD07B
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_ATK, 4, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_DEF, 4, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_SPATK, 4, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 4, BattleAIScript_82DD07B
+ if_stat_level_less_than AI_USER, STAT_ACC, 4, BattleAIScript_82DD07B
if_random_less_than 50, BattleAIScript_82DD083
score -1
goto BattleAIScript_82DD083
@@ -1357,11 +1357,11 @@ BattleAIScript_82DD08D:
end
BattleAIScript_82DD08E:
- if_stat_level_more_than AI_TARGET, ATK, 8, BattleAIScript_82DD0BD
- if_stat_level_more_than AI_TARGET, DEF, 8, BattleAIScript_82DD0BD
- if_stat_level_more_than AI_TARGET, SPATK, 8, BattleAIScript_82DD0BD
- if_stat_level_more_than AI_TARGET, SPDEF, 8, BattleAIScript_82DD0BD
- if_stat_level_more_than AI_TARGET, EVASION, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, BattleAIScript_82DD0BD
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, BattleAIScript_82DD0BD
score -3
goto BattleAIScript_82DD0C5
@@ -1520,7 +1520,7 @@ BattleAIScript_82DD228:
end
BattleAIScript_82DD229:
- if_status AI_TARGET, STATUS_TOXIC_POISON, BattleAIScript_82DD256
+ if_status AI_TARGET, STATUS1_TOXIC_POISON, BattleAIScript_82DD256
if_status2 AI_TARGET, STATUS2_CURSED, BattleAIScript_82DD256
if_status3 AI_TARGET, STATUS3_PERISH_SONG, BattleAIScript_82DD256
if_status2 AI_TARGET, STATUS2_INFATUATION, BattleAIScript_82DD256
@@ -1569,7 +1569,7 @@ BattleAIScript_82DD2B7:
end
BattleAIScript_82DD2B8:
- if_stat_level_more_than AI_TARGET, ATK, 3, BattleAIScript_82DD2D0
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 3, BattleAIScript_82DD2D0
score +3
get_turn_count
if_not_equal 0, BattleAIScript_82DD2D2
@@ -1673,7 +1673,7 @@ BattleAIScript_82DD381:
goto BattleAIScript_82DD3E9
BattleAIScript_82DD3B9:
- if_not_status AI_TARGET, STATUS_ANY, BattleAIScript_82DD3E1
+ if_not_status AI_TARGET, STATUS1_ANY, BattleAIScript_82DD3E1
goto BattleAIScript_82DD3E9
BattleAIScript_82DD3C8:
@@ -1722,7 +1722,7 @@ BattleAIScript_82DD430:
end
BattleAIScript_82DD431:
- if_status AI_TARGET, STATUS_SLEEP, BattleAIScript_82DD4D6
+ if_status AI_TARGET, STATUS1_SLEEP, BattleAIScript_82DD4D6
if_status2 AI_TARGET, STATUS2_INFATUATION, BattleAIScript_82DD4D6
if_status2 AI_TARGET, STATUS2_CONFUSION, BattleAIScript_82DD4D6
if_hp_more_than AI_USER, 30, BattleAIScript_82DD45E
@@ -1901,7 +1901,7 @@ BattleAIScript_82DD582:
end
BattleAIScript_82DD583:
- if_status AI_USER, STATUS_SLEEP, Score_Plus10
+ if_status AI_USER, STATUS1_SLEEP, Score_Plus10
score -5
end
@@ -1952,8 +1952,8 @@ BattleAIScript_82DD60A:
end
BattleAIScript_82DD60B:
- if_status AI_TARGET, STATUS_ANY, BattleAIScript_82DD621
- if_status_in_party AI_TARGET, STATUS_ANY, BattleAIScript_82DD621
+ if_status AI_TARGET, STATUS1_ANY, BattleAIScript_82DD621
+ if_status_in_party AI_TARGET, STATUS1_ANY, BattleAIScript_82DD621
score -5
BattleAIScript_82DD621:
@@ -1987,17 +1987,17 @@ BattleAIScript_82DD645:
if_equal TYPE_GHOST, BattleAIScript_82DD68A
get_user_type2
if_equal TYPE_GHOST, BattleAIScript_82DD68A
- if_stat_level_more_than AI_USER, DEF, 9, BattleAIScript_82DD693
+ if_stat_level_more_than AI_USER, STAT_DEF, 9, BattleAIScript_82DD693
if_random_less_than 128, BattleAIScript_82DD665
score +1
BattleAIScript_82DD665:
- if_stat_level_more_than AI_USER, DEF, 7, BattleAIScript_82DD693
+ if_stat_level_more_than AI_USER, STAT_DEF, 7, BattleAIScript_82DD693
if_random_less_than 128, BattleAIScript_82DD675
score +1
BattleAIScript_82DD675:
- if_stat_level_more_than AI_USER, DEF, 6, BattleAIScript_82DD693
+ if_stat_level_more_than AI_USER, STAT_DEF, 6, BattleAIScript_82DD693
if_random_less_than 128, BattleAIScript_82DD693
score +1
goto BattleAIScript_82DD693
@@ -2012,7 +2012,7 @@ BattleAIScript_82DD693:
BattleAIScript_82DD694:
get_protect_count AI_USER
if_more_than 1, BattleAIScript_82DD75A
- if_status AI_USER, STATUS_TOXIC_POISON, BattleAIScript_82DD751
+ if_status AI_USER, STATUS1_TOXIC_POISON, BattleAIScript_82DD751
if_status2 AI_USER, STATUS2_CURSED, BattleAIScript_82DD751
if_status3 AI_USER, STATUS3_PERISH_SONG, BattleAIScript_82DD751
if_status2 AI_USER, STATUS2_INFATUATION, BattleAIScript_82DD751
@@ -2020,7 +2020,7 @@ BattleAIScript_82DD694:
if_status3 AI_USER, STATUS3_YAWN, BattleAIScript_82DD751
if_has_move_with_effect AI_TARGET, EFFECT_RESTORE_HP, BattleAIScript_82DD751
if_has_move_with_effect AI_TARGET, EFFECT_DEFENSE_CURL, BattleAIScript_82DD751
- if_status AI_TARGET, STATUS_TOXIC_POISON, BattleAIScript_82DD730
+ if_status AI_TARGET, STATUS1_TOXIC_POISON, BattleAIScript_82DD730
if_status2 AI_TARGET, STATUS2_CURSED, BattleAIScript_82DD730
if_status3 AI_TARGET, STATUS3_PERISH_SONG, BattleAIScript_82DD730
if_status2 AI_TARGET, STATUS2_INFATUATION, BattleAIScript_82DD730
@@ -2062,7 +2062,7 @@ BattleAIScript_82DD75D:
if_equal TYPE_GHOST, BattleAIScript_82DD77C
get_user_type2
if_equal TYPE_GHOST, BattleAIScript_82DD77C
- if_stat_level_more_than AI_USER, EVASION, 8, BattleAIScript_82DD782
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, BattleAIScript_82DD782
score -2
goto BattleAIScript_82DD78A
@@ -2092,11 +2092,11 @@ BattleAIScript_82DD7A8:
end
BattleAIScript_82DD7A9:
- if_stat_level_more_than AI_USER, ATK, 8, BattleAIScript_82DD7D6
- if_stat_level_more_than AI_USER, DEF, 8, BattleAIScript_82DD7D6
- if_stat_level_more_than AI_USER, SPATK, 8, BattleAIScript_82DD7D6
- if_stat_level_more_than AI_USER, SPDEF, 8, BattleAIScript_82DD7D6
- if_stat_level_more_than AI_USER, EVASION, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_ATK, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_DEF, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_SPATK, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 8, BattleAIScript_82DD7D6
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, BattleAIScript_82DD7D6
goto BattleAIScript_82DD7FC
BattleAIScript_82DD7D6:
@@ -2113,11 +2113,11 @@ BattleAIScript_82DD7EF:
goto BattleAIScript_82DD844
BattleAIScript_82DD7FC:
- if_stat_level_more_than AI_USER, ATK, 7, BattleAIScript_82DD829
- if_stat_level_more_than AI_USER, DEF, 7, BattleAIScript_82DD829
- if_stat_level_more_than AI_USER, SPATK, 7, BattleAIScript_82DD829
- if_stat_level_more_than AI_USER, SPDEF, 7, BattleAIScript_82DD829
- if_stat_level_more_than AI_USER, EVASION, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_ATK, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_DEF, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_SPATK, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 7, BattleAIScript_82DD829
+ if_stat_level_more_than AI_USER, STAT_EVASION, 7, BattleAIScript_82DD829
goto BattleAIScript_82DD842
BattleAIScript_82DD829:
@@ -2208,19 +2208,19 @@ BattleAIScript_82DD8F1:
end
BattleAIScript_82DD8F2:
- if_stat_level_more_than AI_TARGET, ATK, 8, BattleAIScript_82DD91F
- if_stat_level_more_than AI_TARGET, DEF, 8, BattleAIScript_82DD91F
- if_stat_level_more_than AI_TARGET, SPATK, 8, BattleAIScript_82DD91F
- if_stat_level_more_than AI_TARGET, SPDEF, 8, BattleAIScript_82DD91F
- if_stat_level_more_than AI_TARGET, EVASION, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, BattleAIScript_82DD91F
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, BattleAIScript_82DD91F
goto BattleAIScript_82DD957
BattleAIScript_82DD91F:
- if_stat_level_less_than AI_USER, ATK, 7, BattleAIScript_82DD954
- if_stat_level_less_than AI_USER, DEF, 7, BattleAIScript_82DD954
- if_stat_level_less_than AI_USER, SPATK, 7, BattleAIScript_82DD954
- if_stat_level_less_than AI_USER, SPDEF, 7, BattleAIScript_82DD954
- if_stat_level_less_than AI_USER, EVASION, 7, BattleAIScript_82DD952
+ if_stat_level_less_than AI_USER, STAT_ATK, 7, BattleAIScript_82DD954
+ if_stat_level_less_than AI_USER, STAT_DEF, 7, BattleAIScript_82DD954
+ if_stat_level_less_than AI_USER, STAT_SPATK, 7, BattleAIScript_82DD954
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 7, BattleAIScript_82DD954
+ if_stat_level_less_than AI_USER, STAT_EVASION, 7, BattleAIScript_82DD952
if_random_less_than 50, BattleAIScript_82DD959
goto BattleAIScript_82DD957
@@ -2238,7 +2238,7 @@ BattleAIScript_82DD959:
end
BattleAIScript_82DD95A:
- if_status AI_TARGET, STATUS_SLEEP, BattleAIScript_82DD9FF
+ if_status AI_TARGET, STATUS1_SLEEP, BattleAIScript_82DD9FF
if_status2 AI_TARGET, STATUS2_INFATUATION, BattleAIScript_82DD9FF
if_status2 AI_TARGET, STATUS2_CONFUSION, BattleAIScript_82DD9FF
if_hp_more_than AI_USER, 30, BattleAIScript_82DD987
@@ -2323,7 +2323,7 @@ BattleAIScript_82DDA2F:
goto BattleAIScript_82DDAB4
BattleAIScript_82DDA3D:
- if_status AI_TARGET, STATUS_TOXIC_POISON, BattleAIScript_82DDAAC
+ if_status AI_TARGET, STATUS1_TOXIC_POISON, BattleAIScript_82DDAAC
if_status2 AI_TARGET, STATUS2_CURSED, BattleAIScript_82DDAAC
if_status3 AI_TARGET, STATUS3_LEECHSEED, BattleAIScript_82DDAAC
get_weather
@@ -2396,7 +2396,7 @@ BattleAIScript_82DDAF5:
end
BattleAIScript_82DDAF6:
- if_not_status AI_TARGET, STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON, BattleAIScript_82DDB02
+ if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, BattleAIScript_82DDB02
score +1
BattleAIScript_82DDB02:
@@ -2405,7 +2405,7 @@ BattleAIScript_82DDB02:
BattleAIScript_82DDB03:
if_type_effectiveness AI_EFFECTIVENESS_x0_25, BattleAIScript_82DDB42
if_type_effectiveness AI_EFFECTIVENESS_x0_5, BattleAIScript_82DDB42
- if_status AI_TARGET, STATUS_SLEEP, BattleAIScript_82DDB59
+ if_status AI_TARGET, STATUS1_SLEEP, BattleAIScript_82DDB59
if_status2 AI_TARGET, STATUS2_INFATUATION, BattleAIScript_82DDB49
if_status2 AI_TARGET, STATUS2_CONFUSION, BattleAIScript_82DDB49
is_first_turn_for AI_USER
@@ -2429,7 +2429,7 @@ BattleAIScript_82DDB5B:
end
BattleAIScript_82DDB5C:
- if_status AI_TARGET, STATUS_PARALYSIS, BattleAIScript_82DDB6B
+ if_status AI_TARGET, STATUS1_PARALYSIS, BattleAIScript_82DDB6B
goto BattleAIScript_82DDB6D
BattleAIScript_82DDB6B:
@@ -2515,7 +2515,7 @@ sAbilitiesTable_82DDBDF:
BattleAIScript_82DDBF0:
if_type_effectiveness AI_EFFECTIVENESS_x0_25, BattleAIScript_82DDC1D
if_type_effectiveness AI_EFFECTIVENESS_x0_5, BattleAIScript_82DDC1D
- if_stat_level_less_than AI_USER, ATK, 6, BattleAIScript_82DDC1D
+ if_stat_level_less_than AI_USER, STAT_ATK, 6, BattleAIScript_82DDC1D
if_target_faster BattleAIScript_82DDC16
if_hp_more_than AI_USER, 40, BattleAIScript_82DDC1D
goto BattleAIScript_82DDC1F
@@ -2571,7 +2571,7 @@ sItemsTable_82DDC6E:
.byte -1
BattleAIScript_82DDC72:
- if_status AI_TARGET, STATUS_SLEEP, BattleAIScript_82DDC9D
+ if_status AI_TARGET, STATUS1_SLEEP, BattleAIScript_82DDC9D
if_status2 AI_TARGET, STATUS2_INFATUATION, BattleAIScript_82DDC9D
if_status2 AI_TARGET, STATUS2_CONFUSION, BattleAIScript_82DDC9D
if_random_less_than 180, BattleAIScript_82DDC9D
@@ -2930,12 +2930,12 @@ sMovesTable_82DDF75:
BattleAIScript_82DDF7B:
get_turn_count
if_equal 0, Score_Minus2
- if_stat_level_more_than AI_USER, ATK, 8, Score_Plus3
- if_stat_level_more_than AI_USER, ATK, 7, Score_Plus2
- if_stat_level_more_than AI_USER, ATK, 6, Score_Plus1
- if_stat_level_more_than AI_USER, SPATK, 8, Score_Plus3
- if_stat_level_more_than AI_USER, SPATK, 7, Score_Plus2
- if_stat_level_more_than AI_USER, SPATK, 6, Score_Plus1
+ if_stat_level_more_than AI_USER, STAT_ATK, 8, Score_Plus3
+ if_stat_level_more_than AI_USER, STAT_ATK, 7, Score_Plus2
+ if_stat_level_more_than AI_USER, STAT_ATK, 6, Score_Plus1
+ if_stat_level_more_than AI_USER, STAT_SPATK, 8, Score_Plus3
+ if_stat_level_more_than AI_USER, STAT_SPATK, 7, Score_Plus2
+ if_stat_level_more_than AI_USER, STAT_SPATK, 6, Score_Plus1
end
BattleAIScript_82DDFB3:
@@ -2960,7 +2960,7 @@ BattleAIScript_82DDFED:
end
BattleAIScript_82DDFF5:
- if_status AI_USER, STATUS_ANY, BattleAIScript_82DE000
+ if_status AI_USER, STATUS1_ANY, BattleAIScript_82DE000
end
BattleAIScript_82DE000:
@@ -3060,7 +3060,7 @@ BattleAIScript_82DE14A:
BattleAIScript_82DE14F:
get_ability AI_TARGET
if_not_equal ABILITY_GUTS, Score_Minus30_
- if_status AI_TARGET, STATUS_ANY, Score_Minus30_
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus30_
if_hp_less_than AI_USER, 91, Score_Minus30_
goto Score_Plus5
@@ -3073,7 +3073,7 @@ BattleAIScript_82DE178:
goto Score_Minus30_
BattleAIScript_82DE185:
- if_stat_level_more_than AI_TARGET, ATK, 7, BattleAIScript_82DE18F
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 7, BattleAIScript_82DE18F
score +3
BattleAIScript_82DE18F:
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 878b48ccb..727a62f3d 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -1,7 +1,7 @@
+#include "constants/battle_anim.h"
#include "constants/rgb.h"
#include "constants/songs.h"
.include "asm/macros/battle_anim_script.inc"
- .include "include/constants/battle_anim.h"
.section script_data, "aw", %progbits
diff --git a/data/battle_frontier/battle_frontier_trainers.inc b/data/battle_frontier/battle_frontier_trainers.inc
index fc97ffe89..1fe938099 100644
--- a/data/battle_frontier/battle_frontier_trainers.inc
+++ b/data/battle_frontier/battle_frontier_trainers.inc
@@ -1,7 +1,7 @@
.align 2
gBattleFrontierTrainers:: @ 85D5ACC
@ 0
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "BRADY$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -27,7 +27,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Brady
@ 1
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "CONNER$", 8
@ pre-battle speech
.2byte EC_WORD_LOSING
@@ -53,7 +53,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Conner
@ 2
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "BRADLEY$", 8
@ pre-battle speech
.2byte EC_WORD_HEY_THERE
@@ -79,7 +79,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Bradley
@ 3
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "CYBIL$", 8
@ pre-battle speech
.2byte EC_WORD_YOU_RE
@@ -105,7 +105,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Cybil
@ 4
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "RODETTE$", 8
@ pre-battle speech
.2byte EC_WORD_OH
@@ -131,7 +131,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Rodette
@ 5
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "PEGGY$", 8
@ pre-battle speech
.2byte EC_WORD_GET
@@ -157,7 +157,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Peggy
@ 6
- .4byte TRAINER_CLASS_SCHOOL_KID_1
+ .4byte FACILITY_CLASS_SCHOOL_KID_1
.string "KEITH$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -183,7 +183,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Keith
@ 7
- .4byte TRAINER_CLASS_SCHOOL_KID_1
+ .4byte FACILITY_CLASS_SCHOOL_KID_1
.string "GRAYSON$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -209,7 +209,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Grayson
@ 8
- .4byte TRAINER_CLASS_SCHOOL_KID_1
+ .4byte FACILITY_CLASS_SCHOOL_KID_1
.string "GLENN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -235,7 +235,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Glenn
@ 9
- .4byte TRAINER_CLASS_SCHOOL_KID_2
+ .4byte FACILITY_CLASS_SCHOOL_KID_2
.string "LILIANA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -261,7 +261,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Liliana
@ 10
- .4byte TRAINER_CLASS_SCHOOL_KID_2
+ .4byte FACILITY_CLASS_SCHOOL_KID_2
.string "ELISE$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -287,7 +287,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Elise
@ 11
- .4byte TRAINER_CLASS_SCHOOL_KID_2
+ .4byte FACILITY_CLASS_SCHOOL_KID_2
.string "ZOEY$", 8
@ pre-battle speech
.2byte EC_WORD_PLEASE
@@ -313,7 +313,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Zoey
@ 12
- .4byte TRAINER_CLASS_RICH_BOY
+ .4byte FACILITY_CLASS_RICH_BOY
.string "MANUEL$", 8
@ pre-battle speech
.2byte EC_WORD_ME
@@ -339,7 +339,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Manuel
@ 13
- .4byte TRAINER_CLASS_RICH_BOY
+ .4byte FACILITY_CLASS_RICH_BOY
.string "RUSS$", 8
@ pre-battle speech
.2byte EC_WORD_THEY
@@ -365,7 +365,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Russ
@ 14
- .4byte TRAINER_CLASS_RICH_BOY
+ .4byte FACILITY_CLASS_RICH_BOY
.string "DUSTIN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -391,7 +391,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dustin
@ 15
- .4byte TRAINER_CLASS_LADY
+ .4byte FACILITY_CLASS_LADY
.string "TINA$", 8
@ pre-battle speech
.2byte EC_WORD_IF_I_WIN
@@ -417,7 +417,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Tina
@ 16
- .4byte TRAINER_CLASS_LADY
+ .4byte FACILITY_CLASS_LADY
.string "GILLIAN$", 8
@ pre-battle speech
.2byte EC_WORD_THE
@@ -443,7 +443,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gillian
@ 17
- .4byte TRAINER_CLASS_LADY
+ .4byte FACILITY_CLASS_LADY
.string "ZOE$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -469,7 +469,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Zoe
@ 18
- .4byte TRAINER_CLASS_CAMPER
+ .4byte FACILITY_CLASS_CAMPER
.string "CHEN$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -495,7 +495,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Chen
@ 19
- .4byte TRAINER_CLASS_CAMPER
+ .4byte FACILITY_CLASS_CAMPER
.string "AL$", 8
@ pre-battle speech
.2byte EC_WORD_YOUR
@@ -521,7 +521,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Al
@ 20
- .4byte TRAINER_CLASS_CAMPER
+ .4byte FACILITY_CLASS_CAMPER
.string "MITCH$", 8
@ pre-battle speech
.2byte EC_WORD_MOTHER
@@ -547,7 +547,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Mitch
@ 21
- .4byte TRAINER_CLASS_PICNICKER
+ .4byte FACILITY_CLASS_PICNICKER
.string "ANNE$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -573,7 +573,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Anne
@ 22
- .4byte TRAINER_CLASS_PICNICKER
+ .4byte FACILITY_CLASS_PICNICKER
.string "ALIZE$", 8
@ pre-battle speech
.2byte EC_WORD_CUTE
@@ -599,7 +599,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Alize
@ 23
- .4byte TRAINER_CLASS_PICNICKER
+ .4byte FACILITY_CLASS_PICNICKER
.string "LAUREN$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -625,7 +625,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Lauren
@ 24
- .4byte TRAINER_CLASS_TUBER_2
+ .4byte FACILITY_CLASS_TUBER_2
.string "KIPP$", 8
@ pre-battle speech
.2byte EC_WORD_IF_I_WIN
@@ -651,7 +651,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kipp
@ 25
- .4byte TRAINER_CLASS_TUBER_2
+ .4byte FACILITY_CLASS_TUBER_2
.string "JASON$", 8
@ pre-battle speech
.2byte EC_WORD_TEACH
@@ -677,7 +677,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jason
@ 26
- .4byte TRAINER_CLASS_TUBER_2
+ .4byte FACILITY_CLASS_TUBER_2
.string "JOHN$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -703,7 +703,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_John
@ 27
- .4byte TRAINER_CLASS_TUBER_1
+ .4byte FACILITY_CLASS_TUBER_1
.string "ANN$", 8
@ pre-battle speech
.2byte EC_WORD_IT_S
@@ -729,7 +729,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ann
@ 28
- .4byte TRAINER_CLASS_TUBER_1
+ .4byte FACILITY_CLASS_TUBER_1
.string "EILEEN$", 8
@ pre-battle speech
.2byte EC_WORD_LET_S
@@ -755,7 +755,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Eileen
@ 29
- .4byte TRAINER_CLASS_TUBER_1
+ .4byte FACILITY_CLASS_TUBER_1
.string "CARLIE$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -781,7 +781,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Carlie
@ 30
- .4byte TRAINER_CLASS_SWIMMER_M
+ .4byte FACILITY_CLASS_SWIMMER_M
.string "GORDON$", 8
@ pre-battle speech
.2byte EC_WORD_VICTORY
@@ -807,7 +807,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gordon
@ 31
- .4byte TRAINER_CLASS_SWIMMER_M
+ .4byte FACILITY_CLASS_SWIMMER_M
.string "AYDEN$", 8
@ pre-battle speech
.2byte EC_WORD_COME_ON
@@ -833,7 +833,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ayden
@ 32
- .4byte TRAINER_CLASS_SWIMMER_M
+ .4byte FACILITY_CLASS_SWIMMER_M
.string "MARCO$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -859,7 +859,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Marco
@ 33
- .4byte TRAINER_CLASS_SWIMMER_F
+ .4byte FACILITY_CLASS_SWIMMER_F
.string "CIERRA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -885,7 +885,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Cierra
@ 34
- .4byte TRAINER_CLASS_SWIMMER_F
+ .4byte FACILITY_CLASS_SWIMMER_F
.string "MARCY$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -911,7 +911,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Marcy
@ 35
- .4byte TRAINER_CLASS_SWIMMER_F
+ .4byte FACILITY_CLASS_SWIMMER_F
.string "KATHY$", 8
@ pre-battle speech
.2byte EC_WORD_I_VE
@@ -937,7 +937,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kathy
@ 36
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "PEYTON$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -963,7 +963,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Peyton
@ 37
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "JULIAN$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -989,7 +989,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Julian
@ 38
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "QUINN$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -1015,7 +1015,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Quinn
@ 39
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "HAYLEE$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1041,7 +1041,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Haylee
@ 40
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "AMANDA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1067,7 +1067,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Amanda
@ 41
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "STACY$", 8
@ pre-battle speech
.2byte EC_WORD_ALL
@@ -1093,7 +1093,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Stacy
@ 42
- .4byte TRAINER_CLASS_PKMN_BREEDER_2
+ .4byte FACILITY_CLASS_PKMN_BREEDER_2
.string "RAFAEL$", 8
@ pre-battle speech
.2byte EC_WORD_COME_ON
@@ -1119,7 +1119,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Rafael
@ 43
- .4byte TRAINER_CLASS_PKMN_BREEDER_2
+ .4byte FACILITY_CLASS_PKMN_BREEDER_2
.string "OLIVER$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -1145,7 +1145,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Oliver
@ 44
- .4byte TRAINER_CLASS_PKMN_BREEDER_2
+ .4byte FACILITY_CLASS_PKMN_BREEDER_2
.string "PAYTON$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1171,7 +1171,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Payton
@ 45
- .4byte TRAINER_CLASS_PKMN_BREEDER_1
+ .4byte FACILITY_CLASS_PKMN_BREEDER_1
.string "PAMELA$", 8
@ pre-battle speech
.2byte EC_WORD_ALL
@@ -1197,7 +1197,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Pamela
@ 46
- .4byte TRAINER_CLASS_PKMN_BREEDER_1
+ .4byte FACILITY_CLASS_PKMN_BREEDER_1
.string "ELIZA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1223,7 +1223,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Eliza
@ 47
- .4byte TRAINER_CLASS_PKMN_BREEDER_1
+ .4byte FACILITY_CLASS_PKMN_BREEDER_1
.string "MARISA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1249,7 +1249,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Marisa
@ 48
- .4byte TRAINER_CLASS_BUG_CATCHER
+ .4byte FACILITY_CLASS_BUG_CATCHER
.string "LEWIS$", 8
@ pre-battle speech
.2byte EC_WORD_A_LITTLE
@@ -1275,7 +1275,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Lewis
@ 49
- .4byte TRAINER_CLASS_BUG_CATCHER
+ .4byte FACILITY_CLASS_BUG_CATCHER
.string "YOSHI$", 8
@ pre-battle speech
.2byte EC_WORD_BUG
@@ -1301,7 +1301,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Yoshi
@ 50
- .4byte TRAINER_CLASS_BUG_CATCHER
+ .4byte FACILITY_CLASS_BUG_CATCHER
.string "DESTIN$", 8
@ pre-battle speech
.2byte EC_WORD_IT_S
@@ -1327,7 +1327,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Destin
@ 51
- .4byte TRAINER_CLASS_NINJA_BOY
+ .4byte FACILITY_CLASS_NINJA_BOY
.string "KEON$", 8
@ pre-battle speech
.2byte EC_WORD_FORGIVE
@@ -1353,7 +1353,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Keon
@ 52
- .4byte TRAINER_CLASS_NINJA_BOY
+ .4byte FACILITY_CLASS_NINJA_BOY
.string "STUART$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1379,7 +1379,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Stuart
@ 53
- .4byte TRAINER_CLASS_NINJA_BOY
+ .4byte FACILITY_CLASS_NINJA_BOY
.string "NESTOR$", 8
@ pre-battle speech
.2byte EC_WORD_SHOW
@@ -1405,7 +1405,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Nestor
@ 54
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "DERRICK$", 8
@ pre-battle speech
.2byte EC_WORD_LET_S
@@ -1431,7 +1431,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Derrick
@ 55
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "BRYSON$", 8
@ pre-battle speech
.2byte EC_MOVE2(POISON_POWDER)
@@ -1457,7 +1457,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Bryson
@ 56
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "CLAYTON$", 8
@ pre-battle speech
.2byte EC_WORD_HUH_QUES
@@ -1483,7 +1483,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Clayton
@ 57
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "TRENTON$", 8
@ pre-battle speech
.2byte EC_WORD_COME_OVER
@@ -1509,7 +1509,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Trenton
@ 58
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "JENSON$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -1535,7 +1535,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jenson
@ 59
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "WESLEY$", 8
@ pre-battle speech
.2byte EC_POKEMON2(MEW)
@@ -1561,7 +1561,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Wesley
@ 60
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "ANTON$", 8
@ pre-battle speech
.2byte EC_WORD_GET
@@ -1587,7 +1587,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Anton
@ 61
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "LAWSON$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -1613,7 +1613,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Lawson
@ 62
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "SAMMY$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -1639,7 +1639,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Sammy
@ 63
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "ARNIE$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -1665,7 +1665,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Arnie
@ 64
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "ADRIAN$", 8
@ pre-battle speech
.2byte EC_WORD_YAHOO
@@ -1691,7 +1691,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Adrian
@ 65
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "TRISTAN$", 8
@ pre-battle speech
.2byte EC_WORD_CONFUSED
@@ -1717,7 +1717,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Tristan
@ 66
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "JULIANA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1743,7 +1743,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Juliana
@ 67
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "RYLEE$", 8
@ pre-battle speech
.2byte EC_WORD_SHOW
@@ -1769,7 +1769,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Rylee
@ 68
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "CHELSEA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1795,7 +1795,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Chelsea
@ 69
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "DANELA$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -1821,7 +1821,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Danela
@ 70
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "LIZBETH$", 8
@ pre-battle speech
.2byte EC_WORD_IF_I_LOSE
@@ -1847,7 +1847,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Lizbeth
@ 71
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "AMELIA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1873,7 +1873,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Amelia
@ 72
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "JILLIAN$", 8
@ pre-battle speech
.2byte EC_WORD_WHAT
@@ -1899,7 +1899,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jillian
@ 73
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "ABBIE$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -1925,7 +1925,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Abbie
@ 74
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "BRIANA$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -1951,7 +1951,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Briana
@ 75
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "ANTONIO$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -1977,7 +1977,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Antonio
@ 76
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "JADEN$", 8
@ pre-battle speech
.2byte EC_WORD_HELLO
@@ -2003,7 +2003,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jaden
@ 77
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "DAKOTA$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -2029,7 +2029,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dakota
@ 78
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "BRAYDEN$", 8
@ pre-battle speech
.2byte EC_WORD_COLOR_CHANGE
@@ -2055,7 +2055,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Brayden
@ 79
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "CORSON$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -2081,7 +2081,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Corson
@ 80
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "TREVIN$", 8
@ pre-battle speech
.2byte EC_WORD_THERE
@@ -2107,7 +2107,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Trevin
@ 81
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "PATRICK$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -2133,7 +2133,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Patrick
@ 82
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "KADEN$", 8
@ pre-battle speech
.2byte EC_WORD_WHAT
@@ -2159,7 +2159,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kaden
@ 83
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "MAXWELL$", 8
@ pre-battle speech
.2byte EC_WORD_HEY_THERE
@@ -2185,7 +2185,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Maxwell
@ 84
- .4byte TRAINER_CLASS_HIKER
+ .4byte FACILITY_CLASS_HIKER
.string "DARYL$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -2211,7 +2211,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Daryl
@ 85
- .4byte TRAINER_CLASS_HIKER
+ .4byte FACILITY_CLASS_HIKER
.string "KENNETH$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -2237,7 +2237,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kenneth
@ 86
- .4byte TRAINER_CLASS_HIKER
+ .4byte FACILITY_CLASS_HIKER
.string "RICH$", 8
@ pre-battle speech
.2byte EC_WORD_YOUR
@@ -2263,7 +2263,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Rich
@ 87
- .4byte TRAINER_CLASS_KINDLER
+ .4byte FACILITY_CLASS_KINDLER
.string "CADEN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -2289,7 +2289,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Caden
@ 88
- .4byte TRAINER_CLASS_KINDLER
+ .4byte FACILITY_CLASS_KINDLER
.string "MARLON$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -2315,7 +2315,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Marlon
@ 89
- .4byte TRAINER_CLASS_KINDLER
+ .4byte FACILITY_CLASS_KINDLER
.string "NASH$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -2341,7 +2341,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Nash
@ 90
- .4byte TRAINER_CLASS_TRIATHLETE_3
+ .4byte FACILITY_CLASS_TRIATHLETE_3
.string "ROBBY$", 8
@ pre-battle speech
.2byte EC_WORD_HAHAHA
@@ -2367,7 +2367,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Robby
@ 91
- .4byte TRAINER_CLASS_TRIATHLETE_3
+ .4byte FACILITY_CLASS_TRIATHLETE_3
.string "REECE$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -2393,7 +2393,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Reece
@ 92
- .4byte TRAINER_CLASS_TRIATHLETE_4
+ .4byte FACILITY_CLASS_TRIATHLETE_4
.string "KATHRYN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -2419,7 +2419,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kathryn
@ 93
- .4byte TRAINER_CLASS_TRIATHLETE_4
+ .4byte FACILITY_CLASS_TRIATHLETE_4
.string "ELLEN$", 8
@ pre-battle speech
.2byte EC_WORD_CRUSH
@@ -2445,7 +2445,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ellen
@ 94
- .4byte TRAINER_CLASS_TRIATHLETE_5
+ .4byte FACILITY_CLASS_TRIATHLETE_5
.string "RAMON$", 8
@ pre-battle speech
.2byte EC_WORD_OKAY
@@ -2471,7 +2471,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ramon
@ 95
- .4byte TRAINER_CLASS_TRIATHLETE_5
+ .4byte FACILITY_CLASS_TRIATHLETE_5
.string "ARTHUR$", 8
@ pre-battle speech
.2byte EC_WORD_HERE_I_COME
@@ -2497,7 +2497,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Arthur
@ 96
- .4byte TRAINER_CLASS_TRIATHLETE_6
+ .4byte FACILITY_CLASS_TRIATHLETE_6
.string "ALONDRA$", 8
@ pre-battle speech
.2byte EC_WORD_EVERY
@@ -2523,7 +2523,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Alondra
@ 97
- .4byte TRAINER_CLASS_TRIATHLETE_6
+ .4byte FACILITY_CLASS_TRIATHLETE_6
.string "ADRIANA$", 8
@ pre-battle speech
.2byte EC_WORD_COME
@@ -2549,7 +2549,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Adriana
@ 98
- .4byte TRAINER_CLASS_TRIATHLETE_1
+ .4byte FACILITY_CLASS_TRIATHLETE_1
.string "MALIK$", 8
@ pre-battle speech
.2byte EC_WORD_OH
@@ -2575,7 +2575,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Malik
@ 99
- .4byte TRAINER_CLASS_TRIATHLETE_2
+ .4byte FACILITY_CLASS_TRIATHLETE_2
.string "JILL$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -2601,7 +2601,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jill
@ 100
- .4byte TRAINER_CLASS_TRIATHLETE_3
+ .4byte FACILITY_CLASS_TRIATHLETE_3
.string "ERIK$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -2627,7 +2627,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Erik
@ 101
- .4byte TRAINER_CLASS_TRIATHLETE_4
+ .4byte FACILITY_CLASS_TRIATHLETE_4
.string "YAZMIN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -2653,7 +2653,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Yazmin
@ 102
- .4byte TRAINER_CLASS_TRIATHLETE_5
+ .4byte FACILITY_CLASS_TRIATHLETE_5
.string "JAMAL$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -2679,7 +2679,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jamal
@ 103
- .4byte TRAINER_CLASS_TRIATHLETE_6
+ .4byte FACILITY_CLASS_TRIATHLETE_6
.string "LESLIE$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -2705,7 +2705,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Leslie
@ 104
- .4byte TRAINER_CLASS_TRIATHLETE_1
+ .4byte FACILITY_CLASS_TRIATHLETE_1
.string "DAVE$", 8
@ pre-battle speech
.2byte EC_WORD_WHAT
@@ -2731,7 +2731,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dave
@ 105
- .4byte TRAINER_CLASS_TRIATHLETE_1
+ .4byte FACILITY_CLASS_TRIATHLETE_1
.string "CARLO$", 8
@ pre-battle speech
.2byte EC_WORD_HAH
@@ -2757,7 +2757,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Carlo
@ 106
- .4byte TRAINER_CLASS_TRIATHLETE_2
+ .4byte FACILITY_CLASS_TRIATHLETE_2
.string "EMILIA$", 8
@ pre-battle speech
.2byte EC_WORD_ME
@@ -2783,7 +2783,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Emilia
@ 107
- .4byte TRAINER_CLASS_TRIATHLETE_2
+ .4byte FACILITY_CLASS_TRIATHLETE_2
.string "DALIA$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -2809,7 +2809,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dalia
@ 108
- .4byte TRAINER_CLASS_BLACK_BELT
+ .4byte FACILITY_CLASS_BLACK_BELT
.string "HITOMI$", 8
@ pre-battle speech
.2byte EC_WORD_YEAH
@@ -2835,7 +2835,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Hitomi
@ 109
- .4byte TRAINER_CLASS_BLACK_BELT
+ .4byte FACILITY_CLASS_BLACK_BELT
.string "RICARDO$", 8
@ pre-battle speech
.2byte EC_WORD_COME_ON
@@ -2861,7 +2861,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ricardo
@ 110
- .4byte TRAINER_CLASS_BLACK_BELT
+ .4byte FACILITY_CLASS_BLACK_BELT
.string "SHIZUKA$", 8
@ pre-battle speech
.2byte EC_WORD_SHOW
@@ -2887,7 +2887,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Shizuka
@ 111
- .4byte TRAINER_CLASS_BATTLE_GIRL
+ .4byte FACILITY_CLASS_BATTLE_GIRL
.string "JOANA$", 8
@ pre-battle speech
.2byte EC_WORD_YOU_RE
@@ -2913,7 +2913,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Joana
@ 112
- .4byte TRAINER_CLASS_BATTLE_GIRL
+ .4byte FACILITY_CLASS_BATTLE_GIRL
.string "KELLY$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -2939,7 +2939,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kelly
@ 113
- .4byte TRAINER_CLASS_BATTLE_GIRL
+ .4byte FACILITY_CLASS_BATTLE_GIRL
.string "RAYNA$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -2965,7 +2965,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Rayna
@ 114
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "EVAN$", 8
@ pre-battle speech
.2byte EC_WORD_EVERY
@@ -2991,7 +2991,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Evan
@ 115
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "JORDAN$", 8
@ pre-battle speech
.2byte EC_WORD_GOOD
@@ -3017,7 +3017,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jordan
@ 116
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "JOEL$", 8
@ pre-battle speech
.2byte EC_WORD_FUFUFU
@@ -3043,7 +3043,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Joel
@ 117
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "KRISTEN$", 8
@ pre-battle speech
.2byte EC_WORD_HAHAHA
@@ -3069,7 +3069,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kristen
@ 118
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "SELPHY$", 8
@ pre-battle speech
.2byte EC_WORD_HUH_QUES
@@ -3095,7 +3095,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Selphy
@ 119
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "CHLOE$", 8
@ pre-battle speech
.2byte EC_WORD_COME
@@ -3121,7 +3121,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Chloe
@ 120
- .4byte TRAINER_CLASS_PSYCHIC_1
+ .4byte FACILITY_CLASS_PSYCHIC_1
.string "NORTON$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3147,7 +3147,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Norton
@ 121
- .4byte TRAINER_CLASS_PSYCHIC_1
+ .4byte FACILITY_CLASS_PSYCHIC_1
.string "LUKAS$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -3173,7 +3173,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Lukas
@ 122
- .4byte TRAINER_CLASS_PSYCHIC_1
+ .4byte FACILITY_CLASS_PSYCHIC_1
.string "ZACH$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -3199,7 +3199,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Zach
@ 123
- .4byte TRAINER_CLASS_PSYCHIC_2
+ .4byte FACILITY_CLASS_PSYCHIC_2
.string "KAITLYN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3225,7 +3225,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kaitlyn
@ 124
- .4byte TRAINER_CLASS_PSYCHIC_2
+ .4byte FACILITY_CLASS_PSYCHIC_2
.string "BREANNA$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -3251,7 +3251,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Breanna
@ 125
- .4byte TRAINER_CLASS_PSYCHIC_2
+ .4byte FACILITY_CLASS_PSYCHIC_2
.string "KENDRA$", 8
@ pre-battle speech
.2byte EC_WORD_IF
@@ -3277,7 +3277,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kendra
@ 126
- .4byte TRAINER_CLASS_HEX_MANIAC
+ .4byte FACILITY_CLASS_HEX_MANIAC
.string "MOLLY$", 8
@ pre-battle speech
.2byte EC_WORD_WILL
@@ -3303,7 +3303,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Molly
@ 127
- .4byte TRAINER_CLASS_HEX_MANIAC
+ .4byte FACILITY_CLASS_HEX_MANIAC
.string "JAZMIN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3329,7 +3329,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jazmin
@ 128
- .4byte TRAINER_CLASS_HEX_MANIAC
+ .4byte FACILITY_CLASS_HEX_MANIAC
.string "KELSEY$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3355,7 +3355,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kelsey
@ 129
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "JALEN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3381,7 +3381,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jalen
@ 130
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "GRIFFEN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3407,7 +3407,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Griffen
@ 131
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "XANDER$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3433,7 +3433,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Xander
@ 132
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "MARVIN$", 8
@ pre-battle speech
.2byte EC_WORD_YOU_RE
@@ -3459,7 +3459,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Marvin
@ 133
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "BRENNAN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3485,7 +3485,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Brennan
@ 134
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "BALEY$", 8
@ pre-battle speech
.2byte EC_MOVE(SCREECH)
@@ -3511,7 +3511,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Baley
@ 135
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "ZACKARY$", 8
@ pre-battle speech
.2byte EC_WORD_CAN
@@ -3537,7 +3537,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Zackary
@ 136
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "GABRIEL$", 8
@ pre-battle speech
.2byte EC_MOVE2(POUND)
@@ -3563,7 +3563,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gabriel
@ 137
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "EMILY$", 8
@ pre-battle speech
.2byte EC_WORD_HOW
@@ -3589,7 +3589,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Emily
@ 138
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "JORDYN$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -3615,7 +3615,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jordyn
@ 139
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "SOFIA$", 8
@ pre-battle speech
.2byte EC_POKEMON(LOUDRED)
@@ -3641,7 +3641,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Sofia
@ 140
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "BRADEN$", 8
@ pre-battle speech
.2byte EC_WORD_I_CHOOSE_YOU
@@ -3667,7 +3667,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Braden
@ 141
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "KAYDEN$", 8
@ pre-battle speech
.2byte EC_WORD_THEY
@@ -3693,7 +3693,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kayden
@ 142
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "COOPER$", 8
@ pre-battle speech
.2byte EC_WORD_THIS
@@ -3719,7 +3719,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Cooper
@ 143
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "JULIA$", 8
@ pre-battle speech
.2byte EC_WORD_SPIRIT
@@ -3745,7 +3745,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Julia
@ 144
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "AMARA$", 8
@ pre-battle speech
.2byte EC_WORD_WROOOAAR_EXCL
@@ -3771,7 +3771,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Amara
@ 145
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "LYNN$", 8
@ pre-battle speech
.2byte EC_WORD_YOUR
@@ -3797,7 +3797,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Lynn
@ 146
- .4byte TRAINER_CLASS_PKMN_RANGER_1
+ .4byte FACILITY_CLASS_PKMN_RANGER_1
.string "JOVAN$", 8
@ pre-battle speech
.2byte EC_WORD_YOUR
@@ -3823,7 +3823,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jovan
@ 147
- .4byte TRAINER_CLASS_PKMN_RANGER_1
+ .4byte FACILITY_CLASS_PKMN_RANGER_1
.string "DOMINIC$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3849,7 +3849,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dominic
@ 148
- .4byte TRAINER_CLASS_PKMN_RANGER_1
+ .4byte FACILITY_CLASS_PKMN_RANGER_1
.string "NIKOLAS$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3875,7 +3875,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Nikolas
@ 149
- .4byte TRAINER_CLASS_PKMN_RANGER_2
+ .4byte FACILITY_CLASS_PKMN_RANGER_2
.string "VALERIA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -3901,7 +3901,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Valeria
@ 150
- .4byte TRAINER_CLASS_PKMN_RANGER_2
+ .4byte FACILITY_CLASS_PKMN_RANGER_2
.string "DELANEY$", 8
@ pre-battle speech
.2byte EC_WORD_SCHOOL
@@ -3927,7 +3927,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Delaney
@ 151
- .4byte TRAINER_CLASS_PKMN_RANGER_2
+ .4byte FACILITY_CLASS_PKMN_RANGER_2
.string "MEGHAN$", 8
@ pre-battle speech
.2byte EC_WORD_SCHOOL
@@ -3953,7 +3953,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Meghan
@ 152
- .4byte TRAINER_CLASS_DRAGON_TAMER
+ .4byte FACILITY_CLASS_DRAGON_TAMER
.string "ROBERTO$", 8
@ pre-battle speech
.2byte EC_WORD_DRAGON
@@ -3979,7 +3979,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Roberto
@ 153
- .4byte TRAINER_CLASS_DRAGON_TAMER
+ .4byte FACILITY_CLASS_DRAGON_TAMER
.string "DAMIAN$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -4005,7 +4005,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Damian
@ 154
- .4byte TRAINER_CLASS_DRAGON_TAMER
+ .4byte FACILITY_CLASS_DRAGON_TAMER
.string "BRODY$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -4031,7 +4031,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Brody
@ 155
- .4byte TRAINER_CLASS_DRAGON_TAMER
+ .4byte FACILITY_CLASS_DRAGON_TAMER
.string "GRAHAM$", 8
@ pre-battle speech
.2byte EC_WORD_YEAH
@@ -4057,7 +4057,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Graham
@ 156
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "TYLOR$", 8
@ pre-battle speech
.2byte EC_WORD_ARE
@@ -4083,7 +4083,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Tylor
@ 157
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "JAREN$", 8
@ pre-battle speech
.2byte EC_WORD_FIGHTING
@@ -4109,7 +4109,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jaren
@ 158
- .4byte TRAINER_CLASS_PKMN_BREEDER_2
+ .4byte FACILITY_CLASS_PKMN_BREEDER_2
.string "CORDELL$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -4135,7 +4135,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Cordell
@ 159
- .4byte TRAINER_CLASS_PKMN_BREEDER_1
+ .4byte FACILITY_CLASS_PKMN_BREEDER_1
.string "JAZLYN$", 8
@ pre-battle speech
.2byte EC_WORD_IS
@@ -4161,7 +4161,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jazlyn
@ 160
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "ZACHERY$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4187,7 +4187,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Zachery
@ 161
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "JOHAN$", 8
@ pre-battle speech
.2byte EC_WORD_WINTER
@@ -4213,7 +4213,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Johan
@ 162
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "SHEA$", 8
@ pre-battle speech
.2byte EC_WORD_DO
@@ -4239,7 +4239,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Shea
@ 163
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "KAILA$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -4265,7 +4265,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kaila
@ 164
- .4byte TRAINER_CLASS_SCHOOL_KID_1
+ .4byte FACILITY_CLASS_SCHOOL_KID_1
.string "ISIAH$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4291,7 +4291,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Isiah
@ 165
- .4byte TRAINER_CLASS_SCHOOL_KID_1
+ .4byte FACILITY_CLASS_SCHOOL_KID_1
.string "GARRETT$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4317,7 +4317,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Garrett
@ 166
- .4byte TRAINER_CLASS_SCHOOL_KID_2
+ .4byte FACILITY_CLASS_SCHOOL_KID_2
.string "HAYLIE$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4343,7 +4343,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Haylie
@ 167
- .4byte TRAINER_CLASS_SCHOOL_KID_2
+ .4byte FACILITY_CLASS_SCHOOL_KID_2
.string "MEGAN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4369,7 +4369,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Megan
@ 168
- .4byte TRAINER_CLASS_RICH_BOY
+ .4byte FACILITY_CLASS_RICH_BOY
.string "ISSAC$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -4395,7 +4395,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Issac
@ 169
- .4byte TRAINER_CLASS_RICH_BOY
+ .4byte FACILITY_CLASS_RICH_BOY
.string "QUINTON$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -4421,7 +4421,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Quinton
@ 170
- .4byte TRAINER_CLASS_LADY
+ .4byte FACILITY_CLASS_LADY
.string "SALMA$", 8
@ pre-battle speech
.2byte EC_WORD_YOU_VE
@@ -4447,7 +4447,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Salma
@ 171
- .4byte TRAINER_CLASS_LADY
+ .4byte FACILITY_CLASS_LADY
.string "ANSLEY$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -4473,7 +4473,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ansley
@ 172
- .4byte TRAINER_CLASS_BUG_CATCHER
+ .4byte FACILITY_CLASS_BUG_CATCHER
.string "HOLDEN$", 8
@ pre-battle speech
.2byte EC_WORD_LET_S
@@ -4499,7 +4499,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Holden
@ 173
- .4byte TRAINER_CLASS_BUG_CATCHER
+ .4byte FACILITY_CLASS_BUG_CATCHER
.string "LUCA$", 8
@ pre-battle speech
.2byte EC_WORD_WE
@@ -4525,7 +4525,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Luca
@ 174
- .4byte TRAINER_CLASS_NINJA_BOY
+ .4byte FACILITY_CLASS_NINJA_BOY
.string "JAMISON$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -4551,7 +4551,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jamison
@ 175
- .4byte TRAINER_CLASS_NINJA_BOY
+ .4byte FACILITY_CLASS_NINJA_BOY
.string "GUNNAR$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4577,7 +4577,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gunnar
@ 176
- .4byte TRAINER_CLASS_TUBER_2
+ .4byte FACILITY_CLASS_TUBER_2
.string "CRAIG$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4603,7 +4603,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Craig
@ 177
- .4byte TRAINER_CLASS_TUBER_2
+ .4byte FACILITY_CLASS_TUBER_2
.string "PIERCE$", 8
@ pre-battle speech
.2byte EC_WORD_THERE
@@ -4629,7 +4629,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Pierce
@ 178
- .4byte TRAINER_CLASS_TUBER_1
+ .4byte FACILITY_CLASS_TUBER_1
.string "REGINA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4655,7 +4655,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Regina
@ 179
- .4byte TRAINER_CLASS_TUBER_1
+ .4byte FACILITY_CLASS_TUBER_1
.string "ALISON$", 8
@ pre-battle speech
.2byte EC_WORD_THIS
@@ -4681,7 +4681,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Alison
@ 180
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "HANK$", 8
@ pre-battle speech
.2byte EC_WORD_THERE
@@ -4707,7 +4707,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Hank
@ 181
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "EARL$", 8
@ pre-battle speech
.2byte EC_WORD_THE
@@ -4733,7 +4733,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Earl
@ 182
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "RAMIRO$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -4759,7 +4759,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ramiro
@ 183
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "HUNTER$", 8
@ pre-battle speech
.2byte EC_WORD_SHOW
@@ -4785,7 +4785,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Hunter
@ 184
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "AIDEN$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -4811,7 +4811,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Aiden
@ 185
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "XAVIER$", 8
@ pre-battle speech
.2byte EC_WORD_HEY_THERE
@@ -4837,7 +4837,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Xavier
@ 186
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "CLINTON$", 8
@ pre-battle speech
.2byte EC_WORD_WANT
@@ -4863,7 +4863,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Clinton
@ 187
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "JESSE$", 8
@ pre-battle speech
.2byte EC_WORD_THIS
@@ -4889,7 +4889,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jesse
@ 188
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "EDUARDO$", 8
@ pre-battle speech
.2byte EC_WORD_OUR
@@ -4915,7 +4915,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Eduardo
@ 189
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "HAL$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -4941,7 +4941,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Hal
@ 190
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "GAGE$", 8
@ pre-battle speech
.2byte EC_WORD_HERE_IT_IS
@@ -4967,7 +4967,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gage
@ 191
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "ARNOLD$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -4993,7 +4993,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Arnold
@ 192
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "JARRETT$", 8
@ pre-battle speech
.2byte EC_WORD_COME_ON
@@ -5019,7 +5019,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jarrett
@ 193
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "GARETT$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -5045,7 +5045,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Garett
@ 194
- .4byte TRAINER_CLASS_HIKER
+ .4byte FACILITY_CLASS_HIKER
.string "EMANUEL$", 8
@ pre-battle speech
.2byte EC_WORD_SMARTNESS
@@ -5071,7 +5071,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Emanuel
@ 195
- .4byte TRAINER_CLASS_HIKER
+ .4byte FACILITY_CLASS_HIKER
.string "GUSTAVO$", 8
@ pre-battle speech
.2byte EC_MOVE(CHARGE)
@@ -5097,7 +5097,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gustavo
@ 196
- .4byte TRAINER_CLASS_KINDLER
+ .4byte FACILITY_CLASS_KINDLER
.string "KAMERON$", 8
@ pre-battle speech
.2byte EC_WORD_TAKE_THAT
@@ -5123,7 +5123,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kameron
@ 197
- .4byte TRAINER_CLASS_KINDLER
+ .4byte FACILITY_CLASS_KINDLER
.string "ALFREDO$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -5149,7 +5149,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Alfredo
@ 198
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "RUBEN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5175,7 +5175,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ruben
@ 199
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "LAMAR$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -5201,7 +5201,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Lamar
@ 200
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "JAXON$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -5227,7 +5227,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jaxon
@ 201
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "LOGAN$", 8
@ pre-battle speech
.2byte EC_WORD_IF_I_LOSE
@@ -5253,7 +5253,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Logan
@ 202
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "EMILEE$", 8
@ pre-battle speech
.2byte EC_WORD_IS
@@ -5279,7 +5279,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Emilee
@ 203
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "JOSIE$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -5305,7 +5305,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Josie
@ 204
- .4byte TRAINER_CLASS_CAMPER
+ .4byte FACILITY_CLASS_CAMPER
.string "ARMANDO$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5331,7 +5331,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Armando
@ 205
- .4byte TRAINER_CLASS_CAMPER
+ .4byte FACILITY_CLASS_CAMPER
.string "SKYLER$", 8
@ pre-battle speech
.2byte EC_MOVE2(INGRAIN)
@@ -5357,7 +5357,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Skyler
@ 206
- .4byte TRAINER_CLASS_PICNICKER
+ .4byte FACILITY_CLASS_PICNICKER
.string "RUTH$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5383,7 +5383,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ruth
@ 207
- .4byte TRAINER_CLASS_PICNICKER
+ .4byte FACILITY_CLASS_PICNICKER
.string "MELODY$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5409,7 +5409,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Melody
@ 208
- .4byte TRAINER_CLASS_SWIMMER_M
+ .4byte FACILITY_CLASS_SWIMMER_M
.string "PEDRO$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -5435,7 +5435,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Pedro
@ 209
- .4byte TRAINER_CLASS_SWIMMER_M
+ .4byte FACILITY_CLASS_SWIMMER_M
.string "ERICK$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5461,7 +5461,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Erick
@ 210
- .4byte TRAINER_CLASS_SWIMMER_F
+ .4byte FACILITY_CLASS_SWIMMER_F
.string "ELAINE$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -5487,7 +5487,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Elaine
@ 211
- .4byte TRAINER_CLASS_SWIMMER_F
+ .4byte FACILITY_CLASS_SWIMMER_F
.string "JOYCE$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -5513,7 +5513,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Joyce
@ 212
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "TODD$", 8
@ pre-battle speech
.2byte EC_WORD_YOU_RE
@@ -5539,7 +5539,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Todd
@ 213
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "GAVIN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5565,7 +5565,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gavin
@ 214
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "MALORY$", 8
@ pre-battle speech
.2byte EC_WORD_PROMISE
@@ -5591,7 +5591,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Malory
@ 215
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "ESTHER$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5617,7 +5617,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Esther
@ 216
- .4byte TRAINER_CLASS_PKMN_BREEDER_2
+ .4byte FACILITY_CLASS_PKMN_BREEDER_2
.string "OSCAR$", 8
@ pre-battle speech
.2byte EC_WORD_LET_S
@@ -5643,7 +5643,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Oscar
@ 217
- .4byte TRAINER_CLASS_PKMN_BREEDER_2
+ .4byte FACILITY_CLASS_PKMN_BREEDER_2
.string "WILSON$", 8
@ pre-battle speech
.2byte EC_WORD_WORK
@@ -5669,7 +5669,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Wilson
@ 218
- .4byte TRAINER_CLASS_PKMN_BREEDER_1
+ .4byte FACILITY_CLASS_PKMN_BREEDER_1
.string "CLARE$", 8
@ pre-battle speech
.2byte EC_WORD_YAY
@@ -5695,7 +5695,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Clare
@ 219
- .4byte TRAINER_CLASS_PKMN_BREEDER_1
+ .4byte FACILITY_CLASS_PKMN_BREEDER_1
.string "TESS$", 8
@ pre-battle speech
.2byte EC_WORD_WANT
@@ -5721,7 +5721,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Tess
@ 220
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "LEON$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -5747,7 +5747,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Leon
@ 221
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "ALONZO$", 8
@ pre-battle speech
.2byte EC_WORD_I_VE
@@ -5773,7 +5773,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Alonzo
@ 222
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "VINCE$", 8
@ pre-battle speech
.2byte EC_WORD_THE
@@ -5799,7 +5799,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Vince
@ 223
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "BRYON$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -5825,7 +5825,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Bryon
@ 224
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "AVA$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -5851,7 +5851,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ava
@ 225
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "MIRIAM$", 8
@ pre-battle speech
.2byte EC_WORD_OH
@@ -5877,7 +5877,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Miriam
@ 226
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "CARRIE$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5903,7 +5903,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Carrie
@ 227
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "GILLIAN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -5929,7 +5929,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gillian2
@ 228
- .4byte TRAINER_CLASS_PKMN_RANGER_1
+ .4byte FACILITY_CLASS_PKMN_RANGER_1
.string "TYLER$", 8
@ pre-battle speech
.2byte EC_WORD_YO
@@ -5955,7 +5955,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Tyler
@ 229
- .4byte TRAINER_CLASS_PKMN_RANGER_1
+ .4byte FACILITY_CLASS_PKMN_RANGER_1
.string "CHAZ$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -5981,7 +5981,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Chaz
@ 230
- .4byte TRAINER_CLASS_PKMN_RANGER_1
+ .4byte FACILITY_CLASS_PKMN_RANGER_1
.string "NELSON$", 8
@ pre-battle speech
.2byte EC_WORD_WELL_THEN
@@ -6007,7 +6007,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Nelson
@ 231
- .4byte TRAINER_CLASS_PKMN_RANGER_2
+ .4byte FACILITY_CLASS_PKMN_RANGER_2
.string "SHANIA$", 8
@ pre-battle speech
.2byte EC_WORD_ALL
@@ -6033,7 +6033,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Shania
@ 232
- .4byte TRAINER_CLASS_PKMN_RANGER_2
+ .4byte FACILITY_CLASS_PKMN_RANGER_2
.string "STELLA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -6059,7 +6059,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Stella
@ 233
- .4byte TRAINER_CLASS_PKMN_RANGER_2
+ .4byte FACILITY_CLASS_PKMN_RANGER_2
.string "DORINE$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -6085,7 +6085,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dorine
@ 234
- .4byte TRAINER_CLASS_DRAGON_TAMER
+ .4byte FACILITY_CLASS_DRAGON_TAMER
.string "MADDOX$", 8
@ pre-battle speech
.2byte EC_WORD_DRAGON
@@ -6111,7 +6111,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Maddox
@ 235
- .4byte TRAINER_CLASS_DRAGON_TAMER
+ .4byte FACILITY_CLASS_DRAGON_TAMER
.string "DAVIN$", 8
@ pre-battle speech
.2byte EC_WORD_LET_S
@@ -6137,7 +6137,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Davin
@ 236
- .4byte TRAINER_CLASS_DRAGON_TAMER
+ .4byte FACILITY_CLASS_DRAGON_TAMER
.string "TREVON$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -6163,7 +6163,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Trevon
@ 237
- .4byte TRAINER_CLASS_BLACK_BELT
+ .4byte FACILITY_CLASS_BLACK_BELT
.string "MATEO$", 8
@ pre-battle speech
.2byte EC_WORD_THIS
@@ -6189,7 +6189,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Mateo
@ 238
- .4byte TRAINER_CLASS_BLACK_BELT
+ .4byte FACILITY_CLASS_BLACK_BELT
.string "BRET$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -6215,7 +6215,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Bret
@ 239
- .4byte TRAINER_CLASS_BLACK_BELT
+ .4byte FACILITY_CLASS_BLACK_BELT
.string "RAUL$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -6241,7 +6241,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Raul
@ 240
- .4byte TRAINER_CLASS_BATTLE_GIRL
+ .4byte FACILITY_CLASS_BATTLE_GIRL
.string "KAY$", 8
@ pre-battle speech
.2byte EC_WORD_AND
@@ -6267,7 +6267,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Kay
@ 241
- .4byte TRAINER_CLASS_BATTLE_GIRL
+ .4byte FACILITY_CLASS_BATTLE_GIRL
.string "ELENA$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -6293,7 +6293,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Elena
@ 242
- .4byte TRAINER_CLASS_BATTLE_GIRL
+ .4byte FACILITY_CLASS_BATTLE_GIRL
.string "ALANA$", 8
@ pre-battle speech
.2byte EC_WORD_EAT
@@ -6319,7 +6319,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Alana
@ 243
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "ALEXAS$", 8
@ pre-battle speech
.2byte EC_WORD_GOOD
@@ -6345,7 +6345,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Alexas
@ 244
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "WESTON$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -6371,7 +6371,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Weston
@ 245
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "JASPER$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -6397,7 +6397,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jasper
@ 246
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "NADIA$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -6423,7 +6423,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Nadia
@ 247
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "MIRANDA$", 8
@ pre-battle speech
.2byte EC_WORD_WELL
@@ -6449,7 +6449,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Miranda
@ 248
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "EMMA$", 8
@ pre-battle speech
.2byte EC_WORD_I_VE
@@ -6475,7 +6475,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Emma
@ 249
- .4byte TRAINER_CLASS_PSYCHIC_1
+ .4byte FACILITY_CLASS_PSYCHIC_1
.string "ROLANDO$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -6501,7 +6501,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Rolando
@ 250
- .4byte TRAINER_CLASS_PSYCHIC_1
+ .4byte FACILITY_CLASS_PSYCHIC_1
.string "STANLY$", 8
@ pre-battle speech
.2byte EC_WORD_THIS
@@ -6527,7 +6527,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Stanly
@ 251
- .4byte TRAINER_CLASS_PSYCHIC_1
+ .4byte FACILITY_CLASS_PSYCHIC_1
.string "DARIO$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -6553,7 +6553,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dario
@ 252
- .4byte TRAINER_CLASS_PSYCHIC_2
+ .4byte FACILITY_CLASS_PSYCHIC_2
.string "KARLEE$", 8
@ pre-battle speech
.2byte EC_WORD_SOMETHING
@@ -6579,7 +6579,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Karlee
@ 253
- .4byte TRAINER_CLASS_PSYCHIC_2
+ .4byte FACILITY_CLASS_PSYCHIC_2
.string "JAYLIN$", 8
@ pre-battle speech
.2byte EC_WORD_EVERY
@@ -6605,7 +6605,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jaylin
@ 254
- .4byte TRAINER_CLASS_PSYCHIC_2
+ .4byte FACILITY_CLASS_PSYCHIC_2
.string "INGRID$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -6631,7 +6631,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ingrid
@ 255
- .4byte TRAINER_CLASS_HEX_MANIAC
+ .4byte FACILITY_CLASS_HEX_MANIAC
.string "DELILAH$", 8
@ pre-battle speech
.2byte EC_WORD_DON_T
@@ -6657,7 +6657,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Delilah
@ 256
- .4byte TRAINER_CLASS_HEX_MANIAC
+ .4byte FACILITY_CLASS_HEX_MANIAC
.string "CARLY$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -6683,7 +6683,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Carly
@ 257
- .4byte TRAINER_CLASS_HEX_MANIAC
+ .4byte FACILITY_CLASS_HEX_MANIAC
.string "LEXIE$", 8
@ pre-battle speech
.2byte EC_WORD_WANT
@@ -6709,7 +6709,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Lexie
@ 258
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "MILLER$", 8
@ pre-battle speech
.2byte EC_WORD_HELLO
@@ -6735,7 +6735,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Miller
@ 259
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "MARV$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -6761,7 +6761,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Marv
@ 260
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "LAYTON$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -6787,7 +6787,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Layton
@ 261
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "BROOKS$", 8
@ pre-battle speech
.2byte EC_WORD_THIS
@@ -6813,7 +6813,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Brooks
@ 262
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "GREGORY$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -6839,7 +6839,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gregory
@ 263
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "REESE$", 8
@ pre-battle speech
.2byte EC_WORD_I_VE
@@ -6865,7 +6865,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Reese
@ 264
- .4byte TRAINER_CLASS_TRIATHLETE_3
+ .4byte FACILITY_CLASS_TRIATHLETE_3
.string "MASON$", 8
@ pre-battle speech
.2byte EC_WORD_PLEASE
@@ -6891,7 +6891,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Mason
@ 265
- .4byte TRAINER_CLASS_TRIATHLETE_3
+ .4byte FACILITY_CLASS_TRIATHLETE_3
.string "TOBY$", 8
@ pre-battle speech
.2byte EC_WORD_LISTEN
@@ -6917,7 +6917,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Toby
@ 266
- .4byte TRAINER_CLASS_TRIATHLETE_4
+ .4byte FACILITY_CLASS_TRIATHLETE_4
.string "DOROTHY$", 8
@ pre-battle speech
.2byte EC_WORD_THE
@@ -6943,7 +6943,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dorothy
@ 267
- .4byte TRAINER_CLASS_TRIATHLETE_4
+ .4byte FACILITY_CLASS_TRIATHLETE_4
.string "PIPER$", 8
@ pre-battle speech
.2byte EC_WORD_COME_ON
@@ -6969,7 +6969,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Piper
@ 268
- .4byte TRAINER_CLASS_TRIATHLETE_5
+ .4byte FACILITY_CLASS_TRIATHLETE_5
.string "FINN$", 8
@ pre-battle speech
.2byte EC_WORD_NOT
@@ -6995,7 +6995,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Finn
@ 269
- .4byte TRAINER_CLASS_TRIATHLETE_5
+ .4byte FACILITY_CLASS_TRIATHLETE_5
.string "SAMIR$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -7021,7 +7021,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Samir
@ 270
- .4byte TRAINER_CLASS_TRIATHLETE_6
+ .4byte FACILITY_CLASS_TRIATHLETE_6
.string "FIONA$", 8
@ pre-battle speech
.2byte EC_WORD_DID
@@ -7047,7 +7047,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Fiona
@ 271
- .4byte TRAINER_CLASS_TRIATHLETE_6
+ .4byte FACILITY_CLASS_TRIATHLETE_6
.string "GLORIA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -7073,7 +7073,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gloria
@ 272
- .4byte TRAINER_CLASS_TRIATHLETE_1
+ .4byte FACILITY_CLASS_TRIATHLETE_1
.string "NICO$", 8
@ pre-battle speech
.2byte EC_WORD_LIKE
@@ -7099,7 +7099,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Nico
@ 273
- .4byte TRAINER_CLASS_TRIATHLETE_1
+ .4byte FACILITY_CLASS_TRIATHLETE_1
.string "JEREMY$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -7125,7 +7125,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Jeremy
@ 274
- .4byte TRAINER_CLASS_TRIATHLETE_2
+ .4byte FACILITY_CLASS_TRIATHLETE_2
.string "CAITLIN$", 8
@ pre-battle speech
.2byte EC_WORD_DON_T
@@ -7151,7 +7151,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Caitlin
@ 275
- .4byte TRAINER_CLASS_TRIATHLETE_2
+ .4byte FACILITY_CLASS_TRIATHLETE_2
.string "REENA$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -7177,7 +7177,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Reena
@ 276
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "AVERY$", 8
@ pre-battle speech
.2byte EC_WORD_I_VE
@@ -7203,7 +7203,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Avery
@ 277
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "LIAM$", 8
@ pre-battle speech
.2byte EC_WORD_WE
@@ -7229,7 +7229,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Liam
@ 278
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "THEO$", 8
@ pre-battle speech
.2byte EC_WORD_FISHING
@@ -7255,7 +7255,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Theo
@ 279
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "BAILEY$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -7281,7 +7281,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Bailey
@ 280
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "HUGO$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -7307,7 +7307,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Hugo
@ 281
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "BRYCE$", 8
@ pre-battle speech
.2byte EC_WORD_I_WAS
@@ -7333,7 +7333,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Bryce
@ 282
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "GIDEON$", 8
@ pre-battle speech
.2byte EC_WORD_WHAT_S_UP_QUES
@@ -7359,7 +7359,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Gideon
@ 283
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "TRISTON$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -7385,7 +7385,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Triston
@ 284
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "CHARLES$", 8
@ pre-battle speech
.2byte EC_WORD_IT_S
@@ -7411,7 +7411,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Charles
@ 285
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "RAYMOND$", 8
@ pre-battle speech
.2byte EC_WORD_WANT
@@ -7437,7 +7437,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Raymond
@ 286
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "DIRK$", 8
@ pre-battle speech
.2byte EC_WORD_FLYING
@@ -7463,7 +7463,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dirk
@ 287
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "HAROLD$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -7489,7 +7489,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Harold
@ 288
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "OMAR$", 8
@ pre-battle speech
.2byte EC_WORD_LET_ME_WIN
@@ -7515,7 +7515,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Omar
@ 289
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "PETER$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -7541,7 +7541,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Peter
@ 290
- .4byte TRAINER_CLASS_HIKER
+ .4byte FACILITY_CLASS_HIKER
.string "DEV$", 8
@ pre-battle speech
.2byte EC_WORD_COME_ON
@@ -7567,7 +7567,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dev
@ 291
- .4byte TRAINER_CLASS_HIKER
+ .4byte FACILITY_CLASS_HIKER
.string "COREY$", 8
@ pre-battle speech
.2byte EC_WORD_LET_S
@@ -7593,7 +7593,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Corey
@ 292
- .4byte TRAINER_CLASS_KINDLER
+ .4byte FACILITY_CLASS_KINDLER
.string "ANDRE$", 8
@ pre-battle speech
.2byte EC_WORD_NOW
@@ -7619,7 +7619,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Andre
@ 293
- .4byte TRAINER_CLASS_KINDLER
+ .4byte FACILITY_CLASS_KINDLER
.string "FERRIS$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -7645,7 +7645,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Ferris
@ 294
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "ALIVIA$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -7671,7 +7671,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Alivia
@ 295
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "PAIGE$", 8
@ pre-battle speech
.2byte EC_WORD_LET_S
@@ -7697,7 +7697,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Paige
@ 296
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "ANYA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -7723,7 +7723,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Anya
@ 297
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "DAWN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -7749,7 +7749,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Dawn
@ 298
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "ABBY$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -7775,7 +7775,7 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte gBattleFrontierTrainerMons_Abby
@ 299
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "GRETEL$", 8
@ pre-battle speech
.2byte EC_WORD_I
diff --git a/data/battle_frontier/fallarbor_battle_tent_trainers.inc b/data/battle_frontier/fallarbor_battle_tent_trainers.inc
index 2574b7d86..4975f0cd4 100644
--- a/data/battle_frontier/fallarbor_battle_tent_trainers.inc
+++ b/data/battle_frontier/fallarbor_battle_tent_trainers.inc
@@ -1,7 +1,7 @@
.align 2
gFallarborBattleTentTrainers:: @ 85DF084
@ 0
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "AMBER$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -27,7 +27,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Amber
@ 1
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "JAVIER$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -53,7 +53,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Javier
@ 2
- .4byte TRAINER_CLASS_TUBER_1
+ .4byte FACILITY_CLASS_TUBER_1
.string "NATALIE$", 8
@ pre-battle speech
.2byte EC_WORD_THE
@@ -79,7 +79,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Natalie
@ 3
- .4byte TRAINER_CLASS_TUBER_2
+ .4byte FACILITY_CLASS_TUBER_2
.string "TREVE$", 8
@ pre-battle speech
.2byte EC_WORD_LOOK
@@ -105,7 +105,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Treve
@ 4
- .4byte TRAINER_CLASS_LADY
+ .4byte FACILITY_CLASS_LADY
.string "ARIANNA$", 8
@ pre-battle speech
.2byte EC_WORD_IF_I_WIN
@@ -131,7 +131,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Arianna
@ 5
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "JADYN$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -157,7 +157,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Jadyn
@ 6
- .4byte TRAINER_CLASS_RICH_BOY
+ .4byte FACILITY_CLASS_RICH_BOY
.string "GERARDO$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -183,7 +183,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Gerardo
@ 7
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "JONN$", 8
@ pre-battle speech
.2byte EC_WORD_THE
@@ -209,7 +209,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Jonn
@ 8
- .4byte TRAINER_CLASS_SWIMMER_M
+ .4byte FACILITY_CLASS_SWIMMER_M
.string "ESTEBAN$", 8
@ pre-battle speech
.2byte EC_WORD_YOU_RE
@@ -235,7 +235,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Esteban
@ 9
- .4byte TRAINER_CLASS_CAMPER
+ .4byte FACILITY_CLASS_CAMPER
.string "JAMESON$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -261,7 +261,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Jameson
@ 10
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "ALANZO$", 8
@ pre-battle speech
.2byte EC_MOVE2(FORESIGHT)
@@ -287,7 +287,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Alanzo
@ 11
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "HOWARD$", 8
@ pre-battle speech
.2byte EC_WORD_YOUR
@@ -313,7 +313,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Howard
@ 12
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "CONRAD$", 8
@ pre-battle speech
.2byte EC_WORD_YOUR
@@ -339,7 +339,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Conrad
@ 13
- .4byte TRAINER_CLASS_SCHOOL_KID_2
+ .4byte FACILITY_CLASS_SCHOOL_KID_2
.string "MAKENNA$", 8
@ pre-battle speech
.2byte EC_WORD_SHOW
@@ -365,7 +365,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Makenna
@ 14
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "BRAYAN$", 8
@ pre-battle speech
.2byte EC_WORD_CAN
@@ -391,7 +391,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Brayan
@ 15
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "MARIANA$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -417,7 +417,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Mariana
@ 16
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "SHELDON$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -443,7 +443,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Sheldon
@ 17
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "GIANNA$", 8
@ pre-battle speech
.2byte EC_WORD_AHAHA
@@ -469,7 +469,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Gianna
@ 18
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "YAHIR$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -495,7 +495,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Yahir
@ 19
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "BRITNEY$", 8
@ pre-battle speech
.2byte EC_WORD_IT
@@ -521,7 +521,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Britney
@ 20
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "HECTER$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -547,7 +547,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Hecter
@ 21
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "TANNOR$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -573,7 +573,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Tannor
@ 22
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "BENJI$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -599,7 +599,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Benji
@ 23
- .4byte TRAINER_CLASS_NINJA_BOY
+ .4byte FACILITY_CLASS_NINJA_BOY
.string "RORY$", 8
@ pre-battle speech
.2byte EC_WORD_DON_T
@@ -625,7 +625,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Rory
@ 24
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "ELEANOR$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -651,7 +651,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Eleanor
@ 25
- .4byte TRAINER_CLASS_SWIMMER_F
+ .4byte FACILITY_CLASS_SWIMMER_F
.string "EVELYN$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -677,7 +677,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Evelyn
@ 26
- .4byte TRAINER_CLASS_PICNICKER
+ .4byte FACILITY_CLASS_PICNICKER
.string "ARIELLE$", 8
@ pre-battle speech
.2byte EC_WORD_IT_S
@@ -703,7 +703,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Arielle
@ 27
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "CONNAR$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -729,7 +729,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Connar
@ 28
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "MAURICE$", 8
@ pre-battle speech
.2byte EC_WORD_THERE
@@ -755,7 +755,7 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte gFallarborBattleTentTrainerMons_Maurice
@ 29
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "KIANNA$", 8
@ pre-battle speech
.2byte EC_WORD_I
diff --git a/data/battle_frontier/slateport_battle_tent_trainers.inc b/data/battle_frontier/slateport_battle_tent_trainers.inc
index 9d6900149..6fdd85215 100644
--- a/data/battle_frontier/slateport_battle_tent_trainers.inc
+++ b/data/battle_frontier/slateport_battle_tent_trainers.inc
@@ -1,7 +1,7 @@
.align 2
gSlateportBattleTentTrainers:: @ 85DDA14
@ 0
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "JOLIE$", 8
@ pre-battle speech
.2byte EC_WORD_WHAT
@@ -27,7 +27,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Jolie
@ 1
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "MALACHI$", 8
@ pre-battle speech
.2byte EC_WORD_BAD
@@ -53,7 +53,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Malachi
@ 2
- .4byte TRAINER_CLASS_TUBER_1
+ .4byte FACILITY_CLASS_TUBER_1
.string "KELSIE$", 8
@ pre-battle speech
.2byte EC_WORD_GO
@@ -79,7 +79,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Kelsie
@ 3
- .4byte TRAINER_CLASS_TUBER_2
+ .4byte FACILITY_CLASS_TUBER_2
.string "DAVON$", 8
@ pre-battle speech
.2byte EC_WORD_YEAH_YEAH
@@ -105,7 +105,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Davon
@ 4
- .4byte TRAINER_CLASS_LADY
+ .4byte FACILITY_CLASS_LADY
.string "GLENDA$", 8
@ pre-battle speech
.2byte EC_WORD_CONVERSATION
@@ -131,7 +131,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Glenda
@ 5
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "HELENA$", 8
@ pre-battle speech
.2byte EC_WORD_DOES
@@ -157,7 +157,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Helena
@ 6
- .4byte TRAINER_CLASS_RICH_BOY
+ .4byte FACILITY_CLASS_RICH_BOY
.string "RODOLFO$", 8
@ pre-battle speech
.2byte EC_WORD_GO
@@ -183,7 +183,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Rodolfo
@ 7
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "DAVION$", 8
@ pre-battle speech
.2byte EC_WORD_GRAAAH
@@ -209,7 +209,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Davion
@ 8
- .4byte TRAINER_CLASS_SWIMMER_M
+ .4byte FACILITY_CLASS_SWIMMER_M
.string "KENDALL$", 8
@ pre-battle speech
.2byte EC_WORD_A_LITTLE
@@ -235,7 +235,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Kendall
@ 9
- .4byte TRAINER_CLASS_CAMPER
+ .4byte FACILITY_CLASS_CAMPER
.string "COLTEN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -261,7 +261,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Colten
@ 10
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "IRVIN$", 8
@ pre-battle speech
.2byte EC_WORD_HAVE
@@ -287,7 +287,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Irvin
@ 11
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "SHAUN$", 8
@ pre-battle speech
.2byte EC_WORD_LISTEN
@@ -313,7 +313,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Shaun
@ 12
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "KYLER$", 8
@ pre-battle speech
.2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
@@ -339,7 +339,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Kyler
@ 13
- .4byte TRAINER_CLASS_SCHOOL_KID_2
+ .4byte FACILITY_CLASS_SCHOOL_KID_2
.string "MAGGIE$", 8
@ pre-battle speech
.2byte EC_POKEMON(VULPIX)
@@ -365,7 +365,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Maggie
@ 14
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "STEPHON$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -391,7 +391,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Stephon
@ 15
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "REBECCA$", 8
@ pre-battle speech
.2byte EC_WORD_THAT
@@ -417,7 +417,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Rebecca
@ 16
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "REGGIE$", 8
@ pre-battle speech
.2byte EC_WORD_POKEMON
@@ -443,7 +443,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Reggie
@ 17
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "JANAE$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -469,7 +469,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Janae
@ 18
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "CAIDEN$", 8
@ pre-battle speech
.2byte EC_WORD_MY
@@ -495,7 +495,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Caiden
@ 19
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "KIRSTEN$", 8
@ pre-battle speech
.2byte EC_WORD_HUH_QUES
@@ -521,7 +521,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Kirsten
@ 20
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "KURTIS$", 8
@ pre-battle speech
.2byte EC_WORD_SORRY
@@ -547,7 +547,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Kurtis
@ 21
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "STEFAN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -573,7 +573,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Stefan
@ 22
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "AVERY$", 8
@ pre-battle speech
.2byte EC_WORD_TOYS
@@ -599,7 +599,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Avery
@ 23
- .4byte TRAINER_CLASS_NINJA_BOY
+ .4byte FACILITY_CLASS_NINJA_BOY
.string "DWANE$", 8
@ pre-battle speech
.2byte EC_WORD_MMM
@@ -625,7 +625,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Dwane
@ 24
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "MCKENNA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -651,7 +651,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Mckenna
@ 25
- .4byte TRAINER_CLASS_SWIMMER_F
+ .4byte FACILITY_CLASS_SWIMMER_F
.string "CAMRYN$", 8
@ pre-battle speech
.2byte EC_WORD_MR
@@ -677,7 +677,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Camryn
@ 26
- .4byte TRAINER_CLASS_PICNICKER
+ .4byte FACILITY_CLASS_PICNICKER
.string "NATASHA$", 8
@ pre-battle speech
.2byte EC_WORD_COME_OVER
@@ -703,7 +703,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Natasha
@ 27
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "AUSTYN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -729,7 +729,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Austyn
@ 28
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "DONOVAN$", 8
@ pre-battle speech
.2byte EC_WORD_OH
@@ -755,7 +755,7 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte gSlateportBattleTentTrainerMons_Donovan
@ 29
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "TAMIA$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
diff --git a/data/battle_frontier/verdanturf_battle_tent_trainers.inc b/data/battle_frontier/verdanturf_battle_tent_trainers.inc
index aa028c600..a31f52ba6 100644
--- a/data/battle_frontier/verdanturf_battle_tent_trainers.inc
+++ b/data/battle_frontier/verdanturf_battle_tent_trainers.inc
@@ -1,7 +1,7 @@
.align 2
gVerdanturfBattleTentTrainers:: @ 85DE610
@ 0
- .4byte TRAINER_CLASS_AROMA_LADY
+ .4byte FACILITY_CLASS_AROMA_LADY
.string "BRENNA$", 8
@ pre-battle speech
.2byte EC_WORD_NO
@@ -27,7 +27,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Brenna
@ 1
- .4byte TRAINER_CLASS_RUIN_MANIAC
+ .4byte FACILITY_CLASS_RUIN_MANIAC
.string "DILAN$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -53,7 +53,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Dilan
@ 2
- .4byte TRAINER_CLASS_TUBER_1
+ .4byte FACILITY_CLASS_TUBER_1
.string "ELIANA$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -79,7 +79,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Eliana
@ 3
- .4byte TRAINER_CLASS_TUBER_2
+ .4byte FACILITY_CLASS_TUBER_2
.string "MARKUS$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -105,7 +105,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Markus
@ 4
- .4byte TRAINER_CLASS_LADY
+ .4byte FACILITY_CLASS_LADY
.string "CAITLYN$", 8
@ pre-battle speech
.2byte EC_WORD_I_AM
@@ -131,7 +131,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Caitlyn
@ 5
- .4byte TRAINER_CLASS_BEAUTY
+ .4byte FACILITY_CLASS_BEAUTY
.string "DESIREE$", 8
@ pre-battle speech
.2byte EC_WORD_DOESN_T
@@ -157,7 +157,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Desiree
@ 6
- .4byte TRAINER_CLASS_RICH_BOY
+ .4byte FACILITY_CLASS_RICH_BOY
.string "RONALD$", 8
@ pre-battle speech
.2byte EC_WORD_COME_ON
@@ -183,7 +183,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Ronald
@ 7
- .4byte TRAINER_CLASS_POKEMANIAC
+ .4byte FACILITY_CLASS_POKEMANIAC
.string "ASHTEN$", 8
@ pre-battle speech
.2byte EC_WORD_OH_YEAH
@@ -209,7 +209,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Ashten
@ 8
- .4byte TRAINER_CLASS_SWIMMER_M
+ .4byte FACILITY_CLASS_SWIMMER_M
.string "GERARD$", 8
@ pre-battle speech
.2byte EC_WORD_LOOK
@@ -235,7 +235,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Gerard
@ 9
- .4byte TRAINER_CLASS_CAMPER
+ .4byte FACILITY_CLASS_CAMPER
.string "BRADLY$", 8
@ pre-battle speech
.2byte EC_WORD_IT_S
@@ -261,7 +261,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Bradly
@ 10
- .4byte TRAINER_CLASS_BUG_MANIAC
+ .4byte FACILITY_CLASS_BUG_MANIAC
.string "DENNIS$", 8
@ pre-battle speech
.2byte EC_WORD_ARE
@@ -287,7 +287,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Dennis
@ 11
- .4byte TRAINER_CLASS_GENTLEMAN
+ .4byte FACILITY_CLASS_GENTLEMAN
.string "PRESTIN$", 8
@ pre-battle speech
.2byte EC_WORD_THIS
@@ -313,7 +313,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Prestin
@ 12
- .4byte TRAINER_CLASS_GUITARIST
+ .4byte FACILITY_CLASS_GUITARIST
.string "ERNESTO$", 8
@ pre-battle speech
.2byte EC_WORD_THIS
@@ -339,7 +339,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Ernesto
@ 13
- .4byte TRAINER_CLASS_SCHOOL_KID_2
+ .4byte FACILITY_CLASS_SCHOOL_KID_2
.string "NALA$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -365,7 +365,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Nala
@ 14
- .4byte TRAINER_CLASS_COOLTRAINER_1
+ .4byte FACILITY_CLASS_COOLTRAINER_1
.string "DARNELL$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -391,7 +391,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Darnell
@ 15
- .4byte TRAINER_CLASS_COOLTRAINER_2
+ .4byte FACILITY_CLASS_COOLTRAINER_2
.string "ASHLYN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -417,7 +417,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Ashlyn
@ 16
- .4byte TRAINER_CLASS_POKEFAN_1
+ .4byte FACILITY_CLASS_POKEFAN_1
.string "ADDISON$", 8
@ pre-battle speech
.2byte EC_WORD_YES
@@ -443,7 +443,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Addison
@ 17
- .4byte TRAINER_CLASS_POKEFAN_2
+ .4byte FACILITY_CLASS_POKEFAN_2
.string "JUSTINE$", 8
@ pre-battle speech
.2byte EC_WORD_YES
@@ -469,7 +469,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Justine
@ 18
- .4byte TRAINER_CLASS_EXPERT_1
+ .4byte FACILITY_CLASS_EXPERT_1
.string "TYSON$", 8
@ pre-battle speech
.2byte EC_WORD_YOU_RE
@@ -495,7 +495,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Tyson
@ 19
- .4byte TRAINER_CLASS_EXPERT_2
+ .4byte FACILITY_CLASS_EXPERT_2
.string "LAILA$", 8
@ pre-battle speech
.2byte EC_WORD_A
@@ -521,7 +521,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Laila
@ 20
- .4byte TRAINER_CLASS_YOUNGSTER
+ .4byte FACILITY_CLASS_YOUNGSTER
.string "WAREN$", 8
@ pre-battle speech
.2byte EC_WORD_DANGER
@@ -547,7 +547,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Waren
@ 21
- .4byte TRAINER_CLASS_FISHERMAN
+ .4byte FACILITY_CLASS_FISHERMAN
.string "TOBIAS$", 8
@ pre-battle speech
.2byte EC_MOVE2(BARRIER)
@@ -573,7 +573,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Tobias
@ 22
- .4byte TRAINER_CLASS_BIRD_KEEPER
+ .4byte FACILITY_CLASS_BIRD_KEEPER
.string "JOSIAH$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -599,7 +599,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Josiah
@ 23
- .4byte TRAINER_CLASS_NINJA_BOY
+ .4byte FACILITY_CLASS_NINJA_BOY
.string "DION$", 8
@ pre-battle speech
.2byte EC_WORD_IT_S
@@ -625,7 +625,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Dion
@ 24
- .4byte TRAINER_CLASS_PARASOL_LADY
+ .4byte FACILITY_CLASS_PARASOL_LADY
.string "KENZIE$", 8
@ pre-battle speech
.2byte EC_WORD_THE
@@ -651,7 +651,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Kenzie
@ 25
- .4byte TRAINER_CLASS_SWIMMER_F
+ .4byte FACILITY_CLASS_SWIMMER_F
.string "LILLIAN$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -677,7 +677,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Lillian
@ 26
- .4byte TRAINER_CLASS_PICNICKER
+ .4byte FACILITY_CLASS_PICNICKER
.string "LESLEY$", 8
@ pre-battle speech
.2byte EC_WORD_YOU
@@ -703,7 +703,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Lesley
@ 27
- .4byte TRAINER_CLASS_SAILOR
+ .4byte FACILITY_CLASS_SAILOR
.string "MARQUIS$", 8
@ pre-battle speech
.2byte EC_WORD_NONE
@@ -729,7 +729,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Marquis
@ 28
- .4byte TRAINER_CLASS_COLLECTOR
+ .4byte FACILITY_CLASS_COLLECTOR
.string "FREDDY$", 8
@ pre-battle speech
.2byte EC_WORD_I
@@ -755,7 +755,7 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte gVerdanturfBattleTentTrainerMons_Freddy
@ 29
- .4byte TRAINER_CLASS_LASS
+ .4byte FACILITY_CLASS_LASS
.string "CECILIA$", 8
@ pre-battle speech
.2byte EC_WORD_MY
diff --git a/data/battle_moves.inc b/data/battle_moves.inc
index 586248bf0..c5c090546 100644
--- a/data/battle_moves.inc
+++ b/data/battle_moves.inc
@@ -1917,7 +1917,7 @@ gBattleMoves:: @ 831C898
@ Curse
.byte 0x6d @ effect
.byte 0 @ power
- .byte TYPE_UNKNOWN
+ .byte TYPE_MYSTERY
.byte 0 @ accuracy
.byte 10 @ PP
.byte 0 @ side effect chance
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index 27aff5f19..058833fa9 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -1,15 +1,17 @@
+#include "constants/battle.h"
+#include "constants/pokemon.h"
+#include "constants/battle_script_commands.h"
+#include "constants/battle_anim.h"
+#include "constants/battle_string_ids.h"
#include "constants/abilities.h"
#include "constants/moves.h"
#include "constants/songs.h"
.include "asm/macros.inc"
.include "asm/macros/battle_script.inc"
.include "constants/constants.inc"
- .include "constants/battle_constants.inc"
- .include "constants/battle_script_constants.inc"
- .include "constants/battle_text.inc"
.section script_data, "aw", %progbits
-
+
.align 2
gBattleScriptsForMoveEffects:: @ 82D86A8
.4byte BattleScript_EffectHit
@@ -251,7 +253,7 @@ BattleScript_EffectUnused8d::
BattleScript_EffectUnusedA3::
BattleScript_EffectHit::
jumpifnotmove MOVE_SURF, BattleScript_HitFromAtkCanceler
- jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler
+ jumpifnostatus3 BS_TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler
orword gHitMarker, HITMARKER_IGNORE_UNDERWATER
setbyte sDMG_MULTIPLIER, 0x2
BattleScript_HitFromAtkCanceler::
@@ -270,23 +272,23 @@ BattleScript_HitFromAtkAnimation::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
seteffectwithchance
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
BattleScript_MoveEnd::
setbyte sMOVEEND_STATE, 0x0
moveend 0x0, 0x0
end
BattleScript_MakeMoveMissed::
- orbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ orbyte gMoveResultFlags, MOVE_RESULT_MISSED
BattleScript_PrintMoveMissed::
attackstring
ppreduce
@@ -302,20 +304,20 @@ BattleScript_EffectSleep::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS_SLEEP, BattleScript_AlreadyAsleep
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_AlreadyAsleep
jumpifcantmakeasleep BattleScript_CantMakeAsleep
- jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_SLEEP
+ setmoveeffect MOVE_EFFECT_SLEEP
seteffectprimary
goto BattleScript_MoveEnd
BattleScript_AlreadyAsleep::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYASLEEP
waitmessage 0x40
@@ -335,7 +337,7 @@ BattleScript_CantMakeAsleep::
BattleScript_EffectPoisonHit::
BattleScript_EffectPoisonTail::
- setmoveeffect EFFECT_POISON
+ setmoveeffect MOVE_EFFECT_POISON
goto BattleScript_EffectHit
BattleScript_EffectAbsorb::
@@ -350,44 +352,44 @@ BattleScript_EffectAbsorb::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
negativedamage
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- jumpifability TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze
+ jumpifability BS_TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze
setbyte cMULTISTRING_CHOOSER, 0x0
goto BattleScript_AbsorbUpdateHp
BattleScript_AbsorbLiquidOoze::
manipulatedamage ATK80_DMG_CHANGE_SIGN
setbyte cMULTISTRING_CHOOSER, 0x1
BattleScript_AbsorbUpdateHp::
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
jumpifmovehadnoeffect BattleScript_AbsorbTryFainting
printfromtable gLeechSeedDrainStringIds
waitmessage 0x40
BattleScript_AbsorbTryFainting::
- tryfaintmon ATTACKER, FALSE, NULL
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectBurnHit::
BattleScript_EffectBlazeKick::
- setmoveeffect EFFECT_BURN
+ setmoveeffect MOVE_EFFECT_BURN
goto BattleScript_EffectHit
BattleScript_EffectFreezeHit::
- setmoveeffect EFFECT_FREEZE
+ setmoveeffect MOVE_EFFECT_FREEZE
goto BattleScript_EffectHit
BattleScript_EffectParalyzeHit::
- setmoveeffect EFFECT_PARALYSIS
+ setmoveeffect MOVE_EFFECT_PARALYSIS
goto BattleScript_EffectHit
BattleScript_EffectExplosion::
@@ -397,7 +399,7 @@ BattleScript_EffectExplosion::
faintifabilitynotdamp
setatkhptozero
waitstate
- jumpifbyte NO_COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED, BattleScript_82D8B94
+ jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_82D8B94
call BattleScript_82D8BEA
goto BattleScript_82D8B96
BattleScript_82D8B94::
@@ -411,19 +413,19 @@ BattleScript_82D8B96::
adjustnormaldamage
accuracycheck BattleScript_82D8BCF, ACC_CURR_MOVE
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
jumpifnexttargetvalid BattleScript_82D8B96
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
end
BattleScript_82D8BCF::
effectivenesssound
@@ -432,20 +434,20 @@ BattleScript_82D8BCF::
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
jumpifnexttargetvalid BattleScript_82D8B96
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
end
BattleScript_82D8BEA::
- bicbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ bicbyte gMoveResultFlags, MOVE_RESULT_MISSED
attackanimation
waitanimation
- orbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ orbyte gMoveResultFlags, MOVE_RESULT_MISSED
return
BattleScript_EffectDreamEater::
attackcanceler
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82D8C0E
- jumpifstatus TARGET, STATUS_SLEEP, BattleScript_82D8C18
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_82D8C0E
+ jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_82D8C18
BattleScript_82D8C0E::
attackstring
ppreduce
@@ -462,23 +464,23 @@ BattleScript_82D8C18::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
negativedamage
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
jumpifmovehadnoeffect BattleScript_DreamEaterTryFaintEnd
printstring STRINGID_PKMNDREAMEATEN
waitmessage 0x40
BattleScript_DreamEaterTryFaintEnd::
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectMirrorMove::
@@ -487,32 +489,32 @@ BattleScript_EffectMirrorMove::
pause 0x40
trymirrormove
ppreduce
- orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ orbyte gMoveResultFlags, MOVE_RESULT_FAILED
printstring STRINGID_MIRRORMOVEFAILED
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_EffectAttackUp::
- setstatchanger ATK, 1, FALSE
+ setstatchanger STAT_ATK, 1, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectDefenseUp::
- setstatchanger DEF, 1, FALSE
+ setstatchanger STAT_DEF, 1, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectSpecialAttackUp::
- setstatchanger SPATK, 1, FALSE
+ setstatchanger STAT_SPATK, 1, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectEvasionUp::
- setstatchanger EVASION, 1, FALSE
+ setstatchanger STAT_EVASION, 1, FALSE
BattleScript_EffectStatUp::
attackcanceler
BattleScript_EffectStatUpAfterAtkCanceler::
attackstring
ppreduce
- statbuffchange AFFECTS_USER | 0x1, BattleScript_StatUpEnd
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_StatUpEnd
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim
pause 0x20
goto BattleScript_StatUpPrintString
BattleScript_StatUpAttackAnim::
@@ -520,7 +522,7 @@ BattleScript_StatUpAttackAnim::
waitanimation
BattleScript_StatUpDoAnim::
setgraphicalstatchangevalues
- playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
BattleScript_StatUpPrintString::
printfromtable gStatUpStringIds
waitmessage 0x40
@@ -528,45 +530,45 @@ BattleScript_StatUpEnd::
goto BattleScript_MoveEnd
BattleScript_StatUp::
- playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_EFFECT_BATTLER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
return
BattleScript_EffectAttackDown::
- setstatchanger ATK, 1, TRUE
+ setstatchanger STAT_ATK, 1, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectDefenseDown::
- setstatchanger DEF, 1, TRUE
+ setstatchanger STAT_DEF, 1, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectSpeedDown::
- setstatchanger SPEED, 1, TRUE
+ setstatchanger STAT_SPEED, 1, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectAccuracyDown::
- setstatchanger ACC, 1, TRUE
+ setstatchanger STAT_ACC, 1, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectEvasionDown::
- setstatchanger EVASION, 1, TRUE
+ setstatchanger STAT_EVASION, 1, TRUE
BattleScript_EffectStatDown::
attackcanceler
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
ppreduce
statbuffchange 0x1, BattleScript_StatDownEnd
- jumpifbyte LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatDownDoAnim
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_StatDownEnd
+ jumpifbyte CMP_LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatDownDoAnim
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_StatDownEnd
pause 0x20
goto BattleScript_StatDownPrintString
BattleScript_StatDownDoAnim::
attackanimation
waitanimation
setgraphicalstatchangevalues
- playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
BattleScript_StatDownPrintString::
printfromtable gStatDownStringIds
waitmessage 0x40
@@ -574,7 +576,7 @@ BattleScript_StatDownEnd::
goto BattleScript_MoveEnd
BattleScript_StatDown::
- playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_EFFECT_BATTLER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatDownStringIds
waitmessage 0x40
return
@@ -604,7 +606,7 @@ BattleScript_EffectRampage::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D8DAE
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D8DAE
ppreduce
BattleScript_82D8DAE::
confuseifrepeatingattackends
@@ -614,8 +616,8 @@ BattleScript_EffectRoar::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut
- jumpifstatus3 TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted
+ jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut
+ jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
@@ -630,10 +632,10 @@ BattleScript_EffectMultiHit::
initmultihitstring
setbyte sMULTIHIT_EFFECT, 0x0
BattleScript_MultiHitLoop::
- jumpifhasnohp ATTACKER, BattleScript_MultiHitEnd
- jumpifhasnohp TARGET, BattleScript_MultiHitPrintStrings
- jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoMultiHit
- jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_MultiHitPrintStrings
+ jumpifhasnohp BS_ATTACKER, BattleScript_MultiHitEnd
+ jumpifhasnohp BS_TARGET, BattleScript_MultiHitPrintStrings
+ jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoMultiHit
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_MultiHitPrintStrings
BattleScript_DoMultiHit::
movevaluescleanup
copybyte cEFFECT_CHOOSER, sMULTIHIT_EFFECT
@@ -645,10 +647,10 @@ BattleScript_DoMultiHit::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
printstring STRINGID_EMPTYSTRING3
@@ -656,7 +658,7 @@ BattleScript_DoMultiHit::
addbyte sMULTIHIT_STRING + 4, 0x1
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
- jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_MultiHitPrintStrings
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_MultiHitPrintStrings
decrementmultihit BattleScript_MultiHitLoop
goto BattleScript_MultiHitPrintStrings
BattleScript_MultiHitNoMoreHits::
@@ -670,7 +672,7 @@ BattleScript_MultiHitPrintStrings::
waitmessage 0x40
BattleScript_MultiHitEnd::
seteffectwithchance
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x2
moveend 0x1, 0x0
setbyte sMOVEEND_STATE, 0x4
@@ -689,19 +691,19 @@ BattleScript_EffectConversion::
goto BattleScript_MoveEnd
BattleScript_EffectFlinchHit::
- setmoveeffect EFFECT_FLINCH
+ setmoveeffect MOVE_EFFECT_FLINCH
goto BattleScript_EffectHit
BattleScript_EffectRestoreHp::
attackcanceler
attackstring
ppreduce
- tryhealhalfhealth BattleScript_AlreadyAtFullHp, ATTACKER
+ tryhealhalfhealth BattleScript_AlreadyAtFullHp, BS_ATTACKER
attackanimation
waitanimation
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -710,38 +712,38 @@ BattleScript_EffectToxic::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS_POISON, BattleScript_AlreadyPoisoned
- jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned
- jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
- jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected
- jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected
+ jumpifability BS_TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus BS_TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
+ jumpiftype BS_TARGET, TYPE_POISON, BattleScript_NotAffected
+ jumpiftype BS_TARGET, TYPE_STEEL, BattleScript_NotAffected
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_TOXIC
+ setmoveeffect MOVE_EFFECT_TOXIC
seteffectprimary
resultmessage
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_AlreadyPoisoned::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x40
printstring STRINGID_PKMNALREADYPOISONED
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_ImmunityProtected::
- copybyte gEffectBank, gBankTarget
+ copybyte gEffectBattler, gBattlerTarget
setbyte cMULTISTRING_CHOOSER, 0x0
call BattleScript_PSNPrevention
goto BattleScript_MoveEnd
BattleScript_EffectPayDay::
- setmoveeffect EFFECT_PAYDAY
+ setmoveeffect MOVE_EFFECT_PAYDAY
goto BattleScript_EffectHit
BattleScript_EffectLightScreen::
@@ -752,20 +754,20 @@ BattleScript_EffectLightScreen::
goto BattleScript_PrintReflectLightScreenSafeguardString
BattleScript_EffectTriAttack::
- setmoveeffect EFFECT_TRI_ATTACK
+ setmoveeffect MOVE_EFFECT_TRI_ATTACK
goto BattleScript_EffectHit
BattleScript_EffectRest::
attackcanceler
attackstring
ppreduce
- jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_RestIsAlreadyAsleep
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_RestIsAlreadyAsleep
jumpifcantmakeasleep BattleScript_RestCantSleep
trysetrest BattleScript_AlreadyAtFullHp
pause 0x20
printfromtable gRestUsedStringIds
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
waitstate
goto BattleScript_PresentHealTarget
@@ -776,7 +778,7 @@ BattleScript_RestCantSleep::
goto BattleScript_MoveEnd
BattleScript_RestIsAlreadyAsleep::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYASLEEP2
waitmessage 0x40
@@ -799,20 +801,20 @@ BattleScript_KOFail::
goto BattleScript_MoveEnd
BattleScript_EffectRazorWind::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, 0x0
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
BattleScript_TwoTurnMovesSecondTurn::
attackcanceler
- setmoveeffect EFFECT_CHARGING
- setbyte sANIM_TURN, 0x1
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_CHARGING
+ setbyte sB_ANIM_TURN, 0x1
+ clearstatusfromeffect BS_ATTACKER
orword gHitMarker, HITMARKER_NO_PPDEDUCT
jumpifnotmove MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck
- setmoveeffect EFFECT_FLINCH
+ setmoveeffect MOVE_EFFECT_FLINCH
goto BattleScript_HitFromAccCheck
BattleScriptFirstChargingTurn::
@@ -822,7 +824,7 @@ BattleScriptFirstChargingTurn::
attackanimation
waitanimation
orword gHitMarker, HITMARKER_x8000000
- setmoveeffect EFFECT_CHARGING | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
copybyte cMULTISTRING_CHOOSER, sTWOTURN_STRINGID
printfromtable gFirstTurnOfTwoStringIds
@@ -835,7 +837,7 @@ BattleScript_EffectSuperFang::
attackstring
ppreduce
typecalc
- bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
damagetohalftargethp
goto BattleScript_HitFromAtkAnimation
@@ -845,18 +847,18 @@ BattleScript_EffectDragonRage::
attackstring
ppreduce
typecalc
- bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
setword gBattleMoveDamage, 40
adjustsetdamage
goto BattleScript_HitFromAtkAnimation
BattleScript_EffectTrap::
jumpifnotmove MOVE_WHIRLPOOL, BattleScript_DoWrapEffect
- jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_DoWrapEffect
+ jumpifnostatus3 BS_TARGET, STATUS3_UNDERWATER, BattleScript_DoWrapEffect
orword gHitMarker, HITMARKER_IGNORE_UNDERWATER
setbyte sDMG_MULTIPLIER, 0x2
BattleScript_DoWrapEffect::
- setmoveeffect EFFECT_WRAP
+ setmoveeffect MOVE_EFFECT_WRAP
goto BattleScript_EffectHit
BattleScript_EffectDoubleHit::
@@ -879,19 +881,19 @@ BattleScript_MoveMissedDoDamage::
pause 0x40
resultmessage
waitmessage 0x40
- jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_MoveEnd
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd
printstring STRINGID_PKMNCRASHED
waitmessage 0x40
damagecalc
typecalc
adjustnormaldamage
manipulatedamage ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP
- bicbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ bicbyte gMoveResultFlags, MOVE_RESULT_MISSED
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
- orbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
+ orbyte gMoveResultFlags, MOVE_RESULT_MISSED
goto BattleScript_MoveEnd
BattleScript_EffectMist::
@@ -909,7 +911,7 @@ BattleScript_EffectFocusEnergy::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed
+ jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed
setfocusenergy
attackanimation
waitanimation
@@ -918,7 +920,7 @@ BattleScript_EffectFocusEnergy::
goto BattleScript_MoveEnd
BattleScript_EffectRecoil::
- setmoveeffect EFFECT_RECOIL_25 | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_RECOIL_25 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit
incrementgamestat 0x1B
goto BattleScript_EffectHit
@@ -927,44 +929,44 @@ BattleScript_EffectConfuse::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused
+ jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_CONFUSION
+ setmoveeffect MOVE_EFFECT_CONFUSION
seteffectprimary
resultmessage
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_AlreadyConfused::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYCONFUSED
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_EffectAttackUp2::
- setstatchanger ATK, 2, FALSE
+ setstatchanger STAT_ATK, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectDefenseUp2::
- setstatchanger DEF, 2, FALSE
+ setstatchanger STAT_DEF, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectSpeedUp2::
- setstatchanger SPEED, 2, FALSE
+ setstatchanger STAT_SPEED, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectSpecialAttackUp2::
- setstatchanger SPATK, 2, FALSE
+ setstatchanger STAT_SPATK, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectSpecialDefenseUp2::
- setstatchanger SPDEF, 2, FALSE
+ setstatchanger STAT_SPDEF, 2, FALSE
goto BattleScript_EffectStatUp
BattleScript_EffectTransform::
@@ -979,19 +981,19 @@ BattleScript_EffectTransform::
goto BattleScript_MoveEnd
BattleScript_EffectAttackDown2::
- setstatchanger ATK, 2, TRUE
+ setstatchanger STAT_ATK, 2, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectDefenseDown2::
- setstatchanger DEF, 2, TRUE
+ setstatchanger STAT_DEF, 2, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectSpeedDown2::
- setstatchanger SPEED, 2, TRUE
+ setstatchanger STAT_SPEED, 2, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectSpecialDefenseDown2::
- setstatchanger SPDEF, 2, TRUE
+ setstatchanger STAT_SPDEF, 2, TRUE
goto BattleScript_EffectStatDown
BattleScript_EffectReflect::
@@ -1010,18 +1012,18 @@ BattleScript_EffectPoison::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS_POISON, BattleScript_AlreadyPoisoned
- jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned
- jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected
- jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected
- jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ jumpifability BS_TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus BS_TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned
+ jumpiftype BS_TARGET, TYPE_POISON, BattleScript_NotAffected
+ jumpiftype BS_TARGET, TYPE_STEEL, BattleScript_NotAffected
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_POISON
+ setmoveeffect MOVE_EFFECT_POISON
seteffectprimary
resultmessage
waitmessage 0x40
@@ -1031,74 +1033,74 @@ BattleScript_EffectParalyze::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_LIMBER, BattleScript_LimberProtected
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifability BS_TARGET, ABILITY_LIMBER, BattleScript_LimberProtected
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
typecalc
jumpifmovehadnoeffect BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_AlreadyParalyzed
- jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_PARALYSIS
+ setmoveeffect MOVE_EFFECT_PARALYSIS
seteffectprimary
resultmessage
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_AlreadyParalyzed::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNISALREADYPARALYZED
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_LimberProtected::
- copybyte gEffectBank, gBankTarget
+ copybyte gEffectBattler, gBattlerTarget
setbyte cMULTISTRING_CHOOSER, 0x0
call BattleScript_PRLZPrevention
goto BattleScript_MoveEnd
BattleScript_EffectAttackDownHit::
- setmoveeffect EFFECT_ATK_MINUS_1
+ setmoveeffect MOVE_EFFECT_ATK_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectDefenseDownHit::
- setmoveeffect EFFECT_DEF_MINUS_1
+ setmoveeffect MOVE_EFFECT_DEF_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectSpeedDownHit::
- setmoveeffect EFFECT_SPD_MINUS_1
+ setmoveeffect MOVE_EFFECT_SPD_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectSpecialAttackDownHit::
- setmoveeffect EFFECT_SP_ATK_MINUS_1
+ setmoveeffect MOVE_EFFECT_SP_ATK_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectSpecialDefenseDownHit::
- setmoveeffect EFFECT_SP_DEF_MINUS_1
+ setmoveeffect MOVE_EFFECT_SP_DEF_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectAccuracyDownHit::
- setmoveeffect EFFECT_ACC_MINUS_1
+ setmoveeffect MOVE_EFFECT_ACC_MINUS_1
goto BattleScript_EffectHit
BattleScript_EffectSkyAttack::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, 0x3
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
BattleScript_EffectConfuseHit::
- setmoveeffect EFFECT_CONFUSION
+ setmoveeffect MOVE_EFFECT_CONFUSION
goto BattleScript_EffectHit
BattleScript_EffectTwineedle::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
- setbyte sMULTIHIT_EFFECT, EFFECT_POISON
+ setbyte sMULTIHIT_EFFECT, MOVE_EFFECT_POISON
attackstring
ppreduce
setmultihitcounter 0x2
@@ -1110,22 +1112,22 @@ BattleScript_EffectSubstitute::
ppreduce
attackstring
waitstate
- jumpifstatus2 ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute
+ jumpifstatus2 BS_ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute
setsubstitute
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_SubstituteAnim
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_SubstituteAnim
pause 0x20
goto BattleScript_SubstituteString
BattleScript_SubstituteAnim::
attackanimation
waitanimation
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
BattleScript_SubstituteString::
printfromtable gSubsituteUsedStringIds
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_AlreadyHasSubstitute::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNHASSUBSTITUTE
waitmessage 0x40
@@ -1134,7 +1136,7 @@ BattleScript_AlreadyHasSubstitute::
BattleScript_EffectRecharge::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
- setmoveeffect EFFECT_RECHARGE | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_RECHARGE | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_HitFromAtkString
BattleScript_MoveUsedMustRecharge::
@@ -1145,20 +1147,20 @@ BattleScript_MoveUsedMustRecharge::
BattleScript_EffectRage::
attackcanceler
accuracycheck BattleScript_RageMiss, ACC_CURR_MOVE
- setmoveeffect EFFECT_RAGE
+ setmoveeffect MOVE_EFFECT_RAGE
seteffectprimary
setmoveeffect 0
goto BattleScript_HitFromAtkString
BattleScript_RageMiss::
- setmoveeffect EFFECT_RAGE
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_RAGE
+ clearstatusfromeffect BS_ATTACKER
goto BattleScript_PrintMoveMissed
BattleScript_EffectMimic::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
mimicattackcopy BattleScript_ButItFailed
attackanimation
@@ -1173,8 +1175,8 @@ BattleScript_EffectMetronome::
pause 0x20
attackanimation
waitanimation
- setbyte sANIM_TURN, 0x0
- setbyte sANIM_TARGETS_HIT, 0x0
+ setbyte sB_ANIM_TURN, 0x0
+ setbyte sB_ANIM_TARGETS_HIT, 0x0
metronome
BattleScript_EffectLeechSeed::
@@ -1182,7 +1184,7 @@ BattleScript_EffectLeechSeed::
attackstring
pause 0x20
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_DoLeechSeed, ACC_CURR_MOVE
BattleScript_DoLeechSeed::
setseeded
@@ -1221,7 +1223,7 @@ BattleScript_EffectLevelDamage::
attackstring
ppreduce
typecalc
- bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
dmgtolevel
adjustsetdamage
goto BattleScript_HitFromAtkAnimation
@@ -1232,7 +1234,7 @@ BattleScript_EffectPsywave::
attackstring
ppreduce
typecalc
- bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
psywavedamageeffect
adjustsetdamage
goto BattleScript_HitFromAtkAnimation
@@ -1268,31 +1270,31 @@ BattleScript_EffectPainSplit::
attackanimation
waitanimation
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
copyword gBattleMoveDamage, sPAINSPLIT_HP
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printstring STRINGID_SHAREDPAIN
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_EffectSnore::
attackcanceler
- jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_SnoreIsAsleep
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_SnoreIsAsleep
attackstring
ppreduce
goto BattleScript_ButItFailed
BattleScript_SnoreIsAsleep::
- jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore
+ jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore
printstring STRINGID_PKMNFASTASLEEP
waitmessage 0x40
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
BattleScript_DoSnore::
attackstring
ppreduce
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
- setmoveeffect EFFECT_FLINCH
+ setmoveeffect MOVE_EFFECT_FLINCH
goto BattleScript_HitFromCritCalc
BattleScript_EffectConversion2::
@@ -1310,7 +1312,7 @@ BattleScript_EffectLockOn::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
setalwayshitflag
attackanimation
@@ -1323,7 +1325,7 @@ BattleScript_EffectSketch::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
copymovepermanently BattleScript_ButItFailed
attackanimation
waitanimation
@@ -1333,14 +1335,14 @@ BattleScript_EffectSketch::
BattleScript_EffectSleepTalk::
attackcanceler
- jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_SleepTalkIsAsleep
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_SleepTalkIsAsleep
attackstring
ppreduce
goto BattleScript_ButItFailed
BattleScript_SleepTalkIsAsleep::
printstring STRINGID_PKMNFASTASLEEP
waitmessage 0x40
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
attackstring
ppreduce
orword gHitMarker, HITMARKER_NO_PPDEDUCT
@@ -1350,8 +1352,8 @@ BattleScript_SleepTalkIsAsleep::
BattleScript_SleepTalkUsingMove::
attackanimation
waitanimation
- setbyte sANIM_TURN, 0x0
- setbyte sANIM_TARGETS_HIT, 0x0
+ setbyte sB_ANIM_TURN, 0x0
+ setbyte sB_ANIM_TARGETS_HIT, 0x0
jumptorandomattack TRUE
BattleScript_EffectDestinyBond::
@@ -1392,15 +1394,15 @@ BattleScript_EffectHealBell::
printfromtable gPartyStatusHealStringIds
waitmessage 0x40
jumpifnotmove MOVE_HEAL_BELL, BattleScript_PartyHealEnd
- jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_CheckHealBellMon2Unaffected
+ jumpifbyte CMP_NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_CheckHealBellMon2Unaffected
printstring STRINGID_PKMNSXBLOCKSY
waitmessage 0x40
BattleScript_CheckHealBellMon2Unaffected::
- jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_PartyHealEnd
+ jumpifbyte CMP_NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_PartyHealEnd
printstring STRINGID_PKMNSXBLOCKSY2
waitmessage 0x40
BattleScript_PartyHealEnd::
- updatestatusicon ATTACKER_WITH_PARTNER
+ updatestatusicon BS_ATTACKER_WITH_PARTNER
waitstate
goto BattleScript_MoveEnd
@@ -1412,10 +1414,10 @@ BattleScript_EffectTripleKick::
initmultihitstring
setmultihit 0x3
BattleScript_TripleKickLoop::
- jumpifhasnohp ATTACKER, BattleScript_TripleKickEnd
- jumpifhasnohp TARGET, BattleScript_TripleKickNoMoreHits
- jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack
- jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_TripleKickNoMoreHits
+ jumpifhasnohp BS_ATTACKER, BattleScript_TripleKickEnd
+ jumpifhasnohp BS_TARGET, BattleScript_TripleKickNoMoreHits
+ jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack
+ jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_TripleKickNoMoreHits
BattleScript_DoTripleKickAttack::
accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE
movevaluescleanup
@@ -1430,40 +1432,40 @@ BattleScript_DoTripleKickAttack::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
printstring STRINGID_EMPTYSTRING3
waitmessage 0x1
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
- jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_TripleKickPrintStrings
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_TripleKickPrintStrings
decrementmultihit BattleScript_TripleKickLoop
goto BattleScript_TripleKickPrintStrings
BattleScript_TripleKickNoMoreHits::
pause 0x20
- jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings
- bicbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ jumpifbyte CMP_EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings
+ bicbyte gMoveResultFlags, MOVE_RESULT_MISSED
BattleScript_TripleKickPrintStrings::
resultmessage
waitmessage 0x40
- jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd
- jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_TripleKickEnd
+ jumpifbyte CMP_EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd
+ jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_TripleKickEnd
copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6
printstring STRINGID_HITXTIMES
waitmessage 0x40
BattleScript_TripleKickEnd::
seteffectwithchance
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0xE
moveend 0x0, 0x0
end
BattleScript_EffectThief::
- setmoveeffect EFFECT_STEAL_ITEM
+ setmoveeffect MOVE_EFFECT_STEAL_ITEM
goto BattleScript_EffectHit
BattleScript_EffectMeanLook::
@@ -1471,11 +1473,11 @@ BattleScript_EffectMeanLook::
attackstring
ppreduce
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC
- jumpifstatus2 TARGET, STATUS2_ESCAPE_PREVENTION, BattleScript_ButItFailed
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_ESCAPE_PREVENTION, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
attackanimation
waitanimation
- setmoveeffect EFFECT_PREVENT_ESCAPE
+ setmoveeffect MOVE_EFFECT_PREVENT_ESCAPE
seteffectprimary
printstring STRINGID_TARGETCANTESCAPENOW
waitmessage 0x40
@@ -1485,14 +1487,14 @@ BattleScript_EffectNightmare::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus2 TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS_SLEEP, BattleScript_NightmareWorked
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_NightmareWorked
goto BattleScript_ButItFailed
BattleScript_NightmareWorked::
attackanimation
waitanimation
- setmoveeffect EFFECT_NIGHTMARE
+ setmoveeffect MOVE_EFFECT_NIGHTMARE
seteffectprimary
printstring STRINGID_PKMNFELLINTONIGHTMARE
waitmessage 0x40
@@ -1501,57 +1503,57 @@ BattleScript_NightmareWorked::
BattleScript_EffectMinimize::
attackcanceler
setminimize
- setstatchanger EVASION, 1, FALSE
+ setstatchanger STAT_EVASION, 1, FALSE
goto BattleScript_EffectStatUpAfterAtkCanceler
BattleScript_EffectCurse::
- jumpiftype2 ATTACKER, TYPE_GHOST, BattleScript_GhostCurse
+ jumpiftype2 BS_ATTACKER, TYPE_GHOST, BattleScript_GhostCurse
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, GREATER_THAN, SPEED, 0x0, BattleScript_CurseTrySpeed
- jumpifstat ATTACKER, NOT_EQUAL, ATK, 0xC, BattleScript_CurseTrySpeed
- jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_ButItFailed
+ jumpifstat BS_ATTACKER, CMP_GREATER_THAN, STAT_SPEED, 0x0, BattleScript_CurseTrySpeed
+ jumpifstat BS_ATTACKER, CMP_NOT_EQUAL, STAT_ATK, 0xC, BattleScript_CurseTrySpeed
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_DEF, 0xC, BattleScript_ButItFailed
BattleScript_CurseTrySpeed::
- copybyte gBankTarget, gBankAttacker
- setbyte sANIM_TURN, 0x1
+ copybyte gBattlerTarget, gBattlerAttacker
+ setbyte sB_ANIM_TURN, 0x1
attackanimation
waitanimation
- setstatchanger SPEED, 1, TRUE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryAttack
+ setstatchanger STAT_SPEED, 1, TRUE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CurseTryAttack
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_CurseTryAttack::
- setstatchanger ATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryDefence
+ setstatchanger STAT_ATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CurseTryDefence
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CurseTryDefence::
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseEnd
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CurseEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CurseEnd::
goto BattleScript_MoveEnd
BattleScript_GhostCurse::
- jumpifbytenotequal gBankAttacker, gBankTarget, BattleScript_DoGhostCurse
- getmovetarget ATTACKER
+ jumpifbytenotequal gBattlerAttacker, gBattlerTarget, BattleScript_DoGhostCurse
+ getmovetarget BS_ATTACKER
BattleScript_DoGhostCurse::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
cursetarget BattleScript_ButItFailed
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- setbyte sANIM_TURN, 0x0
+ setbyte sB_ANIM_TURN, 0x0
attackanimation
waitanimation
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNLAIDCURSE
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectProtect::
@@ -1600,10 +1602,10 @@ BattleScript_EffectPerishSong::
waitmessage 0x40
setbyte sBANK, 0x0
BattleScript_PerishSongLoop::
- jumpifability SCRIPTING_BANK, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected
+ jumpifability BS_SCRIPTING, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected
BattleScript_PerishSongLoopIncrement::
addbyte sBANK, 0x1
- jumpifbytenotequal sBANK, gNoOfAllBanks, BattleScript_PerishSongLoop
+ jumpifbytenotequal sBANK, gBattlersCount, BattleScript_PerishSongLoop
goto BattleScript_MoveEnd
BattleScript_PerishSongNotAffected::
@@ -1621,7 +1623,7 @@ BattleScript_EffectSandstorm::
BattleScript_EffectRollout::
attackcanceler
attackstring
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_RolloutCheckAccuracy
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_RolloutCheckAccuracy
ppreduce
BattleScript_RolloutCheckAccuracy::
accuracycheck BattleScript_RolloutHit, ACC_CURR_MOVE
@@ -1632,24 +1634,24 @@ BattleScript_RolloutHit::
BattleScript_EffectSwagger::
attackcanceler
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
ppreduce
- jumpifconfusedandstatmaxed ATK, BattleScript_ButItFailed
+ jumpifconfusedandstatmaxed STAT_ATK, BattleScript_ButItFailed
attackanimation
waitanimation
- setstatchanger ATK, 2, FALSE
+ setstatchanger STAT_ATK, 2, FALSE
statbuffchange 0x1, BattleScript_SwaggerTryConfuse
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SwaggerTryConfuse
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SwaggerTryConfuse
setgraphicalstatchangevalues
- playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_SwaggerTryConfuse::
- jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
- setmoveeffect EFFECT_CONFUSION
+ jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ setmoveeffect MOVE_EFFECT_CONFUSION
seteffectprimary
goto BattleScript_MoveEnd
@@ -1702,7 +1704,7 @@ BattleScript_EffectSafeguard::
goto BattleScript_PrintReflectLightScreenSafeguardString
BattleScript_EffectThawHit::
- setmoveeffect EFFECT_BURN
+ setmoveeffect MOVE_EFFECT_BURN
goto BattleScript_EffectHit
BattleScript_EffectMagnitude::
@@ -1721,25 +1723,25 @@ BattleScript_EffectBatonPass::
attackstring
ppreduce
jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
- jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | ATTACKER, BattleScript_ButItFailed
+ jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | BS_ATTACKER, BattleScript_ButItFailed
attackanimation
waitanimation
openpartyscreen 0x1, BattleScript_ButItFailed
- switchoutabilities ATTACKER
+ switchoutabilities BS_ATTACKER
waitstate
- switchhandleorder ATTACKER, 0x2
- returntoball ATTACKER
- getswitchedmondata ATTACKER
- switchindataupdate ATTACKER
- hpthresholds ATTACKER
+ switchhandleorder BS_ATTACKER, 0x2
+ returntoball BS_ATTACKER
+ getswitchedmondata BS_ATTACKER
+ switchindataupdate BS_ATTACKER
+ hpthresholds BS_ATTACKER
printstring STRINGID_SWITCHINMON
- switchinanim ATTACKER, TRUE
+ switchinanim BS_ATTACKER, TRUE
waitstate
- switchineffects ATTACKER
+ switchineffects BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectRapidSpin::
- setmoveeffect EFFECT_RAPIDSPIN | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_RAPIDSPIN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectSonicboom::
@@ -1748,7 +1750,7 @@ BattleScript_EffectSonicboom::
attackstring
ppreduce
typecalc
- bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
setword gBattleMoveDamage, 20
adjustsetdamage
goto BattleScript_HitFromAtkAnimation
@@ -1787,15 +1789,15 @@ BattleScript_EffectSunnyDay::
goto BattleScript_MoveWeatherChange
BattleScript_EffectDefenseUpHit::
- setmoveeffect EFFECT_DEF_PLUS_1 | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_DEF_PLUS_1 | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit
BattleScript_EffectAttackUpHit::
- setmoveeffect EFFECT_ATK_PLUS_1 | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit
BattleScript_EffectAllStatsUpHit::
- setmoveeffect EFFECT_ALL_STATS_UP | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_ALL_STATS_UP | MOVE_EFFECT_AFFECTS_USER
goto BattleScript_EffectHit
BattleScript_EffectBellyDrum::
@@ -1806,8 +1808,8 @@ BattleScript_EffectBellyDrum::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
attackanimation
waitanimation
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNCUTHPMAXEDATTACK
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -1834,26 +1836,26 @@ BattleScript_EffectMirrorCoat::
goto BattleScript_HitFromAtkAnimation
BattleScript_EffectSkullBash::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, 0x2
call BattleScriptFirstChargingTurn
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_SkullBashEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SkullBashEnd
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_SkullBashEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SkullBashEnd
setgraphicalstatchangevalues
- playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_SkullBashEnd::
goto BattleScript_MoveEnd
BattleScript_EffectTwister::
- jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_FlinchEffect
+ jumpifnostatus3 BS_TARGET, STATUS3_ON_AIR, BattleScript_FlinchEffect
orword gHitMarker, HITMARKER_IGNORE_ON_AIR
setbyte sDMG_MULTIPLIER, 0x2
BattleScript_FlinchEffect::
- setmoveeffect EFFECT_FLINCH
+ setmoveeffect MOVE_EFFECT_FLINCH
goto BattleScript_EffectHit
BattleScript_EffectEarthquake::
@@ -1863,7 +1865,7 @@ BattleScript_EffectEarthquake::
selectfirstvalidtarget
BattleScript_HitsAllWithUndergroundBonusLoop::
movevaluescleanup
- jumpifnostatus3 TARGET, STATUS3_UNDERGROUND, BattleScript_HitsAllNoUndergroundBonus
+ jumpifnostatus3 BS_TARGET, STATUS3_UNDERGROUND, BattleScript_HitsAllNoUndergroundBonus
orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND
setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_DoHitAllWithUndergroundBonus
@@ -1879,17 +1881,17 @@ BattleScript_DoHitAllWithUndergroundBonus::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
printstring STRINGID_EMPTYSTRING3
waitmessage 0x1
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop
@@ -1917,35 +1919,35 @@ BattleScript_EffectFutureSight::
goto BattleScript_MoveEnd
BattleScript_EffectGust::
- jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_EffectHit
+ jumpifnostatus3 BS_TARGET, STATUS3_ON_AIR, BattleScript_EffectHit
orword gHitMarker, HITMARKER_IGNORE_ON_AIR
setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_EffectHit
BattleScript_EffectStomp::
- jumpifnostatus3 TARGET, STATUS3_MINIMIZED, BattleScript_FlinchEffect
+ jumpifnostatus3 BS_TARGET, STATUS3_MINIMIZED, BattleScript_FlinchEffect
setbyte sDMG_MULTIPLIER, 0x2
goto BattleScript_FlinchEffect
BattleScript_EffectSolarbeam::
jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarbeamDecideTurn
jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarbeamDecideTurn
- jumpifhalfword COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_SolarbeamOnFirstTurn
+ jumpifhalfword CMP_COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_SolarbeamOnFirstTurn
BattleScript_SolarbeamDecideTurn::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, 0x1
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
BattleScript_SolarbeamOnFirstTurn::
orword gHitMarker, HITMARKER_x8000000
- setmoveeffect EFFECT_CHARGING | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
ppreduce
goto BattleScript_TwoTurnMovesSecondTurn
BattleScript_EffectThunder::
- setmoveeffect EFFECT_PARALYSIS
+ setmoveeffect MOVE_EFFECT_PARALYSIS
orword gHitMarker, HITMARKER_IGNORE_ON_AIR
goto BattleScript_EffectHit
@@ -1954,14 +1956,14 @@ BattleScript_EffectTeleport::
attackstring
ppreduce
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_ButItFailed
- getifcantrunfrombattle ATTACKER
- jumpifbyte EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed
- jumpifbyte EQUAL, gBattleCommunication, 0x2, BattleScript_PrintAbilityMadeIneffective
+ getifcantrunfrombattle BS_ATTACKER
+ jumpifbyte CMP_EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed
+ jumpifbyte CMP_EQUAL, gBattleCommunication, 0x2, BattleScript_PrintAbilityMadeIneffective
attackanimation
waitanimation
printstring STRINGID_PKMNFLEDFROMBATTLE
waitmessage 0x40
- setoutcomeonteleport ATTACKER
+ setoutcomeonteleport BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectBeatUp::
@@ -1976,22 +1978,22 @@ BattleScript_BeatUpLoop::
trydobeatup BattleScript_BeatUpEnd, BattleScript_ButItFailed
printstring STRINGID_PKMNATTACK
critcalc
- jumpifbyte NOT_EQUAL, gCritMultiplier, 0x2, BattleScript_BeatUpAttack
+ jumpifbyte CMP_NOT_EQUAL, gCritMultiplier, 0x2, BattleScript_BeatUpAttack
manipulatedamage ATK80_DMG_DOUBLED
BattleScript_BeatUpAttack::
adjustnormaldamage
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
goto BattleScript_BeatUpLoop
@@ -1999,8 +2001,8 @@ BattleScript_BeatUpEnd::
end
BattleScript_EffectSemiInvulnerable::
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable
jumpifmove MOVE_FLY, BattleScript_FirstTurnFly
jumpifmove MOVE_DIVE, BattleScript_FirstTurnDive
jumpifmove MOVE_BOUNCE, BattleScript_FirstTurnBounce
@@ -2024,12 +2026,12 @@ BattleScript_FirstTurnSemiInvulnerable::
BattleScript_SecondTurnSemiInvulnerable::
attackcanceler
- setmoveeffect EFFECT_CHARGING
- setbyte sANIM_TURN, 0x1
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_CHARGING
+ setbyte sB_ANIM_TURN, 0x1
+ clearstatusfromeffect BS_ATTACKER
orword gHitMarker, HITMARKER_NO_PPDEDUCT
jumpifnotmove MOVE_BOUNCE, BattleScript_SemiInvulnerableTryHit
- setmoveeffect EFFECT_PARALYSIS
+ setmoveeffect MOVE_EFFECT_PARALYSIS
BattleScript_SemiInvulnerableTryHit::
accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE
clearsemiinvulnerablebit
@@ -2044,9 +2046,9 @@ BattleScript_EffectDefenseCurl::
attackstring
ppreduce
setdefensecurlbit
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_DefenseCurlDoStatUpAnim
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_DefenseCurlDoStatUpAnim
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString
attackanimation
waitanimation
BattleScript_DefenseCurlDoStatUpAnim::
@@ -2056,13 +2058,13 @@ BattleScript_EffectSoftboiled::
attackcanceler
attackstring
ppreduce
- tryhealhalfhealth BattleScript_AlreadyAtFullHp, TARGET
+ tryhealhalfhealth BattleScript_AlreadyAtFullHp, BS_TARGET
BattleScript_PresentHealTarget::
attackanimation
waitanimation
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -2076,7 +2078,7 @@ BattleScript_AlreadyAtFullHp::
BattleScript_EffectFakeOut::
attackcanceler
jumpifnotfirstturn BattleScript_ButItFailedAtkStringPpReduce
- setmoveeffect EFFECT_FLINCH | CERTAIN
+ setmoveeffect MOVE_EFFECT_FLINCH | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_ButItFailedAtkStringPpReduce::
@@ -2085,14 +2087,14 @@ BattleScript_ButItFailedPpReduce::
ppreduce
BattleScript_ButItFailed::
pause 0x20
- orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ orbyte gMoveResultFlags, MOVE_RESULT_FAILED
resultmessage
waitmessage 0x40
goto BattleScript_MoveEnd
BattleScript_NotAffected::
pause 0x20
- orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED
+ orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE
resultmessage
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -2100,9 +2102,9 @@ BattleScript_NotAffected::
BattleScript_EffectUproar::
attackcanceler
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
- setmoveeffect EFFECT_UPROAR | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_UPROAR | MOVE_EFFECT_AFFECTS_USER
attackstring
- jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_UproarHit
+ jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_UproarHit
ppreduce
BattleScript_UproarHit::
nop
@@ -2121,7 +2123,7 @@ BattleScript_EffectStockpile::
BattleScript_EffectSpitUp::
attackcanceler
- jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82D9FA2
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82D9FA2
attackstring
ppreduce
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
@@ -2178,24 +2180,24 @@ BattleScript_EffectTorment::
BattleScript_EffectFlatter::
attackcanceler
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
attackstring
ppreduce
- jumpifconfusedandstatmaxed SPATK, BattleScript_ButItFailed
+ jumpifconfusedandstatmaxed STAT_SPATK, BattleScript_ButItFailed
attackanimation
waitanimation
- setstatchanger SPATK, 1, FALSE
+ setstatchanger STAT_SPATK, 1, FALSE
statbuffchange 0x1, BattleScript_FlatterTryConfuse
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_FlatterTryConfuse
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_FlatterTryConfuse
setgraphicalstatchangevalues
- playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_FlatterTryConfuse::
- jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
- setmoveeffect EFFECT_CONFUSION
+ jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ setmoveeffect MOVE_EFFECT_CONFUSION
seteffectprimary
goto BattleScript_MoveEnd
@@ -2203,27 +2205,27 @@ BattleScript_EffectWillOWisp::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifstatus TARGET, STATUS_BURN, BattleScript_AlreadyBurned
- jumpiftype TARGET, TYPE_FIRE, BattleScript_NotAffected
- jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents
- jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus BS_TARGET, STATUS1_BURN, BattleScript_AlreadyBurned
+ jumpiftype BS_TARGET, TYPE_FIRE, BattleScript_NotAffected
+ jumpifability BS_TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents
+ jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
attackanimation
waitanimation
- setmoveeffect EFFECT_BURN
+ setmoveeffect MOVE_EFFECT_BURN
seteffectprimary
goto BattleScript_MoveEnd
BattleScript_WaterVeilPrevents::
- copybyte gEffectBank, gBankTarget
+ copybyte gEffectBattler, gBattlerTarget
setbyte cMULTISTRING_CHOOSER, 0x0
call BattleScript_BRNPrevention
goto BattleScript_MoveEnd
BattleScript_AlreadyBurned::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYHASBURN
waitmessage 0x40
@@ -2231,31 +2233,31 @@ BattleScript_AlreadyBurned::
BattleScript_EffectMemento::
attackcanceler
- jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82DA153
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82DA153
attackstring
ppreduce
jumpifattackandspecialattackcannotfall BattleScript_ButItFailed
setatkhptozero
attackanimation
waitanimation
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA148
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA148
setbyte sFIELD_1B, 0x0
- playstatchangeanimation TARGET, 0x12, 0x7
- playstatchangeanimation TARGET, 0x2, 0x3
- setstatchanger ATK, 2, TRUE
+ playstatchangeanimation BS_TARGET, 0x12, 0x7
+ playstatchangeanimation BS_TARGET, 0x2, 0x3
+ setstatchanger STAT_ATK, 2, TRUE
statbuffchange 0x1, BattleScript_82DA119
- jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA119
+ jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA119
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DA119::
- playstatchangeanimation TARGET, 0x10, 0x3
- setstatchanger SPATK, 2, TRUE
+ playstatchangeanimation BS_TARGET, 0x10, 0x3
+ setstatchanger STAT_SPATK, 2, TRUE
statbuffchange 0x1, BattleScript_82DA13C
- jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA13C
+ jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA13C
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DA13C::
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_82DA148::
printstring STRINGID_BUTNOEFFECT
@@ -2271,11 +2273,11 @@ BattleScript_82DA15A::
effectivenesssound
resultmessage
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectFacade::
- jumpifstatus ATTACKER, STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON, BattleScript_FacadeDoubleDmg
+ jumpifstatus BS_ATTACKER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, BattleScript_FacadeDoubleDmg
goto BattleScript_EffectHit
BattleScript_FacadeDoubleDmg::
@@ -2291,9 +2293,9 @@ BattleScript_EffectFocusPunch::
goto BattleScript_MoveEnd
BattleScript_EffectSmellingsalt::
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_EffectHit
- setmoveeffect EFFECT_REMOVE_PARALYSIS | CERTAIN
- jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_SmellingsaltDoubleDmg
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_EffectHit
+ setmoveeffect MOVE_EFFECT_REMOVE_PARALYSIS | MOVE_EFFECT_CERTAIN
+ jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_SmellingsaltDoubleDmg
goto BattleScript_EffectHit
BattleScript_SmellingsaltDoubleDmg::
@@ -2358,7 +2360,7 @@ BattleScript_EffectTrick::
attackcanceler
attackstring
ppreduce
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
tryswapitems BattleScript_ButItFailed
attackanimation
@@ -2396,8 +2398,8 @@ BattleScript_EffectAssist::
asistattackselect BattleScript_ButItFailedPpReduce
attackanimation
waitanimation
- setbyte sANIM_TURN, 0x0
- setbyte sANIM_TARGETS_HIT, 0x0
+ setbyte sB_ANIM_TURN, 0x0
+ setbyte sB_ANIM_TARGETS_HIT, 0x0
jumptorandomattack TRUE
BattleScript_EffectIngrain::
@@ -2412,7 +2414,7 @@ BattleScript_EffectIngrain::
goto BattleScript_MoveEnd
BattleScript_EffectSuperpower::
- setmoveeffect EFFECT_ATK_DEF_DOWN | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_ATK_DEF_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectMagicCoat::
@@ -2451,37 +2453,37 @@ BattleScript_EffectBrickBreak::
damagecalc
typecalc
adjustnormaldamage
- jumpifbyte EQUAL, sANIM_TURN, 0x0, BattleScript_BrickBreakAnim
- bicbyte gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED
+ jumpifbyte CMP_EQUAL, sB_ANIM_TURN, 0x0, BattleScript_BrickBreakAnim
+ bicbyte gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE
BattleScript_BrickBreakAnim::
attackanimation
waitanimation
- jumpifbyte LESS_THAN, sANIM_TURN, 0x2, BattleScript_BrickBreakDoHit
+ jumpifbyte CMP_LESS_THAN, sB_ANIM_TURN, 0x2, BattleScript_BrickBreakDoHit
printstring STRINGID_THEWALLSHATTERED
waitmessage 0x40
BattleScript_BrickBreakDoHit::
typecalc2
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
seteffectwithchance
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_EffectYawn::
attackcanceler
attackstring
ppreduce
- jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_PrintBankAbilityMadeIneffective
- jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_PrintBankAbilityMadeIneffective
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ jumpifability BS_TARGET, ABILITY_VITAL_SPIRIT, BattleScript_PrintBankAbilityMadeIneffective
+ jumpifability BS_TARGET, ABILITY_INSOMNIA, BattleScript_PrintBankAbilityMadeIneffective
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifcantmakeasleep BattleScript_ButItFailed
setyawn BattleScript_ButItFailed
@@ -2499,7 +2501,7 @@ BattleScript_PrintAbilityMadeIneffective::
goto BattleScript_MoveEnd
BattleScript_EffectKnockOff::
- setmoveeffect EFFECT_KNOCK_OFF
+ setmoveeffect MOVE_EFFECT_KNOCK_OFF
goto BattleScript_EffectHit
BattleScript_EffectEndeavor::
@@ -2511,7 +2513,7 @@ BattleScript_EffectEndeavor::
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
typecalc
jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation
- bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
copyword gBattleMoveDamage, gHpDealt
adjustsetdamage
goto BattleScript_HitFromAtkAnimation
@@ -2552,7 +2554,7 @@ BattleScript_EffectRefresh::
waitanimation
printstring STRINGID_PKMNSTATUSNORMAL
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectGrudge::
@@ -2591,24 +2593,24 @@ BattleScript_EffectSecretPower::
goto BattleScript_EffectHit
BattleScript_EffectDoubleEdge::
- setmoveeffect EFFECT_RECOIL_33_PARALYSIS | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_RECOIL_33_PARALYSIS | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectTeeterDance::
attackcanceler
attackstring
ppreduce
- setbyte gBankTarget, 0x0
+ setbyte gBattlerTarget, 0x0
BattleScript_TeeterDanceLoop::
movevaluescleanup
- setmoveeffect EFFECT_CONFUSION
- jumpifbyteequal gBankAttacker, gBankTarget, BattleScript_TeeterDanceLoopIncrement
- jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_TeeterDanceOwnTempoPrevents
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_TeeterDanceSubstitutePrevents
- jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_TeeterDanceAlreadyConfused
- jumpifhasnohp TARGET, BattleScript_TeeterDanceLoopIncrement
+ setmoveeffect MOVE_EFFECT_CONFUSION
+ jumpifbyteequal gBattlerAttacker, gBattlerTarget, BattleScript_TeeterDanceLoopIncrement
+ jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_TeeterDanceOwnTempoPrevents
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_TeeterDanceSubstitutePrevents
+ jumpifstatus2 BS_TARGET, STATUS2_CONFUSION, BattleScript_TeeterDanceAlreadyConfused
+ jumpifhasnohp BS_TARGET, BattleScript_TeeterDanceLoopIncrement
accuracycheck BattleScript_TeeterDanceMissed, ACC_CURR_MOVE
- jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_TeeterDanceSafeguardProtected
+ jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_TeeterDanceSafeguardProtected
attackanimation
waitanimation
seteffectprimary
@@ -2618,8 +2620,8 @@ BattleScript_TeeterDanceDoMoveEndIncrement::
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
BattleScript_TeeterDanceLoopIncrement::
- addbyte gBankTarget, 0x1
- jumpifbytenotequal gBankTarget, gNoOfAllBanks, BattleScript_TeeterDanceLoop
+ addbyte gBattlerTarget, 0x1
+ jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_TeeterDanceLoop
end
BattleScript_TeeterDanceOwnTempoPrevents::
@@ -2641,7 +2643,7 @@ BattleScript_TeeterDanceSubstitutePrevents::
goto BattleScript_TeeterDanceDoMoveEndIncrement
BattleScript_TeeterDanceAlreadyConfused::
- various23 ATTACKER
+ various23 BS_ATTACKER
pause 0x20
printstring STRINGID_PKMNALREADYCONFUSED
waitmessage 0x40
@@ -2665,7 +2667,7 @@ BattleScript_EffectWaterSport::
goto BattleScript_MoveEnd
BattleScript_EffectPoisonFang::
- setmoveeffect EFFECT_TOXIC
+ setmoveeffect MOVE_EFFECT_TOXIC
goto BattleScript_EffectHit
BattleScript_EffectWeatherBall::
@@ -2673,32 +2675,32 @@ BattleScript_EffectWeatherBall::
goto BattleScript_EffectHit
BattleScript_EffectOverheat::
- setmoveeffect EFFECT_SP_ATK_TWO_DOWN | AFFECTS_USER | CERTAIN
+ setmoveeffect MOVE_EFFECT_SP_ATK_TWO_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
goto BattleScript_EffectHit
BattleScript_EffectTickle::
attackcanceler
attackstring
ppreduce
- jumpifstat TARGET, GREATER_THAN, ATK, 0x0, BattleScript_TickleDoMoveAnim
- jumpifstat TARGET, EQUAL, DEF, 0x0, BattleScript_CantLowerMultipleStats
+ jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_ATK, 0x0, BattleScript_TickleDoMoveAnim
+ jumpifstat BS_TARGET, CMP_EQUAL, STAT_DEF, 0x0, BattleScript_CantLowerMultipleStats
BattleScript_TickleDoMoveAnim::
accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation TARGET, 0x6, 0x5
- playstatchangeanimation TARGET, 0x2, 0x1
- setstatchanger ATK, 1, TRUE
+ playstatchangeanimation BS_TARGET, 0x6, 0x5
+ playstatchangeanimation BS_TARGET, 0x2, 0x1
+ setstatchanger STAT_ATK, 1, TRUE
statbuffchange 0x1, BattleScript_TickleTryLowerDef
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleTryLowerDef
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleTryLowerDef
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_TickleTryLowerDef::
- playstatchangeanimation TARGET, 0x4, 0x1
- setstatchanger DEF, 1, TRUE
+ playstatchangeanimation BS_TARGET, 0x4, 0x1
+ setstatchanger STAT_DEF, 1, TRUE
statbuffchange 0x1, BattleScript_TickleEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleEnd
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_TickleEnd::
@@ -2706,7 +2708,7 @@ BattleScript_TickleEnd::
BattleScript_CantLowerMultipleStats::
pause 0x20
- orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ orbyte gMoveResultFlags, MOVE_RESULT_FAILED
printstring STRINGID_STATSWONTDECREASE2
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -2715,22 +2717,22 @@ BattleScript_EffectCosmicPower::
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_CosmicPowerDoMoveAnim
- jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, 0xC, BattleScript_CosmicPowerDoMoveAnim
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
BattleScript_CosmicPowerDoMoveAnim::
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x24, 0x0
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerTrySpDef
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerTrySpDef
+ playstatchangeanimation BS_ATTACKER, 0x24, 0x0
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CosmicPowerTrySpDef
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerTrySpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CosmicPowerTrySpDef::
- setstatchanger SPDEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerEnd
+ setstatchanger STAT_SPDEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CosmicPowerEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CosmicPowerEnd::
@@ -2744,22 +2746,22 @@ BattleScript_EffectBulkUp::
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_BulkUpDoMoveAnim
- jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_CantRaiseMultipleStats
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 0xC, BattleScript_BulkUpDoMoveAnim
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_DEF, 0xC, BattleScript_CantRaiseMultipleStats
BattleScript_BulkUpDoMoveAnim::
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x6, 0x0
- setstatchanger ATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpTryDef
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpTryDef
+ playstatchangeanimation BS_ATTACKER, 0x6, 0x0
+ setstatchanger STAT_ATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_BulkUpTryDef
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpTryDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_BulkUpTryDef::
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpEnd
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_BulkUpEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_BulkUpEnd::
@@ -2769,22 +2771,22 @@ BattleScript_EffectCalmMind::
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_CalmMindDoMoveAnim
- jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, 0xC, BattleScript_CalmMindDoMoveAnim
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
BattleScript_CalmMindDoMoveAnim::
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x30, 0x0
- setstatchanger SPATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindTrySpDef
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindTrySpDef
+ playstatchangeanimation BS_ATTACKER, 0x30, 0x0
+ setstatchanger STAT_SPATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CalmMindTrySpDef
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindTrySpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CalmMindTrySpDef::
- setstatchanger SPDEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindEnd
+ setstatchanger STAT_SPDEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_CalmMindEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_CalmMindEnd::
@@ -2792,7 +2794,7 @@ BattleScript_CalmMindEnd::
BattleScript_CantRaiseMultipleStats::
pause 0x20
- orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ orbyte gMoveResultFlags, MOVE_RESULT_FAILED
printstring STRINGID_STATSWONTINCREASE2
waitmessage 0x40
goto BattleScript_MoveEnd
@@ -2801,22 +2803,22 @@ BattleScript_EffectDragonDance::
attackcanceler
attackstring
ppreduce
- jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_DragonDanceDoMoveAnim
- jumpifstat ATTACKER, EQUAL, SPEED, 0xC, BattleScript_CantRaiseMultipleStats
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 0xC, BattleScript_DragonDanceDoMoveAnim
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, 0xC, BattleScript_CantRaiseMultipleStats
BattleScript_DragonDanceDoMoveAnim::
attackanimation
waitanimation
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0xA, 0x0
- setstatchanger ATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceTrySpeed
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceTrySpeed
+ playstatchangeanimation BS_ATTACKER, 0xA, 0x0
+ setstatchanger STAT_ATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_DragonDanceTrySpeed
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceTrySpeed
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_DragonDanceTrySpeed::
- setstatchanger SPEED, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceEnd
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceEnd
+ setstatchanger STAT_SPEED, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_DragonDanceEnd
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceEnd
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_DragonDanceEnd::
@@ -2834,85 +2836,85 @@ BattleScript_EffectCamouflage::
goto BattleScript_MoveEnd
BattleScript_FaintAttacker::
- playfaintcry ATTACKER
+ playfaintcry BS_ATTACKER
pause 0x40
- dofaintanimation ATTACKER
- cleareffectsonfaint ATTACKER
+ dofaintanimation BS_ATTACKER
+ cleareffectsonfaint BS_ATTACKER
printstring STRINGID_ATTACKERFAINTED
return
BattleScript_FaintTarget::
- playfaintcry TARGET
+ playfaintcry BS_TARGET
pause 0x40
- dofaintanimation TARGET
- cleareffectsonfaint TARGET
+ dofaintanimation BS_TARGET
+ cleareffectsonfaint BS_TARGET
printstring STRINGID_TARGETFAINTED
return
BattleScript_GiveExp::
setbyte sGIVEEXP_STATE, 0x0
- getexp TARGET
+ getexp BS_TARGET
end2
BattleScript_HandleFaintedMon::
atk24 BattleScript_82DA8F6
- jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd
+ jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChooseAnother
- jumpifword NO_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonTryChooseAnother
+ jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonTryChooseAnother
printstring STRINGID_USENEXTPKMN
setbyte gBattleCommunication, 0x0
yesnobox
- jumpifbyte EQUAL, gBattleCommunication + 1, 0x0, BattleScript_FaintedMonTryChooseAnother
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0x0, BattleScript_FaintedMonTryChooseAnother
jumpifplayerran BattleScript_FaintedMonEnd
printstring STRINGID_CANTESCAPE2
BattleScript_FaintedMonTryChooseAnother::
openpartyscreen 0x3, BattleScript_FaintedMonEnd
- switchhandleorder GBANK_1, 0x2
+ switchhandleorder BS_FAINTED, 0x2
jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother
jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother
jumpifbattletype BATTLE_TYPE_x2000000, BattleScript_FaintedMonChooseAnother
jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_FaintedMonChooseAnother
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother
- jumpifword COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonChooseAnother
- jumpifbyte EQUAL, sBATTLE_STYLE, 0x1, BattleScript_FaintedMonChooseAnother
+ jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonChooseAnother
+ jumpifbyte CMP_EQUAL, sBATTLE_STYLE, 0x1, BattleScript_FaintedMonChooseAnother
jumpifcantswitch 11, BattleScript_FaintedMonChooseAnother
printstring STRINGID_ENEMYABOUTTOSWITCHPKMN
setbyte gBattleCommunication, 0x0
yesnobox
- jumpifbyte EQUAL, gBattleCommunication + 1, 0x1, BattleScript_FaintedMonChooseAnother
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0x1, BattleScript_FaintedMonChooseAnother
setatktoplayer0
openpartyscreen 0x81, BattleScript_FaintedMonChooseAnother
- switchhandleorder ATTACKER, 0x2
- jumpifbyte EQUAL, gBattleCommunication, 0x6, BattleScript_FaintedMonChooseAnother
+ switchhandleorder BS_ATTACKER, 0x2
+ jumpifbyte CMP_EQUAL, gBattleCommunication, 0x6, BattleScript_FaintedMonChooseAnother
atknameinbuff1
- resetintrimidatetracebits ATTACKER
- hpthresholds2 ATTACKER
+ resetintrimidatetracebits BS_ATTACKER
+ hpthresholds2 BS_ATTACKER
printstring STRINGID_RETURNMON
- switchoutabilities ATTACKER
+ switchoutabilities BS_ATTACKER
waitstate
returnatktoball
waitstate
- drawpartystatussummary ATTACKER
- getswitchedmondata ATTACKER
- switchindataupdate ATTACKER
- hpthresholds ATTACKER
+ drawpartystatussummary BS_ATTACKER
+ getswitchedmondata BS_ATTACKER
+ switchindataupdate BS_ATTACKER
+ hpthresholds BS_ATTACKER
printstring STRINGID_SWITCHINMON
- atk62 ATTACKER
- switchinanim ATTACKER, 0x0
+ atk62 BS_ATTACKER
+ switchinanim BS_ATTACKER, 0x0
waitstate
- switchineffects ATTACKER
+ switchineffects BS_ATTACKER
resetsentmonsvalue
BattleScript_FaintedMonChooseAnother::
- drawpartystatussummary GBANK_1
- getswitchedmondata GBANK_1
- switchindataupdate GBANK_1
- hpthresholds GBANK_1
+ drawpartystatussummary BS_FAINTED
+ getswitchedmondata BS_FAINTED
+ switchindataupdate BS_FAINTED
+ hpthresholds BS_FAINTED
printstring STRINGID_SWITCHINMON
- atk62 GBANK_1
- switchinanim GBANK_1, FALSE
+ atk62 BS_FAINTED
+ switchinanim BS_FAINTED, FALSE
waitstate
- various7 ATTACKER
- switchineffects GBANK_1
+ various7 BS_ATTACKER
+ switchineffects BS_FAINTED
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonEnd
cancelallactions
BattleScript_FaintedMonEnd::
@@ -2921,21 +2923,21 @@ BattleScript_FaintedMonEnd::
BattleScript_82DA8F6::
openpartyscreen 0x5, BattleScript_82DA8FC
BattleScript_82DA8FC::
- switchhandleorder GBANK_1, 0x0
+ switchhandleorder BS_FAINTED, 0x0
openpartyscreen 0x6, BattleScript_82DA92C
- switchhandleorder GBANK_1, 0x0
+ switchhandleorder BS_FAINTED, 0x0
BattleScript_82DA908::
- switchhandleorder GBANK_1, 0x3
- drawpartystatussummary GBANK_1
- getswitchedmondata GBANK_1
- switchindataupdate GBANK_1
- hpthresholds GBANK_1
+ switchhandleorder BS_FAINTED, 0x3
+ drawpartystatussummary BS_FAINTED
+ getswitchedmondata BS_FAINTED
+ switchindataupdate BS_FAINTED
+ hpthresholds BS_FAINTED
printstring STRINGID_SWITCHINMON
- atk62 GBANK_1
- switchinanim GBANK_1, FALSE
+ atk62 BS_FAINTED
+ switchinanim BS_FAINTED, FALSE
waitstate
switchineffects 5
- jumpifbytenotequal gBank1, gNoOfAllBanks, BattleScript_82DA908
+ jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_82DA908
BattleScript_82DA92C::
end2
@@ -2946,13 +2948,13 @@ BattleScript_LocalTrainerBattleWon::
BattleScript_LocalTwoTrainersDefeated::
printstring STRINGID_TWOENEMIESDEFEATED
BattleScript_LocalBattleWonLoseTexts::
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1LOSETEXT
jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleWonReward
- trainerslideout IDENTITY_OPPONENT_MON1
+ trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2LOSETEXT
BattleScript_LocalBattleWonReward::
@@ -2969,7 +2971,7 @@ BattleScript_LocalBattleLost::
jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText
jumpifbattletype BATTLE_TYPE_x4000000, BattleScript_LocalBattleLostPrintTrainersWinText
jumpifbattletype BATTLE_TYPE_EREADER_TRAINER, BattleScript_LocalBattleLostEnd
- jumpifhalfword EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_LocalBattleLostEnd
+ jumpifhalfword CMP_EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_LocalBattleLostEnd
BattleScript_LocalBattleLostPrintWhiteOut::
printstring STRINGID_PLAYERWHITEOUT
waitmessage 0x40
@@ -2978,38 +2980,38 @@ BattleScript_LocalBattleLostPrintWhiteOut::
BattleScript_LocalBattleLostEnd::
end2
BattleScript_CheckDomeDrew::
- jumpifbyte EQUAL, gBattleOutcome, DREW, BattleScript_LocalBattleLostEnd_
+ jumpifbyte CMP_EQUAL, gBattleOutcome, B_OUTCOME_DREW, BattleScript_LocalBattleLostEnd_
BattleScript_LocalBattleLostPrintTrainersWinText::
jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostPrintWhiteOut
- returnopponentmon1toball ATTACKER
+ returnopponentmon1toball BS_ATTACKER
waitstate
- returnopponentmon2toball ATTACKER
+ returnopponentmon2toball BS_ATTACKER
waitstate
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1WINTEXT
jumpifbattletype BATTLE_TYPE_x800000, BattleScript_LocalBattleLostDoTrainer2WinText
jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleLostEnd_
BattleScript_LocalBattleLostDoTrainer2WinText::
- trainerslideout IDENTITY_OPPONENT_MON1
+ trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2WINTEXT
BattleScript_LocalBattleLostEnd_::
end2
BattleScript_82DAA0B::
- returnopponentmon1toball ATTACKER
+ returnopponentmon1toball BS_ATTACKER
waitstate
- returnopponentmon2toball ATTACKER
+ returnopponentmon2toball BS_ATTACKER
waitstate
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1WINTEXT
- trainerslideout IDENTITY_OPPONENT_MON1
+ trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2WINTEXT
jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_82DAA31
@@ -3029,15 +3031,15 @@ BattleScript_LinkBattleWonOrLostWaitEnd::
end2
BattleScript_82DAA5C::
- playtrainerdefeatbgm ATTACKER
+ playtrainerdefeatbgm BS_ATTACKER
printstring STRINGID_BATTLEEND
waitmessage 0x40
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1LOSETEXT
- trainerslideout IDENTITY_OPPONENT_MON1
+ trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2LOSETEXT
jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_82DAA83
@@ -3054,13 +3056,13 @@ BattleScript_FrontierTrainerBattleWon::
BattleScript_82DAAAB::
printstring STRINGID_TWOENEMIESDEFEATED
BattleScript_82DAAAE::
- trainerslidein ATTACKER
+ trainerslidein BS_ATTACKER
waitstate
printstring STRINGID_TRAINER1LOSETEXT
jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAACB
- trainerslideout IDENTITY_OPPONENT_MON1
+ trainerslideout B_POSITION_OPPONENT_LEFT
waitstate
- trainerslidein GBANK_1
+ trainerslidein BS_FAINTED
waitstate
printstring STRINGID_TRAINER2LOSETEXT
BattleScript_82DAACB::
@@ -3070,7 +3072,7 @@ BattleScript_82DAADA::
end2
BattleScript_SmokeBallEscape::
- playanimation ATTACKER, ANIM_SMOKEBALL_ESCAPE, NULL
+ playanimation BS_ATTACKER, B_ANIM_SMOKEBALL_ESCAPE, NULL
printstring STRINGID_PKMNFLEDUSINGITS
waitmessage 0x40
end2
@@ -3108,7 +3110,7 @@ BattleScript_PrintFullBox::
endselectionscript
BattleScript_ActionSwitch::
- hpthresholds2 ATTACKER
+ hpthresholds2 BS_ATTACKER
printstring STRINGID_RETURNMON
setbyte sDMG_MULTIPLIER, 0x2
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_PursuitSwitchDmgSetMultihit
@@ -3124,20 +3126,20 @@ BattleScript_PursuitSwitchDmgLoop::
atk5F
BattleScript_DoSwitchOut::
decrementmultihit BattleScript_PursuitSwitchDmgLoop
- switchoutabilities ATTACKER
+ switchoutabilities BS_ATTACKER
waitstate
returnatktoball
waitstate
- drawpartystatussummary ATTACKER
- switchhandleorder ATTACKER, 0x1
- getswitchedmondata ATTACKER
- switchindataupdate ATTACKER
- hpthresholds ATTACKER
+ drawpartystatussummary BS_ATTACKER
+ switchhandleorder BS_ATTACKER, 0x1
+ getswitchedmondata BS_ATTACKER
+ switchindataupdate BS_ATTACKER
+ hpthresholds BS_ATTACKER
printstring STRINGID_SWITCHINMON
- atk62 ATTACKER
- switchinanim ATTACKER, FALSE
+ atk62 BS_ATTACKER
+ switchinanim BS_ATTACKER, FALSE
waitstate
- switchineffects ATTACKER
+ switchineffects BS_ATTACKER
setbyte sMOVEEND_STATE, 0x4
moveend 0x1, 0x0
setbyte sMOVEEND_STATE, 0xF
@@ -3155,21 +3157,21 @@ BattleScript_PursuitDmgOnSwitchOut::
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
critmessage
waitmessage 0x40
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
setbyte sMOVEEND_STATE, 0x3
moveend 0x2, 0x6
- various4 TARGET
- jumpifbyte EQUAL, gBattleCommunication, 0x0, BattleScript_PursuitDmgOnSwitchOutRet
+ various4 BS_TARGET
+ jumpifbyte CMP_EQUAL, gBattleCommunication, 0x0, BattleScript_PursuitDmgOnSwitchOutRet
setbyte sGIVEEXP_STATE, 0x0
- getexp TARGET
+ getexp BS_TARGET
BattleScript_PursuitDmgOnSwitchOutRet::
return
@@ -3209,7 +3211,7 @@ BattleScript_LearnedNewMove::
fanfare MUS_FANFA1
printstring STRINGID_PKMNLEARNEDMOVE
waitmessage 0x40
- updatechoicemoveonlvlup ATTACKER
+ updatechoicemoveonlvlup BS_ATTACKER
goto BattleScript_TryLearnMoveLoop
BattleScript_LearnMoveReturn::
return
@@ -3217,33 +3219,33 @@ BattleScript_LearnMoveReturn::
BattleScript_RainContinuesOrEnds::
printfromtable gRainContinuesStringIds
waitmessage 0x40
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_RainContinuesOrEndsEnd
- playanimation ATTACKER, ANIM_RAIN_CONTINUES, NULL
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_RainContinuesOrEndsEnd
+ playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES, NULL
BattleScript_RainContinuesOrEndsEnd::
end2
BattleScript_DamagingWeatherContinues::
printfromtable gSandStormHailContinuesStringIds
waitmessage 0x40
- playanimation2 ATTACKER, sANIM_ARG1, NULL
+ playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
setbyte gBattleCommunication, 0x0
BattleScript_DamagingWeatherLoop::
- copyarraywithindex gBankAttacker, gBanksByTurnOrder, gBattleCommunication, 0x1
+ copyarraywithindex gBattlerAttacker, gBattleTurnOrder, gBattleCommunication, 0x1
weatherdamage
- jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_DamagingWeatherLoopIncrement
+ jumpifword CMP_EQUAL, gBattleMoveDamage, 0x0, BattleScript_DamagingWeatherLoopIncrement
printfromtable gSandStormHailDmgStringIds
waitmessage 0x40
orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE
effectivenesssound
- hitanimation ATTACKER
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ hitanimation BS_ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
atk24 BattleScript_DamagingWeatherLoopIncrement
BattleScript_DamagingWeatherLoopIncrement::
- jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
+ jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
addbyte gBattleCommunication, 0x1
- jumpifbytenotequal gBattleCommunication, gNoOfAllBanks, BattleScript_DamagingWeatherLoop
+ jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamagingWeatherLoop
BattleScript_DamagingWeatherContinuesEnd::
bicword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE
end2
@@ -3256,7 +3258,7 @@ BattleScript_SandStormHailEnds::
BattleScript_SunlightContinues::
printstring STRINGID_SUNLIGHTSTRONG
waitmessage 0x40
- playanimation ATTACKER, ANIM_SUN_CONTINUES, NULL
+ playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES, NULL
end2
BattleScript_SunlightFaded::
@@ -3267,7 +3269,7 @@ BattleScript_SunlightFaded::
BattleScript_OverworldWeatherStarts::
printfromtable gWeatherContinuesStringIds
waitmessage 0x40
- playanimation2 ATTACKER, sANIM_ARG1, NULL
+ playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
end3
BattleScript_SideStatusWoreOff::
@@ -3288,12 +3290,12 @@ BattleScript_SafeguardEnds::
end2
BattleScript_LeechSeedTurnDrain::
- playanimation ATTACKER, ANIM_LEECH_SEED_DRAIN, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_LEECH_SEED_DRAIN, sB_ANIM_ARG1
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
copyword gBattleMoveDamage, gHpDealt
- jumpifability ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_LeechSeedTurnPrintLiquidOoze
+ jumpifability BS_ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_LeechSeedTurnPrintLiquidOoze
manipulatedamage ATK80_DMG_CHANGE_SIGN
setbyte cMULTISTRING_CHOOSER, 0x3
goto BattleScript_LeechSeedTurnPrintAndUpdateHp
@@ -3301,12 +3303,12 @@ BattleScript_LeechSeedTurnPrintLiquidOoze::
setbyte cMULTISTRING_CHOOSER, 0x4
BattleScript_LeechSeedTurnPrintAndUpdateHp::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printfromtable gLeechSeedStringIds
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
end2
BattleScript_BideStoringEnergy::
@@ -3316,32 +3318,32 @@ BattleScript_BideStoringEnergy::
BattleScript_BideAttack::
attackcanceler
- setmoveeffect EFFECT_CHARGING
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_CHARGING
+ clearstatusfromeffect BS_ATTACKER
printstring STRINGID_PKMNUNLEASHEDENERGY
waitmessage 0x40
accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE
typecalc
- bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE
copyword gBattleMoveDamage, sBIDE_DMG
adjustsetdamage
- setbyte sANIM_TURN, 0x1
+ setbyte sB_ANIM_TURN, 0x1
attackanimation
waitanimation
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_BideNoEnergyToAttack::
attackcanceler
- setmoveeffect EFFECT_CHARGING
- clearstatusfromeffect ATTACKER
+ setmoveeffect MOVE_EFFECT_CHARGING
+ clearstatusfromeffect BS_ATTACKER
printstring STRINGID_PKMNUNLEASHEDENERGY
waitmessage 0x40
goto BattleScript_ButItFailed
@@ -3349,20 +3351,20 @@ BattleScript_BideNoEnergyToAttack::
BattleScript_SuccessForceOut::
attackanimation
waitanimation
- switchoutabilities TARGET
- returntoball TARGET
+ switchoutabilities BS_TARGET
+ returntoball BS_TARGET
waitstate
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_TrainerBattleForceOut
- setoutcomeonteleport ATTACKER
+ setoutcomeonteleport BS_ATTACKER
finishaction
BattleScript_TrainerBattleForceOut::
- getswitchedmondata TARGET
- switchindataupdate TARGET
- switchinanim TARGET, FALSE
+ getswitchedmondata BS_TARGET
+ switchindataupdate BS_TARGET
+ switchinanim BS_TARGET, FALSE
waitstate
printstring STRINGID_PKMNWASDRAGGEDOUT
- switchineffects TARGET
+ switchineffects BS_TARGET
goto BattleScript_MoveEnd
BattleScript_MistProtected::
@@ -3406,55 +3408,55 @@ BattleScript_DestinyBondTakesLife::
printstring STRINGID_PKMNTOOKFOE
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
return
BattleScript_SpikesOnAttacker::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
call BattleScript_PrintHurtBySpikes
- tryfaintmon ATTACKER, FALSE, NULL
- tryfaintmon ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted
+ tryfaintmon BS_ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted
return
BattleScript_SpikesOnAttackerFainted::
setbyte sGIVEEXP_STATE, 0x0
- getexp ATTACKER
+ getexp BS_ATTACKER
setbyte sMOVEEND_STATE, 0x0
moveend 0x0, 0x0
goto BattleScript_HandleFaintedMon
BattleScript_SpikesOnTarget::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
call BattleScript_PrintHurtBySpikes
- tryfaintmon TARGET, FALSE, NULL
- tryfaintmon TARGET, TRUE, BattleScript_SpikesOnTargetFainted
+ tryfaintmon BS_TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, TRUE, BattleScript_SpikesOnTargetFainted
return
BattleScript_SpikesOnTargetFainted::
setbyte sGIVEEXP_STATE, 0x0
- getexp TARGET
+ getexp BS_TARGET
setbyte sMOVEEND_STATE, 0x0
moveend 0x0, 0x0
goto BattleScript_HandleFaintedMon
-BattleScript_SpikesOngBank1::
+BattleScript_SpikesOnFaintedBattler::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate GBANK_1
- datahpupdate GBANK_1
+ healthbarupdate BS_FAINTED
+ datahpupdate BS_FAINTED
call BattleScript_PrintHurtBySpikes
- tryfaintmon GBANK_1, FALSE, NULL
- tryfaintmon GBANK_1, TRUE, BattleScript_SpikesOngBank1Fainted
+ tryfaintmon BS_FAINTED, FALSE, NULL
+ tryfaintmon BS_FAINTED, TRUE, BattleScript_SpikesOnFaintedBattlerFainted
return
-BattleScript_SpikesOngBank1Fainted::
+BattleScript_SpikesOnFaintedBattlerFainted::
setbyte sGIVEEXP_STATE, 0x0
- getexp GBANK_1
+ getexp BS_FAINTED
setbyte sMOVEEND_STATE, 0x0
moveend 0x0, 0x0
goto BattleScript_HandleFaintedMon
@@ -3468,9 +3470,9 @@ BattleScript_PerishSongTakesLife::
printstring STRINGID_PKMNPERISHCOUNTFELL
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
end2
BattleScript_PerishSongCountGoesDown::
@@ -3479,36 +3481,36 @@ BattleScript_PerishSongCountGoesDown::
end2
BattleScript_AllStatsUp::
- jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_AllStatsUpAtk
- jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_AllStatsUpAtk
- jumpifstat ATTACKER, LESS_THAN, SPEED, 0xC, BattleScript_AllStatsUpAtk
- jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_AllStatsUpAtk
- jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_AllStatsUpRet
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPEED, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 0xC, BattleScript_AllStatsUpRet
BattleScript_AllStatsUpAtk::
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x3E, 0x0
- setstatchanger ATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpDef
+ playstatchangeanimation BS_ATTACKER, 0x3E, 0x0
+ setstatchanger STAT_ATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpDef::
- setstatchanger DEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpeed
+ setstatchanger STAT_DEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpeed
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpSpeed::
- setstatchanger SPEED, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpAtk
+ setstatchanger STAT_SPEED, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpAtk
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpSpAtk::
- setstatchanger SPATK, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpDef
+ setstatchanger STAT_SPATK, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpDef
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpSpDef::
- setstatchanger SPDEF, 1, FALSE
- statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpRet
+ setstatchanger STAT_SPDEF, 1, FALSE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_AllStatsUpRet
printfromtable gStatUpStringIds
waitmessage 0x40
BattleScript_AllStatsUpRet::
@@ -3521,7 +3523,7 @@ BattleScript_RapidSpinAway::
BattleScript_WrapFree::
printstring STRINGID_PKMNGOTFREE
waitmessage 0x40
- copybyte gBankTarget, sBANK
+ copybyte gBattlerTarget, sBANK
return
BattleScript_LeechSeedFree::
@@ -3537,43 +3539,43 @@ BattleScript_SpikesFree::
BattleScript_MonTookFutureAttack::
printstring STRINGID_PKMNTOOKATTACK
waitmessage 0x40
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_CheckDoomDesireMiss
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_CheckDoomDesireMiss
accuracycheck BattleScript_FutureAttackMiss, MOVE_FUTURE_SIGHT
goto BattleScript_FutureAttackAnimate
BattleScript_CheckDoomDesireMiss::
accuracycheck BattleScript_FutureAttackMiss, MOVE_DOOM_DESIRE
BattleScript_FutureAttackAnimate::
adjustnormaldamage2
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_FutureHitAnimDoomDesire
- playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_FutureHitAnimDoomDesire
+ playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT, NULL
goto BattleScript_DoFutureAttackHit
BattleScript_FutureHitAnimDoomDesire::
- playanimation ATTACKER, ANIM_DOOM_DESIRE_HIT, NULL
+ playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT, NULL
BattleScript_DoFutureAttackHit::
effectivenesssound
- hitanimation TARGET
+ hitanimation BS_TARGET
waitstate
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
resultmessage
waitmessage 0x40
- tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon BS_TARGET, FALSE, NULL
atk24 BattleScript_FutureAttackEnd
BattleScript_FutureAttackEnd::
setbyte sMOVEEND_STATE, 0x0
moveend 0x1, 0x0
setbyte sMOVEEND_STATE, 0xB
moveend 0x2, 0xE
- setbyte gBattleMoveFlags, 0
+ setbyte gMoveResultFlags, 0
end2
BattleScript_FutureAttackMiss::
pause 0x20
- setbyte gBattleMoveFlags, 0
- orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ setbyte gMoveResultFlags, 0
+ orbyte gMoveResultFlags, MOVE_RESULT_FAILED
resultmessage
waitmessage 0x40
- setbyte gBattleMoveFlags, 0
+ setbyte gMoveResultFlags, 0
end2
BattleScript_NoMovesLeft::
@@ -3619,12 +3621,12 @@ BattleScript_SelectingNotAllowedMoveTauntInPalace::
BattleScript_WishComesTrue::
trywish 0x1, BattleScript_WishButFullHp
- playanimation TARGET, ANIM_WISH_HEAL, NULL
+ playanimation BS_TARGET, B_ANIM_WISH_HEAL, NULL
printstring STRINGID_PKMNWISHCAMETRUE
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage 0x40
end2
@@ -3638,12 +3640,12 @@ BattleScript_WishButFullHp::
end2
BattleScript_IngrainTurnHeal::
- playanimation ATTACKER, ANIM_INGRAIN_HEAL, NULL
+ playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL, NULL
printstring STRINGID_PKMNABSORBEDNUTRIENTS
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
end2
BattleScript_PrintMonIsRooted::
@@ -3654,25 +3656,25 @@ BattleScript_PrintMonIsRooted::
BattleScript_AtkDefDown::
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x6, 0xD
- playstatchangeanimation ATTACKER, 0x2, 0x9
- setstatchanger ATK, 1, TRUE
- statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB144
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144
+ playstatchangeanimation BS_ATTACKER, 0x6, 0xD
+ playstatchangeanimation BS_ATTACKER, 0x2, 0x9
+ setstatchanger STAT_ATK, 1, TRUE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | 0x1, BattleScript_82DB144
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DB144::
- playstatchangeanimation ATTACKER, 0x4, 0x9
- setstatchanger DEF, 1, TRUE
- statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB167
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167
+ playstatchangeanimation BS_ATTACKER, 0x4, 0x9
+ setstatchanger STAT_DEF, 1, TRUE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | 0x1, BattleScript_82DB167
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DB167::
return
BattleScript_KnockedOff::
- playanimation TARGET, ANIM_ITEM_KNOCKOFF, NULL
+ playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF, NULL
printstring STRINGID_PKMNKNOCKEDOFF
waitmessage 0x40
return
@@ -3702,14 +3704,14 @@ BattleScript_MagicCoatBounce::
printstring STRINGID_PKMNMOVEBOUNCED
waitmessage 0x40
orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000
- setmagiccoattarget ATTACKER
+ setmagiccoattarget BS_ATTACKER
return
BattleScript_SnatchedMove::
attackstring
ppreduce
snatchsetbanks
- playanimation TARGET, ANIM_SNATCH_MOVE, NULL
+ playanimation BS_TARGET, B_ANIM_SNATCH_MOVE, NULL
printstring STRINGID_PKMNSNATCHEDMOVE
waitmessage 0x40
orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000
@@ -3728,10 +3730,10 @@ BattleScript_OneHitKOMsg::
BattleScript_SAtkDown2::
setbyte sFIELD_1B, 0x0
- playstatchangeanimation ATTACKER, 0x10, 0xB
- setstatchanger SPATK, 2, TRUE
- statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB1FE
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE
+ playstatchangeanimation BS_ATTACKER, 0x10, 0xB
+ setstatchanger STAT_SPATK, 2, TRUE
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN | 0x1, BattleScript_82DB1FE
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE
printfromtable gStatDownStringIds
waitmessage 0x40
BattleScript_82DB1FE::
@@ -3740,7 +3742,7 @@ BattleScript_82DB1FE::
BattleScript_FocusPunchSetUp::
printstring STRINGID_EMPTYSTRING3
waitmessage 0x1
- playanimation ATTACKER, ANIM_x14, NULL
+ playanimation BS_ATTACKER, B_ANIM_x14, NULL
printstring STRINGID_PKMNTIGHTENINGFOCUS
waitmessage 0x40
end2
@@ -3748,32 +3750,32 @@ BattleScript_FocusPunchSetUp::
BattleScript_MoveUsedIsAsleep::
printstring STRINGID_PKMNFASTASLEEP
waitmessage 0x40
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_MoveUsedWokeUp::
bicword gHitMarker, HITMARKER_x10
printfromtable gWokeUpStringIds
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
return
BattleScript_MonWokeUpInUproar::
printstring STRINGID_PKMNWOKEUPINUPROAR
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
end2
BattleScript_PoisonTurnDmg::
printstring STRINGID_PKMNHURTBYPOISON
waitmessage 0x40
BattleScript_DoStatusTurnDmg::
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
BattleScript_DoTurnDmg::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- tryfaintmon ATTACKER, FALSE, NULL
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ tryfaintmon BS_ATTACKER, FALSE, NULL
atk24 BattleScript_DoTurnDmgEnd
BattleScript_DoTurnDmgEnd::
end2
@@ -3786,26 +3788,26 @@ BattleScript_BurnTurnDmg::
BattleScript_MoveUsedIsFrozen::
printstring STRINGID_PKMNISFROZEN
waitmessage 0x40
- statusanimation ATTACKER
+ statusanimation BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_MoveUsedUnfroze::
printfromtable gGotDefrostedStringIds
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
return
BattleScript_DefrostedViaFireMove::
printstring STRINGID_PKMNWASDEFROSTED
waitmessage 0x40
- updatestatusicon TARGET
+ updatestatusicon BS_TARGET
return
BattleScript_MoveUsedIsParalyzed::
printstring STRINGID_PKMNISPARALYZED
waitmessage 0x40
- statusanimation ATTACKER
- cancelmultiturnmoves ATTACKER
+ statusanimation BS_ATTACKER
+ cancelmultiturnmoves BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_MoveUsedFlinched::
@@ -3819,7 +3821,7 @@ BattleScript_PrintUproarOverTurns::
end2
BattleScript_ThrashConfuses::
- chosenstatus2animation ATTACKER, STATUS2_CONFUSION
+ chosenstatus2animation BS_ATTACKER, STATUS2_CONFUSION
printstring STRINGID_PKMNFATIGUECONFUSION
waitmessage 0x40
end2
@@ -3827,22 +3829,22 @@ BattleScript_ThrashConfuses::
BattleScript_MoveUsedIsConfused::
printstring STRINGID_PKMNISCONFUSED
waitmessage 0x40
- status2animation ATTACKER, STATUS2_CONFUSION
- jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_MoveUsedIsConfusedRet
+ status2animation BS_ATTACKER, STATUS2_CONFUSION
+ jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_MoveUsedIsConfusedRet
BattleScript_DoSelfConfusionDmg::
- cancelmultiturnmoves ATTACKER
+ cancelmultiturnmoves BS_ATTACKER
adjustnormaldamage2
printstring STRINGID_ITHURTCONFUSION
waitmessage 0x40
effectivenesssound
- hitanimation ATTACKER
+ hitanimation BS_ATTACKER
waitstate
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
resultmessage
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
goto BattleScript_MoveEnd
BattleScript_MoveUsedIsConfusedRet::
return
@@ -3858,7 +3860,7 @@ BattleScript_PrintPayDayMoneyString::
return
BattleScript_WrapTurnDmg::
- playanimation ATTACKER, ANIM_TURN_TRAP, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_TURN_TRAP, sB_ANIM_ARG1
printstring STRINGID_PKMNHURTBY
waitmessage 0x40
goto BattleScript_DoTurnDmg
@@ -3871,7 +3873,7 @@ BattleScript_WrapEnds::
BattleScript_MoveUsedIsInLove::
printstring STRINGID_PKMNINLOVE
waitmessage 0x40
- status2animation ATTACKER, STATUS2_INFATUATION
+ status2animation BS_ATTACKER, STATUS2_INFATUATION
return
BattleScript_MoveUsedIsParalyzedCantAttack::
@@ -3882,59 +3884,59 @@ BattleScript_MoveUsedIsParalyzedCantAttack::
BattleScript_NightmareTurnDmg::
printstring STRINGID_PKMNLOCKEDINNIGHTMARE
waitmessage 0x40
- status2animation ATTACKER, STATUS2_NIGHTMARE
+ status2animation BS_ATTACKER, STATUS2_NIGHTMARE
goto BattleScript_DoTurnDmg
BattleScript_CurseTurnDmg::
printstring STRINGID_PKMNAFFLICTEDBYCURSE
waitmessage 0x40
- status2animation ATTACKER, STATUS2_CURSED
+ status2animation BS_ATTACKER, STATUS2_CURSED
goto BattleScript_DoTurnDmg
BattleScript_TargetPRLZHeal::
printstring STRINGID_PKMNHEALEDPARALYSIS
waitmessage 0x40
- updatestatusicon TARGET
+ updatestatusicon BS_TARGET
return
BattleScript_MoveEffectSleep::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gFellAsleepStringIds
waitmessage 0x40
BattleScript_UpdateEffectStatusIconRet::
- updatestatusicon EFFECT_BANK
+ updatestatusicon BS_EFFECT_BATTLER
waitstate
return
BattleScript_YawnMakesAsleep::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printstring STRINGID_PKMNFELLASLEEP
waitmessage 0x40
- updatestatusicon EFFECT_BANK
+ updatestatusicon BS_EFFECT_BATTLER
waitstate
- makevisible EFFECT_BANK
+ makevisible BS_EFFECT_BATTLER
end2
BattleScript_MoveEffectPoison::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gGotPoisonedStringIds
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
BattleScript_MoveEffectBurn::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gGotBurnedStringIds
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
BattleScript_MoveEffectFreeze::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gGotFrozenStringIds
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
BattleScript_MoveEffectParalysis::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printfromtable gGotParalyzedStringIds
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
@@ -3945,7 +3947,7 @@ BattleScript_MoveEffectUproar::
return
BattleScript_MoveEffectToxic::
- statusanimation EFFECT_BANK
+ statusanimation BS_EFFECT_BATTLER
printstring STRINGID_PKMNBADLYPOISONED
waitmessage 0x40
goto BattleScript_UpdateEffectStatusIconRet
@@ -3961,26 +3963,26 @@ BattleScript_MoveEffectWrap::
return
BattleScript_MoveEffectConfusion::
- chosenstatus2animation EFFECT_BANK, STATUS2_CONFUSION
+ chosenstatus2animation BS_EFFECT_BATTLER, STATUS2_CONFUSION
printstring STRINGID_PKMNWASCONFUSED
waitmessage 0x40
return
BattleScript_MoveEffectRecoil33::
jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil33
- jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End
+ jumpifability BS_ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End
BattleScript_DoRecoil33::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHITWITHRECOIL
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
BattleScript_Recoil33End::
return
BattleScript_ItemSteal::
- playanimation TARGET, ANIM_ITEM_STEAL, NULL
+ playanimation BS_TARGET, B_ANIM_ITEM_STEAL, NULL
printstring STRINGID_PKMNSTOLEITEM
waitmessage 0x40
return
@@ -3989,12 +3991,12 @@ BattleScript_DrizzleActivates::
pause 0x20
printstring STRINGID_PKMNMADEITRAIN
waitstate
- playanimation BANK0, ANIM_RAIN_CONTINUES, NULL
+ playanimation BS_BANK_0, B_ANIM_RAIN_CONTINUES, NULL
call BattleScript_WeatherFormChanges
end3
BattleScript_SpeedBoostActivates::
- playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printstring STRINGID_PKMNRAISEDSPEED
waitmessage 0x40
end3
@@ -4009,22 +4011,22 @@ BattleScript_RainDishActivates::
printstring STRINGID_PKMNSXRESTOREDHPALITTLE2
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
end3
BattleScript_SandstreamActivates::
pause 0x20
printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM
waitstate
- playanimation BANK0, ANIM_SANDSTORM_CONTINUES, NULL
+ playanimation BS_BANK_0, B_ANIM_SANDSTORM_CONTINUES, NULL
call BattleScript_WeatherFormChanges
end3
BattleScript_ShedSkinActivates::
printstring STRINGID_PKMNSXCUREDYPROBLEM
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
end3
BattleScript_WeatherFormChanges::
@@ -4032,7 +4034,7 @@ BattleScript_WeatherFormChanges::
BattleScript_WeatherFormChangesLoop::
trycastformdatachange
addbyte sBANK, 0x1
- jumpifbytenotequal sBANK, gNoOfAllBanks, BattleScript_WeatherFormChangesLoop
+ jumpifbytenotequal sBANK, gBattlersCount, BattleScript_WeatherFormChangesLoop
return
BattleScript_CastformChange::
@@ -4053,22 +4055,22 @@ BattleScript_82DB4B8::
BattleScript_82DB4BE::
pause 0x20
BattleScript_82DB4C1::
- setbyte gBankTarget, 0x0
- setstatchanger ATK, 1, TRUE
+ setbyte gBattlerTarget, 0x0
+ setstatchanger STAT_ATK, 1, TRUE
BattleScript_82DB4CD::
trygetintimidatetarget BattleScript_82DB51B
- jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DB510
- jumpifability TARGET, ABILITY_CLEAR_BODY, BattleScript_82DB51C
- jumpifability TARGET, ABILITY_HYPER_CUTTER, BattleScript_82DB51C
- jumpifability TARGET, ABILITY_WHITE_SMOKE, BattleScript_82DB51C
+ jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_82DB510
+ jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_82DB51C
+ jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_82DB51C
+ jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_82DB51C
statbuffchange 0x21, BattleScript_82DB510
- jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DB510
+ jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DB510
setgraphicalstatchangevalues
- playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1
printstring STRINGID_PKMNCUTSATTACKWITH
waitmessage 0x40
BattleScript_82DB510::
- addbyte gBankTarget, 0x1
+ addbyte gBattlerTarget, 0x1
goto BattleScript_82DB4CD
BattleScript_82DB51B::
return
@@ -4083,7 +4085,7 @@ BattleScript_DroughtActivates::
pause 0x20
printstring STRINGID_PKMNSXINTENSIFIEDSUN
waitstate
- playanimation BANK0, ANIM_SUN_CONTINUES, NULL
+ playanimation BS_BANK_0, B_ANIM_SUN_CONTINUES, NULL
call BattleScript_WeatherFormChanges
end3
@@ -4113,11 +4115,11 @@ BattleScript_MoveHPDrain::
attackstring
pause 0x20
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate TARGET
- datahpupdate TARGET
+ healthbarupdate BS_TARGET
+ datahpupdate BS_TARGET
printstring STRINGID_PKMNRESTOREDHPUSING
waitmessage 0x40
- orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED
+ orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE
goto BattleScript_MoveEnd
BattleScript_MonMadeMoveUseless_PPLoss::
@@ -4127,7 +4129,7 @@ BattleScript_MonMadeMoveUseless::
pause 0x20
printstring STRINGID_PKMNSXMADEYUSELESS
waitmessage 0x40
- orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED
+ orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE
goto BattleScript_MoveEnd
BattleScript_FlashFireBoost_PPLoss::
@@ -4215,15 +4217,15 @@ BattleScript_ColorChangeActivates::
BattleScript_RoughSkinActivates::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHURTSWITH
waitmessage 0x40
- tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon BS_ATTACKER, FALSE, NULL
return
BattleScript_CuteCharmActivates::
- status2animation ATTACKER, STATUS2_INFATUATION
+ status2animation BS_ATTACKER, STATUS2_INFATUATION
printstring STRINGID_PKMNSXINFATUATEDY
waitmessage 0x40
return
@@ -4247,7 +4249,7 @@ BattleScript_NoItemSteal::
BattleScript_AbilityCuredStatus::
printstring STRINGID_PKMNSXCUREDITSYPROBLEM
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
return
BattleScript_82DB695::
@@ -4263,9 +4265,9 @@ BattleScript_IgnoresAndUsesRandomMove::
jumptorandomattack FALSE
BattleScript_MoveUsedLoafingAround::
- jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x4, BattleScript_82DB6C7
+ jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0x4, BattleScript_82DB6C7
setbyte gBattleCommunication, 0x0
- various24 ATTACKER
+ various24 BS_ATTACKER
setbyte cMULTISTRING_CHOOSER, 0x4
BattleScript_82DB6C7::
printfromtable gInobedientStringIds
@@ -4277,7 +4279,7 @@ BattleScript_82DB6C7::
BattleScript_IgnoresAndFallsAsleep::
printstring STRINGID_PKMNBEGANTONAP
waitmessage 0x40
- setmoveeffect EFFECT_SLEEP | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_SLEEP | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
setbyte sMOVEEND_STATE, 0x0
moveend 0x2, 0x10
@@ -4289,7 +4291,7 @@ BattleScript_82DB6F0::
goto BattleScript_DoSelfConfusionDmg
BattleScript_SubstituteFade::
- playanimation TARGET, ANIM_SUBSTITUTE_FADE, NULL
+ playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE, NULL
printstring STRINGID_PKMNSUBSTITUTEFADED
return
@@ -4298,11 +4300,11 @@ BattleScript_BerryCurePrlzEnd2::
end2
BattleScript_BerryCureParRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMCUREDPARALYSIS
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCurePsnEnd2::
@@ -4310,11 +4312,11 @@ BattleScript_BerryCurePsnEnd2::
end2
BattleScript_BerryCurePsnRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMCUREDPOISON
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureBrnEnd2::
@@ -4322,11 +4324,11 @@ BattleScript_BerryCureBrnEnd2::
end2
BattleScript_BerryCureBrnRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMHEALEDBURN
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureFrzEnd2::
@@ -4334,11 +4336,11 @@ BattleScript_BerryCureFrzEnd2::
end2
BattleScript_BerryCureFrzRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMDEFROSTEDIT
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureSlpEnd2::
@@ -4346,11 +4348,11 @@ BattleScript_BerryCureSlpEnd2::
end2
BattleScript_BerryCureSlpRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMWOKEIT
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureConfusionEnd2::
@@ -4358,10 +4360,10 @@ BattleScript_BerryCureConfusionEnd2::
end2
BattleScript_BerryCureConfusionRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMSNAPPEDOUT
waitmessage 0x40
- removeitem SCRIPTING_BANK
+ removeitem BS_SCRIPTING
return
BattleScript_BerryCureChosenStatusEnd2::
@@ -4369,11 +4371,11 @@ BattleScript_BerryCureChosenStatusEnd2::
end2
BattleScript_BerryCureChosenStatusRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printfromtable gBerryEffectStringIds
waitmessage 0x40
- updatestatusicon SCRIPTING_BANK
- removeitem SCRIPTING_BANK
+ updatestatusicon BS_SCRIPTING
+ removeitem BS_SCRIPTING
return
BattleScript_WhiteHerbEnd2::
@@ -4381,27 +4383,27 @@ BattleScript_WhiteHerbEnd2::
end2
BattleScript_WhiteHerbRet::
- playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDSTATUS
waitmessage 0x40
- removeitem SCRIPTING_BANK
+ removeitem BS_SCRIPTING
return
BattleScript_ItemHealHP_RemoveItem::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
- removeitem ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_BerryPPHealEnd2::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDPP
waitmessage 0x40
- removeitem ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_ItemHealHP_End2::
@@ -4409,12 +4411,12 @@ BattleScript_ItemHealHP_End2::
end2
BattleScript_ItemHealHP_Ret::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
return
BattleScript_SelectingNotAllowedMoveChoiceItem::
@@ -4422,39 +4424,39 @@ BattleScript_SelectingNotAllowedMoveChoiceItem::
endselectionscript
BattleScript_HangedOnMsg::
- playanimation TARGET, ANIM_HANGED_ON, NULL
+ playanimation BS_TARGET, B_ANIM_HANGED_ON, NULL
printstring STRINGID_PKMNHUNGONWITHX
waitmessage 0x40
return
BattleScript_BerryConfuseHealEnd2::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage 0x40
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_FORXCOMMAYZ
waitmessage 0x40
- setmoveeffect EFFECT_CONFUSION | AFFECTS_USER
+ setmoveeffect MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER
seteffectprimary
- removeitem ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_BerryStatRaiseEnd2::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
- statbuffchange AFFECTS_USER | 0x1, BattleScript_82DB85B
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
+ statbuffchange MOVE_EFFECT_AFFECTS_USER | 0x1, BattleScript_82DB85B
BattleScript_82DB85B::
setbyte cMULTISTRING_CHOOSER, 0x4
call BattleScript_StatUp
- removeitem ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_BerryFocusEnergyEnd2::
- playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL
printstring STRINGID_PKMNUSEDXTOGETPUMPED
waitmessage 0x40
- removeitem ATTACKER
+ removeitem BS_ATTACKER
end2
BattleScript_ActionSelectionItemsCantBeUsed::
@@ -4468,117 +4470,117 @@ BattleScript_82DB87D::
BattleScript_82DB881::
setbyte gBattleCommunication + 1, 0x0
BattleScript_82DB887::
- various8 ATTACKER
- jumpifbyte NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D
+ various8 BS_ATTACKER
+ jumpifbyte CMP_NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D
printfromtable gStringIds_85CCF0A
waitmessage 0x40
BattleScript_82DB89D::
addbyte gBattleCommunication + 1, 0x1
- jumpifbytenotequal gBattleCommunication + 1, gNoOfAllBanks, BattleScript_82DB887
+ jumpifbytenotequal gBattleCommunication + 1, gBattlersCount, BattleScript_82DB887
setbyte gBattleCommunication, 0x0
setbyte gBattleCommunication + 1, 0x0
end2
BattleScript_82DB8BE::
- waitcry ATTACKER
- various21 ATTACKER
+ waitcry BS_ATTACKER
+ various21 BS_ATTACKER
playse 0x109
pause 0x8
playse 0x109
- various14 ATTACKER
+ various14 BS_ATTACKER
various16 8
various17 8
pause 0x40
- various15 ATTACKER
- various22 ATTACKER
+ various15 BS_ATTACKER
+ various22 BS_ATTACKER
end2
BattleScript_82DB8E0::
playse SE_PINPON
- various14 ATTACKER
- various16 TARGET
- various17 TARGET
+ various14 BS_ATTACKER
+ various16 BS_TARGET
+ various17 BS_TARGET
pause 0x40
- various15 ATTACKER
+ various15 BS_ATTACKER
end2
BattleScript_82DB8F3::
makevisible 11
waitstate
- makevisible OPPONENT1
+ makevisible BS_OPPONENT1
waitstate
- various21 ATTACKER
+ various21 BS_ATTACKER
playse 0x109
pause 0x8
playse 0x109
pause 0x40
- various14 ATTACKER
- various16 ATTACKER
- various17 ATTACKER
+ various14 BS_ATTACKER
+ various16 BS_ATTACKER
+ various17 BS_ATTACKER
pause 0x40
setbyte gBattleCommunication, 0x0
- various9 ATTACKER
+ various9 BS_ATTACKER
pause 0x40
- various9 ATTACKER
- various16 EFFECT_BANK
- various17 EFFECT_BANK
- various9 ATTACKER
- various16 GBANK_1
- various17 GBANK_1
- various9 ATTACKER
+ various9 BS_ATTACKER
+ various16 BS_EFFECT_BATTLER
+ various17 BS_EFFECT_BATTLER
+ various9 BS_ATTACKER
+ various16 BS_FAINTED
+ various17 BS_FAINTED
+ various9 BS_ATTACKER
various16 0x4
various17 0x4
- various9 ATTACKER
- jumpifbyte EQUAL, gBattleCommunication + 1, 0x3, BattleScript_82DB973
- jumpifbyte EQUAL, gBattleCommunication + 1, 0x4, BattleScript_82DB992
+ various9 BS_ATTACKER
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0x3, BattleScript_82DB973
+ jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0x4, BattleScript_82DB992
various16 0x5
various17 0x5
- various9 ATTACKER
- various15 ATTACKER
+ various9 BS_ATTACKER
+ various15 BS_ATTACKER
printstring STRINGID_DEFEATEDOPPONENTBYREFEREE
waitmessage 0x40
- playfaintcry OPPONENT1
- waitcry ATTACKER
- dofaintanimation OPPONENT1
- cleareffectsonfaint OPPONENT1
- various10 ATTACKER
+ playfaintcry BS_OPPONENT1
+ waitcry BS_ATTACKER
+ dofaintanimation BS_OPPONENT1
+ cleareffectsonfaint BS_OPPONENT1
+ various10 BS_ATTACKER
end2
BattleScript_82DB973::
various16 0x6
various17 0x6
- various9 ATTACKER
- various15 ATTACKER
+ various9 BS_ATTACKER
+ various15 BS_ATTACKER
printstring STRINGID_LOSTTOOPPONENTBYREFEREE
waitmessage 0x40
playfaintcry 11
- waitcry ATTACKER
+ waitcry BS_ATTACKER
dofaintanimation 11
cleareffectsonfaint 11
- various11 ATTACKER
+ various11 BS_ATTACKER
end2
BattleScript_82DB992::
- various16 BANK0
- various17 BANK0
- various9 ATTACKER
- various15 ATTACKER
+ various16 BS_BANK_0
+ various17 BS_BANK_0
+ various9 BS_ATTACKER
+ various15 BS_ATTACKER
printstring STRINGID_TIEDOPPONENTBYREFEREE
waitmessage 0x40
playfaintcry 11
- waitcry ATTACKER
+ waitcry BS_ATTACKER
dofaintanimation 11
cleareffectsonfaint 11
- playfaintcry OPPONENT1
- waitcry ATTACKER
- dofaintanimation OPPONENT1
- cleareffectsonfaint OPPONENT1
- various12 ATTACKER
+ playfaintcry BS_OPPONENT1
+ waitcry BS_ATTACKER
+ dofaintanimation BS_OPPONENT1
+ cleareffectsonfaint BS_OPPONENT1
+ various12 BS_ATTACKER
end2
BattleScript_AskIfWantsToForfeitMatch::
printselectionstring STRINGID_QUESTIONFORFEITMATCH
- forfeityesnobox ATTACKER
+ forfeityesnobox BS_ATTACKER
endselectionscript
BattleScript_PrintPlayerForfeited::
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 9cd6a4d7d..8020d7c5c 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -1,11 +1,12 @@
+#include "constants/battle.h"
+#include "constants/battle_script_commands.h"
+#include "constants/battle_anim.h"
+#include "constants/battle_string_ids.h"
#include "constants/items.h"
#include "constants/songs.h"
.include "asm/macros.inc"
.include "asm/macros/battle_script.inc"
.include "constants/constants.inc"
- .include "constants/battle_constants.inc"
- .include "constants/battle_script_constants.inc"
- .include "constants/battle_text.inc"
.section script_data, "aw", %progbits
@@ -46,7 +47,7 @@ gBattlescriptsForSafariActions:: @ 82DBD58
.4byte BattleScript_82DBEE3
BattleScript_BallThrow::
- jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally
+ jumpifword CMP_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally
printstring STRINGID_PLAYERUSEDITEM
handleballthrow
@@ -56,11 +57,11 @@ BattleScript_BallThrowByWally::
BattleScript_SafariBallThrow::
printstring STRINGID_PLAYERUSEDITEM
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
handleballthrow
BattleScript_SuccessBallThrow::
- jumpifhalfword EQUAL, gLastUsedItem, ITEM_SAFARI_BALL, BattleScript_PrintCaughtMonInfo
+ jumpifhalfword CMP_EQUAL, gLastUsedItem, ITEM_SAFARI_BALL, BattleScript_PrintCaughtMonInfo
incrementgamestat 0xB
BattleScript_PrintCaughtMonInfo::
printstring STRINGID_GOTCHAPKMNCAUGHT
@@ -81,22 +82,22 @@ BattleScript_TryNicknameCaughtMon::
BattleScript_GiveCaughtMonEnd::
givecaughtmon
BattleScript_SuccessBallThrowEnd::
- setbyte gBattleOutcome, CAUGHT
+ setbyte gBattleOutcome, B_OUTCOME_CAUGHT
finishturn
BattleScript_WallyBallThrow::
printstring STRINGID_GOTCHAPKMNCAUGHT2
- setbyte gBattleOutcome, CAUGHT
+ setbyte gBattleOutcome, B_OUTCOME_CAUGHT
finishturn
BattleScript_ShakeBallThrow::
printfromtable gBallEscapeStringIds
waitmessage 0x40
- jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd
- jumpifbyte NOT_EQUAL, gNumSafariBalls, 0x0, BattleScript_ShakeBallThrowEnd
+ jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd
+ jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0x0, BattleScript_ShakeBallThrowEnd
printstring STRINGID_OUTOFSAFARIBALLS
waitmessage 0x40
- setbyte gBattleOutcome, OUT_OF_BALLS
+ setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS
BattleScript_ShakeBallThrowEnd::
finishaction
@@ -121,11 +122,11 @@ BattleScript_OpponentUsesHealItem::
waitmessage 0x40
useitemonopponent
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
- healthbarupdate ATTACKER
- datahpupdate ATTACKER
+ healthbarupdate BS_ATTACKER
+ datahpupdate BS_ATTACKER
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
setbyte sMOVEEND_STATE, 0xF
moveend 0x1, 0x0
finishaction
@@ -139,7 +140,7 @@ BattleScript_OpponentUsesStatusCureItem::
useitemonopponent
printfromtable gTrainerItemCuredStatusStringIds
waitmessage 0x40
- updatestatusicon ATTACKER
+ updatestatusicon BS_ATTACKER
setbyte sMOVEEND_STATE, 0xF
moveend 0x1, 0x0
finishaction
@@ -172,7 +173,7 @@ BattleScript_OpponentUsesGuardSpecs::
BattleScript_RunByUsingItem::
playse SE_NIGERU
- setbyte gBattleOutcome, RAN
+ setbyte gBattleOutcome, B_OUTCOME_RAN
finishturn
BattleScript_ActionWatchesCarefully::
@@ -188,7 +189,7 @@ BattleScript_ActionGetNear::
BattleScript_ActionThrowPokeblock::
printstring STRINGID_THREWPOKEBLOCKATPKMN
waitmessage 0x40
- playanimation ATTACKER, ANIM_x4, NULL
+ playanimation BS_ATTACKER, B_ANIM_x4, NULL
printfromtable gSafariPokeblockResultStringIds
waitmessage 0x40
end2
@@ -198,7 +199,7 @@ BattleScript_82DBEE3::
waitmessage 0x40
returnatktoball
waitstate
- trainerslidein TARGET
+ trainerslidein BS_TARGET
waitstate
printstring STRINGID_YOUTHROWABALLNOWRIGHT
waitmessage 0x40
diff --git a/data/battle_tower.s b/data/battle_tower.s
index d28303263..2cc0aa639 100644
--- a/data/battle_tower.s
+++ b/data/battle_tower.s
@@ -2,6 +2,8 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/species.h"
+#include "constants/trainers.h"
+#include "constants/pokemon.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/berry_tag_screen.s b/data/berry_tag_screen.s
deleted file mode 100644
index 13078e8e5..000000000
--- a/data/berry_tag_screen.s
+++ /dev/null
@@ -1,34 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085EFCF0:: @ 85EFCF0
- .4byte 0x000001f0, 0x000011e1, 0x000021d2, 0x000031c3
-
- .align 2
-gUnknown_085EFD00:: @ 85EFD00
- .incbin "graphics/interface/berry_tag_screen.gbapal"
-
- .align 2
-gUnknown_085EFD20:: @ 85EFD20 struct TextColor
- .byte 0x00, 0x02, 0x03
-
- .byte 0x0F, 0x0E, 0x0D
-
- .align 2
-gUnknown_085EFD28:: @ 85EFD28
- window_template 0x01, 0x0b, 0x04, 0x08, 0x02, 0x0f, 0x0045
- window_template 0x01, 0x0b, 0x07, 0x12, 0x04, 0x0f, 0x0055
- window_template 0x01, 0x04, 0x0e, 0x19, 0x04, 0x0f, 0x009d
- window_template 0x00, 0x02, 0x00, 0x08, 0x02, 0x0f, 0x0101
- null_window_template
-
- .align 2
-gBerryFirmnessStringPointers:: @ 85EFD50
- .4byte gBerryFirmnessString_VerySoft
- .4byte gBerryFirmnessString_Soft
- .4byte gBerryFirmnessString_Hard
- .4byte gBerryFirmnessString_VeryHard
- .4byte gBerryFirmnessString_SuperHard
diff --git a/data/contest.s b/data/contest.s
index 69820f980..357a95d1d 100644
--- a/data/contest.s
+++ b/data/contest.s
@@ -1,7 +1,7 @@
- .include "asm/macros.inc"
+#include "constants/species.h"
+#include "constants/moves.h"
+ .include "asm/macros.inc"
.include "constants/constants.inc"
- .include "constants/species_constants.inc"
- .include "include/constants/moves.h"
.section .rodata
.align 2, 0
diff --git a/data/contest_opponents.inc b/data/contest_opponents.inc
index d8ccfbb5b..9246bac21 100644
--- a/data/contest_opponents.inc
+++ b/data/contest_opponents.inc
@@ -879,7 +879,7 @@
.4byte 0x0
.4byte 0x0
.4byte 0xffff
- .2byte SPECIES_FARFETCH_D
+ .2byte SPECIES_FARFETCHD
.string "FETCHIN$ "
.string "RAUL$ "
.byte 66
diff --git a/data/data2b.s b/data/data2b.s
index 6c24060a0..b34995bee 100644
--- a/data/data2b.s
+++ b/data/data2b.s
@@ -1,6 +1,8 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/species.h"
+#include "constants/trainers.h"
+#include "constants/pokemon.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/data2c.s b/data/data2c.s
index 86418ce62..8d134ccb2 100644
--- a/data/data2c.s
+++ b/data/data2c.s
@@ -2,6 +2,7 @@
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/species.h"
+#include "constants/pokemon.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
@@ -9,189 +10,9 @@
.align 2
-
@ 831C898
.include "data/battle_moves.inc"
@ 0x31d93c
@ unreferenced unknown data
.byte 0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00
-
-@ 831D94C
- .include "data/pokedex_order.inc"
-
-@ 831E2F0
- .include "data/spinda_spot_graphics.inc"
-
-@ 831E380
- .include "data/item_effect_info.inc"
-
-@ 831E818
- .include "data/nature_stat_table.inc"
-
-@ 831E898
- .include "data/tm_hm_learnsets.inc"
-
-@ 831F578
- .include "data/trainer_pic_indices.inc"
-
-@ 831F5CA
- .include "data/trainer_class_name_indices.inc"
-
-@ 831F61C
- .include "data/cry_id_table.inc"
-
-@ 831F72C
- .include "data/experience_tables.inc"
-
-@ 83203CC
- .include "data/base_stats.inc"
-
-@ 83230DC
- .include "data/level_up_learnsets.inc"
-
-@ 832531C
- .include "data/evolution_table.inc"
-
-@ 832937C
- .include "data/level_up_learnset_pointers.inc"
-
-@ 83299EC
- .include "data/graphics/pokemon/front_anim_ids_table.inc"
-
-@ 8329B87
- .include "data/graphics/pokemon/animation_delay_table.inc"
-
- .align 1
-gUnknown_08329D22:: @ 8329D22
-@ Masks for getting PP Up count, also PP Max values
- .byte 0x03, 0x0c, 0x30, 0xc0
-
- .align 1
-gUnknown_08329D26:: @ 8329D26
-@ Masks for setting PP Up count
- .byte 0xfc, 0xf3, 0xcf, 0x3f
-
- .align 1
-gUnknown_08329D2A:: @ 8329D2A
-@ Values added to PP Up count
- .byte 0x01, 0x04, 0x10, 0x40
-
- .align 1
-gStatStageRatios:: @ 8329D2E
- .byte 0x0a, 0x28
- .byte 0x0a, 0x23
- .byte 0x0a, 0x1e
- .byte 0x0a, 0x19
- .byte 0x0a, 0x14
- .byte 0x0a, 0x0f
- .byte 0x0a, 0x0a
- .byte 0x0f, 0x0a
- .byte 0x14, 0x0a
- .byte 0x19, 0x0a
- .byte 0x1e, 0x0a
- .byte 0x23, 0x0a
- .byte 0x28, 0x0a
-
- .align 1
-gUnknown_08329D48:: @ 8329D48
- .2byte 0x0032, 0x005f, 0x005a, 0x00b4, 0x005f, 0x005a
-
- .align 1
-gUnknown_08329D54:: @ 8329D54
- .2byte 0x0003, 0x000a, 0x001b, 0x002b, 0x001e, 0x0043, 0x0042, 0x0019
- .2byte 0x0012, 0x000c, 0x001c, 0x0047, 0x001f, 0x0036, 0x0002, 0x0014
-
- .align 1
-gHoldEffectToType:: @ 8329D74
- .byte 0x1f, 0x06
- .byte 0x2a, 0x08
- .byte 0x2e, 0x04
- .byte 0x2f, 0x05
- .byte 0x30, 0x0c
- .byte 0x31, 0x11
- .byte 0x32, 0x01
- .byte 0x33, 0x0d
- .byte 0x34, 0x0b
- .byte 0x35, 0x02
- .byte 0x36, 0x03
- .byte 0x37, 0x0f
- .byte 0x38, 0x07
- .byte 0x39, 0x0e
- .byte 0x3a, 0x0a
- .byte 0x3b, 0x10
- .byte 0x3c, 0x00
- .byte 0x00, 0x00
-
- .align 2
-gUnknown_08329D98:: @ 8329D98
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3A8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF3C8, gUnknown_082FF694, oac_poke_opponent
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3E8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF408, gUnknown_082FF694, oac_poke_opponent
-
- .align 2
-gUnknown_08329DF8:: @ 8329DF8
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF428, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF448, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF468, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF490, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4B8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4D8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4F8, gUnknown_082FF618, sub_8039BB4
- spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF518, gUnknown_082FF618, sub_8039BB4
-
-gSecretBaseTrainerClasses:: @ 8329EB8
- .byte TRAINER_CLASS_YOUNGSTER, TRAINER_CLASS_BUG_CATCHER, TRAINER_CLASS_RICH_BOY, TRAINER_CLASS_CAMPER, TRAINER_CLASS_COOLTRAINER_1
- .byte TRAINER_CLASS_LASS, TRAINER_CLASS_SCHOOL_KID_2, TRAINER_CLASS_LADY, TRAINER_CLASS_PICNICKER, TRAINER_CLASS_COOLTRAINER_2
-
-gUnknown_08329EC2:: @ 8329EC2
- .byte 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x1e
-
-gUnknown_08329EC8:: @ 8329EC8
- .byte 1, 1, 3, 2, 4, 6
-
-gUnknown_08329ECE:: @ 8329ECE
-@ Happiness deltas
- .byte 0x05, 0x03, 0x02
- .byte 0x05, 0x03, 0x02
- .byte 0x01, 0x01, 0x00
- .byte 0x03, 0x02, 0x01
- .byte 0x01, 0x01, 0x00
- .byte 0x01, 0x01, 0x01
- .byte 0xff, 0xff, 0xff
- .byte 0xfb, 0xfb, 0xf6
- .byte 0xfb, 0xfb, 0xf6
-
- .align 1
-gHMMoves:: @ 8329EEA
- .2byte MOVE_CUT
- .2byte MOVE_FLY
- .2byte MOVE_SURF
- .2byte MOVE_STRENGTH
- .2byte MOVE_FLASH
- .2byte MOVE_ROCK_SMASH
- .2byte MOVE_WATERFALL
- .2byte MOVE_DIVE
- .2byte 0xffff
-
- .align 1
-gAlteringCaveWildMonHeldItems:: @ 8329EFC
- .2byte 0, ITEM_NONE
- .2byte SPECIES_MAREEP, ITEM_GANLON_BERRY
- .2byte SPECIES_PINECO, ITEM_APICOT_BERRY
- .2byte SPECIES_HOUNDOUR, ITEM_BIG_MUSHROOM
- .2byte SPECIES_TEDDIURSA, ITEM_PETAYA_BERRY
- .2byte SPECIES_AIPOM, ITEM_BERRY_JUICE
- .2byte SPECIES_SHUCKLE, ITEM_BERRY_JUICE
- .2byte SPECIES_STANTLER, ITEM_PETAYA_BERRY
- .2byte SPECIES_SMEARGLE, ITEM_SALAC_BERRY
-
- .align 2
-gUnknown_08329F20:: @ 8329F20
- .byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_08329F28:: @ 8329F28
- spr_template 0xffff, 0xffff, gUnknown_08329F20, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
diff --git a/data/data2e.s b/data/data2e.s
new file mode 100644
index 000000000..597d53067
--- /dev/null
+++ b/data/data2e.s
@@ -0,0 +1,151 @@
+#include "constants/abilities.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
+#include "constants/trainers.h"
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+
+@ 83299EC
+ .include "data/graphics/pokemon/front_anim_ids_table.inc"
+
+@ 8329B87
+ .include "data/graphics/pokemon/animation_delay_table.inc"
+
+ .align 1
+gUnknown_08329D22:: @ 8329D22
+@ Masks for getting PP Up count, also PP Max values
+ .byte 0x03, 0x0c, 0x30, 0xc0
+
+ .align 1
+gUnknown_08329D26:: @ 8329D26
+@ Masks for setting PP Up count
+ .byte 0xfc, 0xf3, 0xcf, 0x3f
+
+ .align 1
+gUnknown_08329D2A:: @ 8329D2A
+@ Values added to PP Up count
+ .byte 0x01, 0x04, 0x10, 0x40
+
+ .align 1
+gStatStageRatios:: @ 8329D2E
+ .byte 0x0a, 0x28
+ .byte 0x0a, 0x23
+ .byte 0x0a, 0x1e
+ .byte 0x0a, 0x19
+ .byte 0x0a, 0x14
+ .byte 0x0a, 0x0f
+ .byte 0x0a, 0x0a
+ .byte 0x0f, 0x0a
+ .byte 0x14, 0x0a
+ .byte 0x19, 0x0a
+ .byte 0x1e, 0x0a
+ .byte 0x23, 0x0a
+ .byte 0x28, 0x0a
+
+ .align 1
+gUnknown_08329D48:: @ 8329D48
+ .2byte 0x0032, 0x005f, 0x005a, 0x00b4, 0x005f, 0x005a
+
+ .align 1
+gUnknown_08329D54:: @ 8329D54
+ .2byte 0x0003, 0x000a, 0x001b, 0x002b, 0x001e, 0x0043, 0x0042, 0x0019
+ .2byte 0x0012, 0x000c, 0x001c, 0x0047, 0x001f, 0x0036, 0x0002, 0x0014
+
+ .align 1
+gHoldEffectToType:: @ 8329D74
+ .byte 0x1f, 0x06
+ .byte 0x2a, 0x08
+ .byte 0x2e, 0x04
+ .byte 0x2f, 0x05
+ .byte 0x30, 0x0c
+ .byte 0x31, 0x11
+ .byte 0x32, 0x01
+ .byte 0x33, 0x0d
+ .byte 0x34, 0x0b
+ .byte 0x35, 0x02
+ .byte 0x36, 0x03
+ .byte 0x37, 0x0f
+ .byte 0x38, 0x07
+ .byte 0x39, 0x0e
+ .byte 0x3a, 0x0a
+ .byte 0x3b, 0x10
+ .byte 0x3c, 0x00
+ .byte 0x00, 0x00
+
+ .align 2
+gUnknown_08329D98:: @ 8329D98
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3A8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF3C8, gUnknown_082FF694, oac_poke_opponent
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3E8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF408, gUnknown_082FF694, oac_poke_opponent
+
+ .align 2
+gUnknown_08329DF8:: @ 8329DF8
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF428, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF448, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF468, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF490, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4B8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4D8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4F8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF518, gUnknown_082FF618, sub_8039BB4
+
+gSecretBaseTrainerClasses:: @ 8329EB8
+ .byte FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOLTRAINER_1
+ .byte FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_2, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOLTRAINER_2
+
+gUnknown_08329EC2:: @ 8329EC2
+ .byte 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x1e
+
+gUnknown_08329EC8:: @ 8329EC8
+ .byte 1, 1, 3, 2, 4, 6
+
+gUnknown_08329ECE:: @ 8329ECE
+@ Happiness deltas
+ .byte 0x05, 0x03, 0x02
+ .byte 0x05, 0x03, 0x02
+ .byte 0x01, 0x01, 0x00
+ .byte 0x03, 0x02, 0x01
+ .byte 0x01, 0x01, 0x00
+ .byte 0x01, 0x01, 0x01
+ .byte 0xff, 0xff, 0xff
+ .byte 0xfb, 0xfb, 0xf6
+ .byte 0xfb, 0xfb, 0xf6
+
+ .align 1
+gHMMoves:: @ 8329EEA
+ .2byte MOVE_CUT
+ .2byte MOVE_FLY
+ .2byte MOVE_SURF
+ .2byte MOVE_STRENGTH
+ .2byte MOVE_FLASH
+ .2byte MOVE_ROCK_SMASH
+ .2byte MOVE_WATERFALL
+ .2byte MOVE_DIVE
+ .2byte 0xffff
+
+ .align 1
+gAlteringCaveWildMonHeldItems:: @ 8329EFC
+ .2byte 0, ITEM_NONE
+ .2byte SPECIES_MAREEP, ITEM_GANLON_BERRY
+ .2byte SPECIES_PINECO, ITEM_APICOT_BERRY
+ .2byte SPECIES_HOUNDOUR, ITEM_BIG_MUSHROOM
+ .2byte SPECIES_TEDDIURSA, ITEM_PETAYA_BERRY
+ .2byte SPECIES_AIPOM, ITEM_BERRY_JUICE
+ .2byte SPECIES_SHUCKLE, ITEM_BERRY_JUICE
+ .2byte SPECIES_STANTLER, ITEM_PETAYA_BERRY
+ .2byte SPECIES_SMEARGLE, ITEM_SALAC_BERRY
+
+ .align 2
+gUnknown_08329F20:: @ 8329F20
+ .byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_08329F28:: @ 8329F28
+ spr_template 0xffff, 0xffff, gUnknown_08329F20, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 556ebcd01..b2b895903 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -4,6 +4,7 @@
#include "constants/songs.h"
#include "constants/species.h"
#include "constants/vars.h"
+#include "constants/trainers.h"
.include "asm/macros.inc"
.include "asm/macros/event.inc"
.include "constants/constants.inc"
diff --git a/data/evolution_table.inc b/data/evolution_table.inc
deleted file mode 100644
index 9ef168175..000000000
--- a/data/evolution_table.inc
+++ /dev/null
@@ -1,1420 +0,0 @@
- .align 2
-gEvolutionTable:: @ 832531C
-@ ??????????
- empty_evo_entries 5
-
-@ Bulbasaur
- evo_entry EVO_LEVEL, 16, SPECIES_IVYSAUR
- empty_evo_entries 4
-
-@ Ivysaur
- evo_entry EVO_LEVEL, 32, SPECIES_VENUSAUR
- empty_evo_entries 4
-
-@ Venusaur
- empty_evo_entries 5
-
-@ Charmander
- evo_entry EVO_LEVEL, 16, SPECIES_CHARMELEON
- empty_evo_entries 4
-
-@ Charmeleon
- evo_entry EVO_LEVEL, 36, SPECIES_CHARIZARD
- empty_evo_entries 4
-
-@ Charizard
- empty_evo_entries 5
-
-@ Squirtle
- evo_entry EVO_LEVEL, 16, SPECIES_WARTORTLE
- empty_evo_entries 4
-
-@ Wartortle
- evo_entry EVO_LEVEL, 36, SPECIES_BLASTOISE
- empty_evo_entries 4
-
-@ Blastoise
- empty_evo_entries 5
-
-@ Caterpie
- evo_entry EVO_LEVEL, 7, SPECIES_METAPOD
- empty_evo_entries 4
-
-@ Metapod
- evo_entry EVO_LEVEL, 10, SPECIES_BUTTERFREE
- empty_evo_entries 4
-
-@ Butterfree
- empty_evo_entries 5
-
-@ Weedle
- evo_entry EVO_LEVEL, 7, SPECIES_KAKUNA
- empty_evo_entries 4
-
-@ Kakuna
- evo_entry EVO_LEVEL, 10, SPECIES_BEEDRILL
- empty_evo_entries 4
-
-@ Beedrill
- empty_evo_entries 5
-
-@ Pidgey
- evo_entry EVO_LEVEL, 18, SPECIES_PIDGEOTTO
- empty_evo_entries 4
-
-@ Pidgeotto
- evo_entry EVO_LEVEL, 36, SPECIES_PIDGEOT
- empty_evo_entries 4
-
-@ Pidgeot
- empty_evo_entries 5
-
-@ Rattata
- evo_entry EVO_LEVEL, 20, SPECIES_RATICATE
- empty_evo_entries 4
-
-@ Raticate
- empty_evo_entries 5
-
-@ Spearow
- evo_entry EVO_LEVEL, 20, SPECIES_FEAROW
- empty_evo_entries 4
-
-@ Fearow
- empty_evo_entries 5
-
-@ Ekans
- evo_entry EVO_LEVEL, 22, SPECIES_ARBOK
- empty_evo_entries 4
-
-@ Arbok
- empty_evo_entries 5
-
-@ Pikachu
- evo_entry EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU
- empty_evo_entries 4
-
-@ Raichu
- empty_evo_entries 5
-
-@ Sandshrew
- evo_entry EVO_LEVEL, 22, SPECIES_SANDSLASH
- empty_evo_entries 4
-
-@ Sandslash
- empty_evo_entries 5
-
-@ Nidoran♀
- evo_entry EVO_LEVEL, 16, SPECIES_NIDORINA
- empty_evo_entries 4
-
-@ Nidorina
- evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN
- empty_evo_entries 4
-
-@ Nidoqueen
- empty_evo_entries 5
-
-@ Nidoran♂
- evo_entry EVO_LEVEL, 16, SPECIES_NIDORINO
- empty_evo_entries 4
-
-@ Nidorino
- evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING
- empty_evo_entries 4
-
-@ Nidoking
- empty_evo_entries 5
-
-@ Clefairy
- evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE
- empty_evo_entries 4
-
-@ Clefable
- empty_evo_entries 5
-
-@ Vulpix
- evo_entry EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES
- empty_evo_entries 4
-
-@ Ninetales
- empty_evo_entries 5
-
-@ Jigglypuff
- evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF
- empty_evo_entries 4
-
-@ Wigglytuff
- empty_evo_entries 5
-
-@ Zubat
- evo_entry EVO_LEVEL, 22, SPECIES_GOLBAT
- empty_evo_entries 4
-
-@ Golbat
- evo_entry EVO_FRIENDSHIP, 0, SPECIES_CROBAT
- empty_evo_entries 4
-
-@ Oddish
- evo_entry EVO_LEVEL, 21, SPECIES_GLOOM
- empty_evo_entries 4
-
-@ Gloom
- evo_entry EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME
- evo_entry EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM
- empty_evo_entries 3
-
-@ Vileplume
- empty_evo_entries 5
-
-@ Paras
- evo_entry EVO_LEVEL, 24, SPECIES_PARASECT
- empty_evo_entries 4
-
-@ Parasect
- empty_evo_entries 5
-
-@ Venonat
- evo_entry EVO_LEVEL, 31, SPECIES_VENOMOTH
- empty_evo_entries 4
-
-@ Venomoth
- empty_evo_entries 5
-
-@ Diglett
- evo_entry EVO_LEVEL, 26, SPECIES_DUGTRIO
- empty_evo_entries 4
-
-@ Dugtrio
- empty_evo_entries 5
-
-@ Meowth
- evo_entry EVO_LEVEL, 28, SPECIES_PERSIAN
- empty_evo_entries 4
-
-@ Persian
- empty_evo_entries 5
-
-@ Psyduck
- evo_entry EVO_LEVEL, 33, SPECIES_GOLDUCK
- empty_evo_entries 4
-
-@ Golduck
- empty_evo_entries 5
-
-@ Mankey
- evo_entry EVO_LEVEL, 28, SPECIES_PRIMEAPE
- empty_evo_entries 4
-
-@ Primeape
- empty_evo_entries 5
-
-@ Growlithe
- evo_entry EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE
- empty_evo_entries 4
-
-@ Arcanine
- empty_evo_entries 5
-
-@ Poliwag
- evo_entry EVO_LEVEL, 25, SPECIES_POLIWHIRL
- empty_evo_entries 4
-
-@ Poliwhirl
- evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH
- evo_entry EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED
- empty_evo_entries 3
-
-@ Poliwrath
- empty_evo_entries 5
-
-@ Abra
- evo_entry EVO_LEVEL, 16, SPECIES_KADABRA
- empty_evo_entries 4
-
-@ Kadabra
- evo_entry EVO_TRADE, 0, SPECIES_ALAKAZAM
- empty_evo_entries 4
-
-@ Alakazam
- empty_evo_entries 5
-
-@ Machop
- evo_entry EVO_LEVEL, 28, SPECIES_MACHOKE
- empty_evo_entries 4
-
-@ Machoke
- evo_entry EVO_TRADE, 0, SPECIES_MACHAMP
- empty_evo_entries 4
-
-@ Machamp
- empty_evo_entries 5
-
-@ Bellsprout
- evo_entry EVO_LEVEL, 21, SPECIES_WEEPINBELL
- empty_evo_entries 4
-
-@ Weepinbell
- evo_entry EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL
- empty_evo_entries 4
-
-@ Victreebel
- empty_evo_entries 5
-
-@ Tentacool
- evo_entry EVO_LEVEL, 30, SPECIES_TENTACRUEL
- empty_evo_entries 4
-
-@ Tentacruel
- empty_evo_entries 5
-
-@ Geodude
- evo_entry EVO_LEVEL, 25, SPECIES_GRAVELER
- empty_evo_entries 4
-
-@ Graveler
- evo_entry EVO_TRADE, 0, SPECIES_GOLEM
- empty_evo_entries 4
-
-@ Golem
- empty_evo_entries 5
-
-@ Ponyta
- evo_entry EVO_LEVEL, 40, SPECIES_RAPIDASH
- empty_evo_entries 4
-
-@ Rapidash
- empty_evo_entries 5
-
-@ Slowpoke
- evo_entry EVO_LEVEL, 37, SPECIES_SLOWBRO
- evo_entry EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING
- empty_evo_entries 3
-
-@ Slowbro
- empty_evo_entries 5
-
-@ Magnemite
- evo_entry EVO_LEVEL, 30, SPECIES_MAGNETON
- empty_evo_entries 4
-
-@ Magneton
- empty_evo_entries 5
-
-@ Farfetch'd
- empty_evo_entries 5
-
-@ Doduo
- evo_entry EVO_LEVEL, 31, SPECIES_DODRIO
- empty_evo_entries 4
-
-@ Dodrio
- empty_evo_entries 5
-
-@ Seel
- evo_entry EVO_LEVEL, 34, SPECIES_DEWGONG
- empty_evo_entries 4
-
-@ Dewgong
- empty_evo_entries 5
-
-@ Grimer
- evo_entry EVO_LEVEL, 38, SPECIES_MUK
- empty_evo_entries 4
-
-@ Muk
- empty_evo_entries 5
-
-@ Shellder
- evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER
- empty_evo_entries 4
-
-@ Cloyster
- empty_evo_entries 5
-
-@ Gastly
- evo_entry EVO_LEVEL, 25, SPECIES_HAUNTER
- empty_evo_entries 4
-
-@ Haunter
- evo_entry EVO_TRADE, 0, SPECIES_GENGAR
- empty_evo_entries 4
-
-@ Gengar
- empty_evo_entries 5
-
-@ Onix
- evo_entry EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX
- empty_evo_entries 4
-
-@ Drowzee
- evo_entry EVO_LEVEL, 26, SPECIES_HYPNO
- empty_evo_entries 4
-
-@ Hypno
- empty_evo_entries 5
-
-@ Krabby
- evo_entry EVO_LEVEL, 28, SPECIES_KINGLER
- empty_evo_entries 4
-
-@ Kingler
- empty_evo_entries 5
-
-@ Voltorb
- evo_entry EVO_LEVEL, 30, SPECIES_ELECTRODE
- empty_evo_entries 4
-
-@ Electrode
- empty_evo_entries 5
-
-@ Exeggcute
- evo_entry EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR
- empty_evo_entries 4
-
-@ Exeggutor
- empty_evo_entries 5
-
-@ Cubone
- evo_entry EVO_LEVEL, 28, SPECIES_MAROWAK
- empty_evo_entries 4
-
-@ Marowak
- empty_evo_entries 5
-
-@ Hitmonlee
- empty_evo_entries 5
-
-@ Hitmonchan
- empty_evo_entries 5
-
-@ Lickitung
- empty_evo_entries 5
-
-@ Koffing
- evo_entry EVO_LEVEL, 35, SPECIES_WEEZING
- empty_evo_entries 4
-
-@ Weezing
- empty_evo_entries 5
-
-@ Rhyhorn
- evo_entry EVO_LEVEL, 42, SPECIES_RHYDON
- empty_evo_entries 4
-
-@ Rhydon
- empty_evo_entries 5
-
-@ Chansey
- evo_entry EVO_FRIENDSHIP, 0, SPECIES_BLISSEY
- empty_evo_entries 4
-
-@ Tangela
- empty_evo_entries 5
-
-@ Kangaskhan
- empty_evo_entries 5
-
-@ Horsea
- evo_entry EVO_LEVEL, 32, SPECIES_SEADRA
- empty_evo_entries 4
-
-@ Seadra
- evo_entry EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA
- empty_evo_entries 4
-
-@ Goldeen
- evo_entry EVO_LEVEL, 33, SPECIES_SEAKING
- empty_evo_entries 4
-
-@ Seaking
- empty_evo_entries 5
-
-@ Staryu
- evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE
- empty_evo_entries 4
-
-@ Starmie
- empty_evo_entries 5
-
-@ Mr. mime
- empty_evo_entries 5
-
-@ Scyther
- evo_entry EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR
- empty_evo_entries 4
-
-@ Jynx
- empty_evo_entries 5
-
-@ Electabuzz
- empty_evo_entries 5
-
-@ Magmar
- empty_evo_entries 5
-
-@ Pinsir
- empty_evo_entries 5
-
-@ Tauros
- empty_evo_entries 5
-
-@ Magikarp
- evo_entry EVO_LEVEL, 20, SPECIES_GYARADOS
- empty_evo_entries 4
-
-@ Gyarados
- empty_evo_entries 5
-
-@ Lapras
- empty_evo_entries 5
-
-@ Ditto
- empty_evo_entries 5
-
-@ Eevee
- evo_entry EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON
- evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON
- evo_entry EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON
- evo_entry EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON
- evo_entry EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON
-
-@ Vaporeon
- empty_evo_entries 5
-
-@ Jolteon
- empty_evo_entries 5
-
-@ Flareon
- empty_evo_entries 5
-
-@ Porygon
- evo_entry EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2
- empty_evo_entries 4
-
-@ Omanyte
- evo_entry EVO_LEVEL, 40, SPECIES_OMASTAR
- empty_evo_entries 4
-
-@ Omastar
- empty_evo_entries 5
-
-@ Kabuto
- evo_entry EVO_LEVEL, 40, SPECIES_KABUTOPS
- empty_evo_entries 4
-
-@ Kabutops
- empty_evo_entries 5
-
-@ Aerodactyl
- empty_evo_entries 5
-
-@ Snorlax
- empty_evo_entries 5
-
-@ Articuno
- empty_evo_entries 5
-
-@ Zapdos
- empty_evo_entries 5
-
-@ Moltres
- empty_evo_entries 5
-
-@ Dratini
- evo_entry EVO_LEVEL, 30, SPECIES_DRAGONAIR
- empty_evo_entries 4
-
-@ Dragonair
- evo_entry EVO_LEVEL, 55, SPECIES_DRAGONITE
- empty_evo_entries 4
-
-@ Dragonite
- empty_evo_entries 5
-
-@ Mewtwo
- empty_evo_entries 5
-
-@ Mew
- empty_evo_entries 5
-
-@ Chikorita
- evo_entry EVO_LEVEL, 16, SPECIES_BAYLEEF
- empty_evo_entries 4
-
-@ Bayleef
- evo_entry EVO_LEVEL, 32, SPECIES_MEGANIUM
- empty_evo_entries 4
-
-@ Meganium
- empty_evo_entries 5
-
-@ Cyndaquil
- evo_entry EVO_LEVEL, 14, SPECIES_QUILAVA
- empty_evo_entries 4
-
-@ Quilava
- evo_entry EVO_LEVEL, 36, SPECIES_TYPHLOSION
- empty_evo_entries 4
-
-@ Typhlosion
- empty_evo_entries 5
-
-@ Totodile
- evo_entry EVO_LEVEL, 18, SPECIES_CROCONAW
- empty_evo_entries 4
-
-@ Croconaw
- evo_entry EVO_LEVEL, 30, SPECIES_FERALIGATR
- empty_evo_entries 4
-
-@ Feraligatr
- empty_evo_entries 5
-
-@ Sentret
- evo_entry EVO_LEVEL, 15, SPECIES_FURRET
- empty_evo_entries 4
-
-@ Furret
- empty_evo_entries 5
-
-@ Hoothoot
- evo_entry EVO_LEVEL, 20, SPECIES_NOCTOWL
- empty_evo_entries 4
-
-@ Noctowl
- empty_evo_entries 5
-
-@ Ledyba
- evo_entry EVO_LEVEL, 18, SPECIES_LEDIAN
- empty_evo_entries 4
-
-@ Ledian
- empty_evo_entries 5
-
-@ Spinarak
- evo_entry EVO_LEVEL, 22, SPECIES_ARIADOS
- empty_evo_entries 4
-
-@ Ariados
- empty_evo_entries 5
-
-@ Crobat
- empty_evo_entries 5
-
-@ Chinchou
- evo_entry EVO_LEVEL, 27, SPECIES_LANTURN
- empty_evo_entries 4
-
-@ Lanturn
- empty_evo_entries 5
-
-@ Pichu
- evo_entry EVO_FRIENDSHIP, 0, SPECIES_PIKACHU
- empty_evo_entries 4
-
-@ Cleffa
- evo_entry EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY
- empty_evo_entries 4
-
-@ Igglybuff
- evo_entry EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF
- empty_evo_entries 4
-
-@ Togepi
- evo_entry EVO_FRIENDSHIP, 0, SPECIES_TOGETIC
- empty_evo_entries 4
-
-@ Togetic
- empty_evo_entries 5
-
-@ Natu
- evo_entry EVO_LEVEL, 25, SPECIES_XATU
- empty_evo_entries 4
-
-@ Xatu
- empty_evo_entries 5
-
-@ Mareep
- evo_entry EVO_LEVEL, 15, SPECIES_FLAAFFY
- empty_evo_entries 4
-
-@ Flaaffy
- evo_entry EVO_LEVEL, 30, SPECIES_AMPHAROS
- empty_evo_entries 4
-
-@ Ampharos
- empty_evo_entries 5
-
-@ Bellossom
- empty_evo_entries 5
-
-@ Marill
- evo_entry EVO_LEVEL, 18, SPECIES_AZUMARILL
- empty_evo_entries 4
-
-@ Azumarill
- empty_evo_entries 5
-
-@ Sudowoodo
- empty_evo_entries 5
-
-@ Politoed
- empty_evo_entries 5
-
-@ Hoppip
- evo_entry EVO_LEVEL, 18, SPECIES_SKIPLOOM
- empty_evo_entries 4
-
-@ Skiploom
- evo_entry EVO_LEVEL, 27, SPECIES_JUMPLUFF
- empty_evo_entries 4
-
-@ Jumpluff
- empty_evo_entries 5
-
-@ Aipom
- empty_evo_entries 5
-
-@ Sunkern
- evo_entry EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA
- empty_evo_entries 4
-
-@ Sunflora
- empty_evo_entries 5
-
-@ Yanma
- empty_evo_entries 5
-
-@ Wooper
- evo_entry EVO_LEVEL, 20, SPECIES_QUAGSIRE
- empty_evo_entries 4
-
-@ Quagsire
- empty_evo_entries 5
-
-@ Espeon
- empty_evo_entries 5
-
-@ Umbreon
- empty_evo_entries 5
-
-@ Murkrow
- empty_evo_entries 5
-
-@ Slowking
- empty_evo_entries 5
-
-@ Misdreavus
- empty_evo_entries 5
-
-@ Unown
- empty_evo_entries 5
-
-@ Wobbuffet
- empty_evo_entries 5
-
-@ Girafarig
- empty_evo_entries 5
-
-@ Pineco
- evo_entry EVO_LEVEL, 31, SPECIES_FORRETRESS
- empty_evo_entries 4
-
-@ Forretress
- empty_evo_entries 5
-
-@ Dunsparce
- empty_evo_entries 5
-
-@ Gligar
- empty_evo_entries 5
-
-@ Steelix
- empty_evo_entries 5
-
-@ Snubbull
- evo_entry EVO_LEVEL, 23, SPECIES_GRANBULL
- empty_evo_entries 4
-
-@ Granbull
- empty_evo_entries 5
-
-@ Qwilfish
- empty_evo_entries 5
-
-@ Scizor
- empty_evo_entries 5
-
-@ Shuckle
- empty_evo_entries 5
-
-@ Heracross
- empty_evo_entries 5
-
-@ Sneasel
- empty_evo_entries 5
-
-@ Teddiursa
- evo_entry EVO_LEVEL, 30, SPECIES_URSARING
- empty_evo_entries 4
-
-@ Ursaring
- empty_evo_entries 5
-
-@ Slugma
- evo_entry EVO_LEVEL, 38, SPECIES_MAGCARGO
- empty_evo_entries 4
-
-@ Magcargo
- empty_evo_entries 5
-
-@ Swinub
- evo_entry EVO_LEVEL, 33, SPECIES_PILOSWINE
- empty_evo_entries 4
-
-@ Piloswine
- empty_evo_entries 5
-
-@ Corsola
- empty_evo_entries 5
-
-@ Remoraid
- evo_entry EVO_LEVEL, 25, SPECIES_OCTILLERY
- empty_evo_entries 4
-
-@ Octillery
- empty_evo_entries 5
-
-@ Delibird
- empty_evo_entries 5
-
-@ Mantine
- empty_evo_entries 5
-
-@ Skarmory
- empty_evo_entries 5
-
-@ Houndour
- evo_entry EVO_LEVEL, 24, SPECIES_HOUNDOOM
- empty_evo_entries 4
-
-@ Houndoom
- empty_evo_entries 5
-
-@ Kingdra
- empty_evo_entries 5
-
-@ Phanpy
- evo_entry EVO_LEVEL, 25, SPECIES_DONPHAN
- empty_evo_entries 4
-
-@ Donphan
- empty_evo_entries 5
-
-@ Porygon2
- empty_evo_entries 5
-
-@ Stantler
- empty_evo_entries 5
-
-@ Smeargle
- empty_evo_entries 5
-
-@ Tyrogue
- evo_entry EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN
- evo_entry EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE
- evo_entry EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP
- empty_evo_entries 2
-
-@ Hitmontop
- empty_evo_entries 5
-
-@ Smoochum
- evo_entry EVO_LEVEL, 30, SPECIES_JYNX
- empty_evo_entries 4
-
-@ Elekid
- evo_entry EVO_LEVEL, 30, SPECIES_ELECTABUZZ
- empty_evo_entries 4
-
-@ Magby
- evo_entry EVO_LEVEL, 30, SPECIES_MAGMAR
- empty_evo_entries 4
-
-@ Miltank
- empty_evo_entries 5
-
-@ Blissey
- empty_evo_entries 5
-
-@ Raikou
- empty_evo_entries 5
-
-@ Entei
- empty_evo_entries 5
-
-@ Suicune
- empty_evo_entries 5
-
-@ Larvitar
- evo_entry EVO_LEVEL, 30, SPECIES_PUPITAR
- empty_evo_entries 4
-
-@ Pupitar
- evo_entry EVO_LEVEL, 55, SPECIES_TYRANITAR
- empty_evo_entries 4
-
-@ Tyranitar
- empty_evo_entries 5
-
-@ Lugia
- empty_evo_entries 5
-
-@ Ho-Oh
- empty_evo_entries 5
-
-@ Celebi
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ ?
- empty_evo_entries 5
-
-@ Treecko
- evo_entry EVO_LEVEL, 16, SPECIES_GROVYLE
- empty_evo_entries 4
-
-@ Grovyle
- evo_entry EVO_LEVEL, 36, SPECIES_SCEPTILE
- empty_evo_entries 4
-
-@ Sceptile
- empty_evo_entries 5
-
-@ Torchic
- evo_entry EVO_LEVEL, 16, SPECIES_COMBUSKEN
- empty_evo_entries 4
-
-@ Combusken
- evo_entry EVO_LEVEL, 36, SPECIES_BLAZIKEN
- empty_evo_entries 4
-
-@ Blaziken
- empty_evo_entries 5
-
-@ Mudkip
- evo_entry EVO_LEVEL, 16, SPECIES_MARSHTOMP
- empty_evo_entries 4
-
-@ Marshtomp
- evo_entry EVO_LEVEL, 36, SPECIES_SWAMPERT
- empty_evo_entries 4
-
-@ Swampert
- empty_evo_entries 5
-
-@ Poochyena
- evo_entry EVO_LEVEL, 18, SPECIES_MIGHTYENA
- empty_evo_entries 4
-
-@ Mightyena
- empty_evo_entries 5
-
-@ Zigzagoon
- evo_entry EVO_LEVEL, 20, SPECIES_LINOONE
- empty_evo_entries 4
-
-@ Linoone
- empty_evo_entries 5
-
-@ Wurmple
- evo_entry EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON
- evo_entry EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON
- empty_evo_entries 3
-
-@ Silcoon
- evo_entry EVO_LEVEL, 10, SPECIES_BEAUTIFLY
- empty_evo_entries 4
-
-@ Beautifly
- empty_evo_entries 5
-
-@ Cascoon
- evo_entry EVO_LEVEL, 10, SPECIES_DUSTOX
- empty_evo_entries 4
-
-@ Dustox
- empty_evo_entries 5
-
-@ Lotad
- evo_entry EVO_LEVEL, 14, SPECIES_LOMBRE
- empty_evo_entries 4
-
-@ Lombre
- evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO
- empty_evo_entries 4
-
-@ Ludicolo
- empty_evo_entries 5
-
-@ Seedot
- evo_entry EVO_LEVEL, 14, SPECIES_NUZLEAF
- empty_evo_entries 4
-
-@ Nuzleaf
- evo_entry EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY
- empty_evo_entries 4
-
-@ Shiftry
- empty_evo_entries 5
-
-@ Nincada
- evo_entry EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK
- evo_entry EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA
- empty_evo_entries 3
-
-@ Ninjask
- empty_evo_entries 5
-
-@ Shedinja
- empty_evo_entries 5
-
-@ Taillow
- evo_entry EVO_LEVEL, 22, SPECIES_SWELLOW
- empty_evo_entries 4
-
-@ Swellow
- empty_evo_entries 5
-
-@ Shroomish
- evo_entry EVO_LEVEL, 23, SPECIES_BRELOOM
- empty_evo_entries 4
-
-@ Breloom
- empty_evo_entries 5
-
-@ Spinda
- empty_evo_entries 5
-
-@ Wingull
- evo_entry EVO_LEVEL, 25, SPECIES_PELIPPER
- empty_evo_entries 4
-
-@ Pelipper
- empty_evo_entries 5
-
-@ Surskit
- evo_entry EVO_LEVEL, 22, SPECIES_MASQUERAIN
- empty_evo_entries 4
-
-@ Masquerain
- empty_evo_entries 5
-
-@ Wailmer
- evo_entry EVO_LEVEL, 40, SPECIES_WAILORD
- empty_evo_entries 4
-
-@ Wailord
- empty_evo_entries 5
-
-@ Skitty
- evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY
- empty_evo_entries 4
-
-@ Delcatty
- empty_evo_entries 5
-
-@ Kecleon
- empty_evo_entries 5
-
-@ Baltoy
- evo_entry EVO_LEVEL, 36, SPECIES_CLAYDOL
- empty_evo_entries 4
-
-@ Claydol
- empty_evo_entries 5
-
-@ Nosepass
- empty_evo_entries 5
-
-@ Torkoal
- empty_evo_entries 5
-
-@ Sableye
- empty_evo_entries 5
-
-@ Barboach
- evo_entry EVO_LEVEL, 30, SPECIES_WHISCASH
- empty_evo_entries 4
-
-@ Whiscash
- empty_evo_entries 5
-
-@ Luvdisc
- empty_evo_entries 5
-
-@ Corphish
- evo_entry EVO_LEVEL, 30, SPECIES_CRAWDAUNT
- empty_evo_entries 4
-
-@ Crawdaunt
- empty_evo_entries 5
-
-@ Feebas
- evo_entry EVO_BEAUTY, 170, SPECIES_MILOTIC
- empty_evo_entries 4
-
-@ Milotic
- empty_evo_entries 5
-
-@ Carvanha
- evo_entry EVO_LEVEL, 30, SPECIES_SHARPEDO
- empty_evo_entries 4
-
-@ Sharpedo
- empty_evo_entries 5
-
-@ Trapinch
- evo_entry EVO_LEVEL, 35, SPECIES_VIBRAVA
- empty_evo_entries 4
-
-@ Vibrava
- evo_entry EVO_LEVEL, 45, SPECIES_FLYGON
- empty_evo_entries 4
-
-@ Flygon
- empty_evo_entries 5
-
-@ Makuhita
- evo_entry EVO_LEVEL, 24, SPECIES_HARIYAMA
- empty_evo_entries 4
-
-@ Hariyama
- empty_evo_entries 5
-
-@ Electrike
- evo_entry EVO_LEVEL, 26, SPECIES_MANECTRIC
- empty_evo_entries 4
-
-@ Manectric
- empty_evo_entries 5
-
-@ Numel
- evo_entry EVO_LEVEL, 33, SPECIES_CAMERUPT
- empty_evo_entries 4
-
-@ Camerupt
- empty_evo_entries 5
-
-@ Spheal
- evo_entry EVO_LEVEL, 32, SPECIES_SEALEO
- empty_evo_entries 4
-
-@ Sealeo
- evo_entry EVO_LEVEL, 44, SPECIES_WALREIN
- empty_evo_entries 4
-
-@ Walrein
- empty_evo_entries 5
-
-@ Cacnea
- evo_entry EVO_LEVEL, 32, SPECIES_CACTURNE
- empty_evo_entries 4
-
-@ Cacturne
- empty_evo_entries 5
-
-@ Snorunt
- evo_entry EVO_LEVEL, 42, SPECIES_GLALIE
- empty_evo_entries 4
-
-@ Glalie
- empty_evo_entries 5
-
-@ Lunatone
- empty_evo_entries 5
-
-@ Solrock
- empty_evo_entries 5
-
-@ Azurill
- evo_entry EVO_FRIENDSHIP, 0, SPECIES_MARILL
- empty_evo_entries 4
-
-@ Spoink
- evo_entry EVO_LEVEL, 32, SPECIES_GRUMPIG
- empty_evo_entries 4
-
-@ Grumpig
- empty_evo_entries 5
-
-@ Plusle
- empty_evo_entries 5
-
-@ Minun
- empty_evo_entries 5
-
-@ Mawile
- empty_evo_entries 5
-
-@ Meditite
- evo_entry EVO_LEVEL, 37, SPECIES_MEDICHAM
- empty_evo_entries 4
-
-@ Medicham
- empty_evo_entries 5
-
-@ Swablu
- evo_entry EVO_LEVEL, 35, SPECIES_ALTARIA
- empty_evo_entries 4
-
-@ Altaria
- empty_evo_entries 5
-
-@ Wynaut
- evo_entry EVO_LEVEL, 15, SPECIES_WOBBUFFET
- empty_evo_entries 4
-
-@ Duskull
- evo_entry EVO_LEVEL, 37, SPECIES_DUSCLOPS
- empty_evo_entries 4
-
-@ Dusclops
- empty_evo_entries 5
-
-@ Roselia
- empty_evo_entries 5
-
-@ Slakoth
- evo_entry EVO_LEVEL, 18, SPECIES_VIGOROTH
- empty_evo_entries 4
-
-@ Vigoroth
- evo_entry EVO_LEVEL, 36, SPECIES_SLAKING
- empty_evo_entries 4
-
-@ Slaking
- empty_evo_entries 5
-
-@ Gulpin
- evo_entry EVO_LEVEL, 26, SPECIES_SWALOT
- empty_evo_entries 4
-
-@ Swalot
- empty_evo_entries 5
-
-@ Tropius
- empty_evo_entries 5
-
-@ Whismur
- evo_entry EVO_LEVEL, 20, SPECIES_LOUDRED
- empty_evo_entries 4
-
-@ Loudred
- evo_entry EVO_LEVEL, 40, SPECIES_EXPLOUD
- empty_evo_entries 4
-
-@ Exploud
- empty_evo_entries 5
-
-@ Clamperl
- evo_entry EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL
- evo_entry EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS
- empty_evo_entries 3
-
-@ Huntail
- empty_evo_entries 5
-
-@ Gorebyss
- empty_evo_entries 5
-
-@ Absol
- empty_evo_entries 5
-
-@ Shuppet
- evo_entry EVO_LEVEL, 37, SPECIES_BANETTE
- empty_evo_entries 4
-
-@ Banette
- empty_evo_entries 5
-
-@ Seviper
- empty_evo_entries 5
-
-@ Zangoose
- empty_evo_entries 5
-
-@ Relicanth
- empty_evo_entries 5
-
-@ Aron
- evo_entry EVO_LEVEL, 32, SPECIES_LAIRON
- empty_evo_entries 4
-
-@ Lairon
- evo_entry EVO_LEVEL, 42, SPECIES_AGGRON
- empty_evo_entries 4
-
-@ Aggron
- empty_evo_entries 5
-
-@ Castform
- empty_evo_entries 5
-
-@ Volbeat
- empty_evo_entries 5
-
-@ Illumise
- empty_evo_entries 5
-
-@ Lileep
- evo_entry EVO_LEVEL, 40, SPECIES_CRADILY
- empty_evo_entries 4
-
-@ Cradily
- empty_evo_entries 5
-
-@ Anorith
- evo_entry EVO_LEVEL, 40, SPECIES_ARMALDO
- empty_evo_entries 4
-
-@ Armaldo
- empty_evo_entries 5
-
-@ Ralts
- evo_entry EVO_LEVEL, 20, SPECIES_KIRLIA
- empty_evo_entries 4
-
-@ Kirlia
- evo_entry EVO_LEVEL, 30, SPECIES_GARDEVOIR
- empty_evo_entries 4
-
-@ Gardevoir
- empty_evo_entries 5
-
-@ Bagon
- evo_entry EVO_LEVEL, 30, SPECIES_SHELGON
- empty_evo_entries 4
-
-@ Shelgon
- evo_entry EVO_LEVEL, 50, SPECIES_SALAMENCE
- empty_evo_entries 4
-
-@ Salamence
- empty_evo_entries 5
-
-@ Beldum
- evo_entry EVO_LEVEL, 20, SPECIES_METANG
- empty_evo_entries 4
-
-@ Metang
- evo_entry EVO_LEVEL, 45, SPECIES_METAGROSS
- empty_evo_entries 4
-
-@ Metagross
- empty_evo_entries 5
-
-@ Regirock
- empty_evo_entries 5
-
-@ Regice
- empty_evo_entries 5
-
-@ Registeel
- empty_evo_entries 5
-
-@ Kyogre
- empty_evo_entries 5
-
-@ Groudon
- empty_evo_entries 5
-
-@ Rayquaza
- empty_evo_entries 5
-
-@ Latias
- empty_evo_entries 5
-
-@ Latios
- empty_evo_entries 5
-
-@ Jirachi
- empty_evo_entries 5
-
-@ Deoxys
- empty_evo_entries 5
-
-@ Chimecho
- empty_evo_entries 5
diff --git a/data/experience_tables.inc b/data/experience_tables.inc
deleted file mode 100644
index 4afd6df40..000000000
--- a/data/experience_tables.inc
+++ /dev/null
@@ -1,11 +0,0 @@
- .align 2
-gExperienceTables:: @ 831F72C
- .include "data/experience_tables/medium_fast_growth_rate.inc"
- .include "data/experience_tables/erratic_growth_rate.inc"
- .include "data/experience_tables/fluctuating_growth_rate.inc"
- .include "data/experience_tables/medium_slow_growth_rate.inc"
- .include "data/experience_tables/fast_growth_rate.inc"
- .include "data/experience_tables/slow_growth_rate.inc"
-@ TODO: find out if these copies are used
- .include "data/experience_tables/medium_fast_growth_rate.inc"
- .include "data/experience_tables/medium_fast_growth_rate.inc"
diff --git a/data/experience_tables/erratic_growth_rate.inc b/data/experience_tables/erratic_growth_rate.inc
deleted file mode 100644
index d3a455a9f..000000000
--- a/data/experience_tables/erratic_growth_rate.inc
+++ /dev/null
@@ -1,101 +0,0 @@
- .4byte 0 @ 0
- .4byte 1 @ 1
- .4byte 15 @ 2
- .4byte 52 @ 3
- .4byte 122 @ 4
- .4byte 237 @ 5
- .4byte 406 @ 6
- .4byte 637 @ 7
- .4byte 942 @ 8
- .4byte 1326 @ 9
- .4byte 1800 @ 10
- .4byte 2369 @ 11
- .4byte 3041 @ 12
- .4byte 3822 @ 13
- .4byte 4719 @ 14
- .4byte 5737 @ 15
- .4byte 6881 @ 16
- .4byte 8155 @ 17
- .4byte 9564 @ 18
- .4byte 11111 @ 19
- .4byte 12800 @ 20
- .4byte 14632 @ 21
- .4byte 16610 @ 22
- .4byte 18737 @ 23
- .4byte 21012 @ 24
- .4byte 23437 @ 25
- .4byte 26012 @ 26
- .4byte 28737 @ 27
- .4byte 31610 @ 28
- .4byte 34632 @ 29
- .4byte 37800 @ 30
- .4byte 41111 @ 31
- .4byte 44564 @ 32
- .4byte 48155 @ 33
- .4byte 51881 @ 34
- .4byte 55737 @ 35
- .4byte 59719 @ 36
- .4byte 63822 @ 37
- .4byte 68041 @ 38
- .4byte 72369 @ 39
- .4byte 76800 @ 40
- .4byte 81326 @ 41
- .4byte 85942 @ 42
- .4byte 90637 @ 43
- .4byte 95406 @ 44
- .4byte 100237 @ 45
- .4byte 105122 @ 46
- .4byte 110052 @ 47
- .4byte 115015 @ 48
- .4byte 120001 @ 49
- .4byte 125000 @ 50
- .4byte 131324 @ 51
- .4byte 137795 @ 52
- .4byte 144410 @ 53
- .4byte 151165 @ 54
- .4byte 158056 @ 55
- .4byte 165079 @ 56
- .4byte 172229 @ 57
- .4byte 179503 @ 58
- .4byte 186894 @ 59
- .4byte 194400 @ 60
- .4byte 202013 @ 61
- .4byte 209728 @ 62
- .4byte 217540 @ 63
- .4byte 225443 @ 64
- .4byte 233431 @ 65
- .4byte 241496 @ 66
- .4byte 249633 @ 67
- .4byte 257834 @ 68
- .4byte 267406 @ 69
- .4byte 276458 @ 70
- .4byte 286328 @ 71
- .4byte 296358 @ 72
- .4byte 305767 @ 73
- .4byte 316074 @ 74
- .4byte 326531 @ 75
- .4byte 336255 @ 76
- .4byte 346965 @ 77
- .4byte 357812 @ 78
- .4byte 367807 @ 79
- .4byte 378880 @ 80
- .4byte 390077 @ 81
- .4byte 400293 @ 82
- .4byte 411686 @ 83
- .4byte 423190 @ 84
- .4byte 433572 @ 85
- .4byte 445239 @ 86
- .4byte 457001 @ 87
- .4byte 467489 @ 88
- .4byte 479378 @ 89
- .4byte 491346 @ 90
- .4byte 501878 @ 91
- .4byte 513934 @ 92
- .4byte 526049 @ 93
- .4byte 536557 @ 94
- .4byte 548720 @ 95
- .4byte 560922 @ 96
- .4byte 571333 @ 97
- .4byte 583539 @ 98
- .4byte 591882 @ 99
- .4byte 600000 @ 100
diff --git a/data/experience_tables/fast_growth_rate.inc b/data/experience_tables/fast_growth_rate.inc
deleted file mode 100644
index d8675fdc0..000000000
--- a/data/experience_tables/fast_growth_rate.inc
+++ /dev/null
@@ -1,101 +0,0 @@
- .4byte 0 @ 0
- .4byte 1 @ 1
- .4byte 6 @ 2
- .4byte 21 @ 3
- .4byte 51 @ 4
- .4byte 100 @ 5
- .4byte 172 @ 6
- .4byte 274 @ 7
- .4byte 409 @ 8
- .4byte 583 @ 9
- .4byte 800 @ 10
- .4byte 1064 @ 11
- .4byte 1382 @ 12
- .4byte 1757 @ 13
- .4byte 2195 @ 14
- .4byte 2700 @ 15
- .4byte 3276 @ 16
- .4byte 3930 @ 17
- .4byte 4665 @ 18
- .4byte 5487 @ 19
- .4byte 6400 @ 20
- .4byte 7408 @ 21
- .4byte 8518 @ 22
- .4byte 9733 @ 23
- .4byte 11059 @ 24
- .4byte 12500 @ 25
- .4byte 14060 @ 26
- .4byte 15746 @ 27
- .4byte 17561 @ 28
- .4byte 19511 @ 29
- .4byte 21600 @ 30
- .4byte 23832 @ 31
- .4byte 26214 @ 32
- .4byte 28749 @ 33
- .4byte 31443 @ 34
- .4byte 34300 @ 35
- .4byte 37324 @ 36
- .4byte 40522 @ 37
- .4byte 43897 @ 38
- .4byte 47455 @ 39
- .4byte 51200 @ 40
- .4byte 55136 @ 41
- .4byte 59270 @ 42
- .4byte 63605 @ 43
- .4byte 68147 @ 44
- .4byte 72900 @ 45
- .4byte 77868 @ 46
- .4byte 83058 @ 47
- .4byte 88473 @ 48
- .4byte 94119 @ 49
- .4byte 100000 @ 50
- .4byte 106120 @ 51
- .4byte 112486 @ 52
- .4byte 119101 @ 53
- .4byte 125971 @ 54
- .4byte 133100 @ 55
- .4byte 140492 @ 56
- .4byte 148154 @ 57
- .4byte 156089 @ 58
- .4byte 164303 @ 59
- .4byte 172800 @ 60
- .4byte 181584 @ 61
- .4byte 190662 @ 62
- .4byte 200037 @ 63
- .4byte 209715 @ 64
- .4byte 219700 @ 65
- .4byte 229996 @ 66
- .4byte 240610 @ 67
- .4byte 251545 @ 68
- .4byte 262807 @ 69
- .4byte 274400 @ 70
- .4byte 286328 @ 71
- .4byte 298598 @ 72
- .4byte 311213 @ 73
- .4byte 324179 @ 74
- .4byte 337500 @ 75
- .4byte 351180 @ 76
- .4byte 365226 @ 77
- .4byte 379641 @ 78
- .4byte 394431 @ 79
- .4byte 409600 @ 80
- .4byte 425152 @ 81
- .4byte 441094 @ 82
- .4byte 457429 @ 83
- .4byte 474163 @ 84
- .4byte 491300 @ 85
- .4byte 508844 @ 86
- .4byte 526802 @ 87
- .4byte 545177 @ 88
- .4byte 563975 @ 89
- .4byte 583200 @ 90
- .4byte 602856 @ 91
- .4byte 622950 @ 92
- .4byte 643485 @ 93
- .4byte 664467 @ 94
- .4byte 685900 @ 95
- .4byte 707788 @ 96
- .4byte 730138 @ 97
- .4byte 752953 @ 98
- .4byte 776239 @ 99
- .4byte 800000 @ 100
diff --git a/data/experience_tables/fluctuating_growth_rate.inc b/data/experience_tables/fluctuating_growth_rate.inc
deleted file mode 100644
index 81a962327..000000000
--- a/data/experience_tables/fluctuating_growth_rate.inc
+++ /dev/null
@@ -1,101 +0,0 @@
- .4byte 0 @ 0
- .4byte 1 @ 1
- .4byte 4 @ 2
- .4byte 13 @ 3
- .4byte 32 @ 4
- .4byte 65 @ 5
- .4byte 112 @ 6
- .4byte 178 @ 7
- .4byte 276 @ 8
- .4byte 393 @ 9
- .4byte 540 @ 10
- .4byte 745 @ 11
- .4byte 967 @ 12
- .4byte 1230 @ 13
- .4byte 1591 @ 14
- .4byte 1957 @ 15
- .4byte 2457 @ 16
- .4byte 3046 @ 17
- .4byte 3732 @ 18
- .4byte 4526 @ 19
- .4byte 5440 @ 20
- .4byte 6482 @ 21
- .4byte 7666 @ 22
- .4byte 9003 @ 23
- .4byte 10506 @ 24
- .4byte 12187 @ 25
- .4byte 14060 @ 26
- .4byte 16140 @ 27
- .4byte 18439 @ 28
- .4byte 20974 @ 29
- .4byte 23760 @ 30
- .4byte 26811 @ 31
- .4byte 30146 @ 32
- .4byte 33780 @ 33
- .4byte 37731 @ 34
- .4byte 42017 @ 35
- .4byte 46656 @ 36
- .4byte 50653 @ 37
- .4byte 55969 @ 38
- .4byte 60505 @ 39
- .4byte 66560 @ 40
- .4byte 71677 @ 41
- .4byte 78533 @ 42
- .4byte 84277 @ 43
- .4byte 91998 @ 44
- .4byte 98415 @ 45
- .4byte 107069 @ 46
- .4byte 114205 @ 47
- .4byte 123863 @ 48
- .4byte 131766 @ 49
- .4byte 142500 @ 50
- .4byte 151222 @ 51
- .4byte 163105 @ 52
- .4byte 172697 @ 53
- .4byte 185807 @ 54
- .4byte 196322 @ 55
- .4byte 210739 @ 56
- .4byte 222231 @ 57
- .4byte 238036 @ 58
- .4byte 250562 @ 59
- .4byte 267840 @ 60
- .4byte 281456 @ 61
- .4byte 300293 @ 62
- .4byte 315059 @ 63
- .4byte 335544 @ 64
- .4byte 351520 @ 65
- .4byte 373744 @ 66
- .4byte 390991 @ 67
- .4byte 415050 @ 68
- .4byte 433631 @ 69
- .4byte 459620 @ 70
- .4byte 479600 @ 71
- .4byte 507617 @ 72
- .4byte 529063 @ 73
- .4byte 559209 @ 74
- .4byte 582187 @ 75
- .4byte 614566 @ 76
- .4byte 639146 @ 77
- .4byte 673863 @ 78
- .4byte 700115 @ 79
- .4byte 737280 @ 80
- .4byte 765275 @ 81
- .4byte 804997 @ 82
- .4byte 834809 @ 83
- .4byte 877201 @ 84
- .4byte 908905 @ 85
- .4byte 954084 @ 86
- .4byte 987754 @ 87
- .4byte 1035837 @ 88
- .4byte 1071552 @ 89
- .4byte 1122660 @ 90
- .4byte 1160499 @ 91
- .4byte 1214753 @ 92
- .4byte 1254796 @ 93
- .4byte 1312322 @ 94
- .4byte 1354652 @ 95
- .4byte 1415577 @ 96
- .4byte 1460276 @ 97
- .4byte 1524731 @ 98
- .4byte 1571884 @ 99
- .4byte 1640000 @ 100
diff --git a/data/experience_tables/medium_fast_growth_rate.inc b/data/experience_tables/medium_fast_growth_rate.inc
deleted file mode 100644
index 5a51dd381..000000000
--- a/data/experience_tables/medium_fast_growth_rate.inc
+++ /dev/null
@@ -1,101 +0,0 @@
- .4byte 0 @ 0
- .4byte 1 @ 1
- .4byte 8 @ 2
- .4byte 27 @ 3
- .4byte 64 @ 4
- .4byte 125 @ 5
- .4byte 216 @ 6
- .4byte 343 @ 7
- .4byte 512 @ 8
- .4byte 729 @ 9
- .4byte 1000 @ 10
- .4byte 1331 @ 11
- .4byte 1728 @ 12
- .4byte 2197 @ 13
- .4byte 2744 @ 14
- .4byte 3375 @ 15
- .4byte 4096 @ 16
- .4byte 4913 @ 17
- .4byte 5832 @ 18
- .4byte 6859 @ 19
- .4byte 8000 @ 20
- .4byte 9261 @ 21
- .4byte 10648 @ 22
- .4byte 12167 @ 23
- .4byte 13824 @ 24
- .4byte 15625 @ 25
- .4byte 17576 @ 26
- .4byte 19683 @ 27
- .4byte 21952 @ 28
- .4byte 24389 @ 29
- .4byte 27000 @ 30
- .4byte 29791 @ 31
- .4byte 32768 @ 32
- .4byte 35937 @ 33
- .4byte 39304 @ 34
- .4byte 42875 @ 35
- .4byte 46656 @ 36
- .4byte 50653 @ 37
- .4byte 54872 @ 38
- .4byte 59319 @ 39
- .4byte 64000 @ 40
- .4byte 68921 @ 41
- .4byte 74088 @ 42
- .4byte 79507 @ 43
- .4byte 85184 @ 44
- .4byte 91125 @ 45
- .4byte 97336 @ 46
- .4byte 103823 @ 47
- .4byte 110592 @ 48
- .4byte 117649 @ 49
- .4byte 125000 @ 50
- .4byte 132651 @ 51
- .4byte 140608 @ 52
- .4byte 148877 @ 53
- .4byte 157464 @ 54
- .4byte 166375 @ 55
- .4byte 175616 @ 56
- .4byte 185193 @ 57
- .4byte 195112 @ 58
- .4byte 205379 @ 59
- .4byte 216000 @ 60
- .4byte 226981 @ 61
- .4byte 238328 @ 62
- .4byte 250047 @ 63
- .4byte 262144 @ 64
- .4byte 274625 @ 65
- .4byte 287496 @ 66
- .4byte 300763 @ 67
- .4byte 314432 @ 68
- .4byte 328509 @ 69
- .4byte 343000 @ 70
- .4byte 357911 @ 71
- .4byte 373248 @ 72
- .4byte 389017 @ 73
- .4byte 405224 @ 74
- .4byte 421875 @ 75
- .4byte 438976 @ 76
- .4byte 456533 @ 77
- .4byte 474552 @ 78
- .4byte 493039 @ 79
- .4byte 512000 @ 80
- .4byte 531441 @ 81
- .4byte 551368 @ 82
- .4byte 571787 @ 83
- .4byte 592704 @ 84
- .4byte 614125 @ 85
- .4byte 636056 @ 86
- .4byte 658503 @ 87
- .4byte 681472 @ 88
- .4byte 704969 @ 89
- .4byte 729000 @ 90
- .4byte 753571 @ 91
- .4byte 778688 @ 92
- .4byte 804357 @ 93
- .4byte 830584 @ 94
- .4byte 857375 @ 95
- .4byte 884736 @ 96
- .4byte 912673 @ 97
- .4byte 941192 @ 98
- .4byte 970299 @ 99
- .4byte 1000000 @ 100
diff --git a/data/experience_tables/medium_slow_growth_rate.inc b/data/experience_tables/medium_slow_growth_rate.inc
deleted file mode 100644
index d4c16b8c0..000000000
--- a/data/experience_tables/medium_slow_growth_rate.inc
+++ /dev/null
@@ -1,101 +0,0 @@
- .4byte 0 @ 0
- .4byte 1 @ 1
- .4byte 9 @ 2
- .4byte 57 @ 3
- .4byte 96 @ 4
- .4byte 135 @ 5
- .4byte 179 @ 6
- .4byte 236 @ 7
- .4byte 314 @ 8
- .4byte 419 @ 9
- .4byte 560 @ 10
- .4byte 742 @ 11
- .4byte 973 @ 12
- .4byte 1261 @ 13
- .4byte 1612 @ 14
- .4byte 2035 @ 15
- .4byte 2535 @ 16
- .4byte 3120 @ 17
- .4byte 3798 @ 18
- .4byte 4575 @ 19
- .4byte 5460 @ 20
- .4byte 6458 @ 21
- .4byte 7577 @ 22
- .4byte 8825 @ 23
- .4byte 10208 @ 24
- .4byte 11735 @ 25
- .4byte 13411 @ 26
- .4byte 15244 @ 27
- .4byte 17242 @ 28
- .4byte 19411 @ 29
- .4byte 21760 @ 30
- .4byte 24294 @ 31
- .4byte 27021 @ 32
- .4byte 29949 @ 33
- .4byte 33084 @ 34
- .4byte 36435 @ 35
- .4byte 40007 @ 36
- .4byte 43808 @ 37
- .4byte 47846 @ 38
- .4byte 52127 @ 39
- .4byte 56660 @ 40
- .4byte 61450 @ 41
- .4byte 66505 @ 42
- .4byte 71833 @ 43
- .4byte 77440 @ 44
- .4byte 83335 @ 45
- .4byte 89523 @ 46
- .4byte 96012 @ 47
- .4byte 102810 @ 48
- .4byte 109923 @ 49
- .4byte 117360 @ 50
- .4byte 125126 @ 51
- .4byte 133229 @ 52
- .4byte 141677 @ 53
- .4byte 150476 @ 54
- .4byte 159635 @ 55
- .4byte 169159 @ 56
- .4byte 179056 @ 57
- .4byte 189334 @ 58
- .4byte 199999 @ 59
- .4byte 211060 @ 60
- .4byte 222522 @ 61
- .4byte 234393 @ 62
- .4byte 246681 @ 63
- .4byte 259392 @ 64
- .4byte 272535 @ 65
- .4byte 286115 @ 66
- .4byte 300140 @ 67
- .4byte 314618 @ 68
- .4byte 329555 @ 69
- .4byte 344960 @ 70
- .4byte 360838 @ 71
- .4byte 377197 @ 72
- .4byte 394045 @ 73
- .4byte 411388 @ 74
- .4byte 429235 @ 75
- .4byte 447591 @ 76
- .4byte 466464 @ 77
- .4byte 485862 @ 78
- .4byte 505791 @ 79
- .4byte 526260 @ 80
- .4byte 547274 @ 81
- .4byte 568841 @ 82
- .4byte 590969 @ 83
- .4byte 613664 @ 84
- .4byte 636935 @ 85
- .4byte 660787 @ 86
- .4byte 685228 @ 87
- .4byte 710266 @ 88
- .4byte 735907 @ 89
- .4byte 762160 @ 90
- .4byte 789030 @ 91
- .4byte 816525 @ 92
- .4byte 844653 @ 93
- .4byte 873420 @ 94
- .4byte 902835 @ 95
- .4byte 932903 @ 96
- .4byte 963632 @ 97
- .4byte 995030 @ 98
- .4byte 1027103 @ 99
- .4byte 1059860 @ 100
diff --git a/data/experience_tables/slow_growth_rate.inc b/data/experience_tables/slow_growth_rate.inc
deleted file mode 100644
index 8d10b34ed..000000000
--- a/data/experience_tables/slow_growth_rate.inc
+++ /dev/null
@@ -1,101 +0,0 @@
- .4byte 0 @ 0
- .4byte 1 @ 1
- .4byte 10 @ 2
- .4byte 33 @ 3
- .4byte 80 @ 4
- .4byte 156 @ 5
- .4byte 270 @ 6
- .4byte 428 @ 7
- .4byte 640 @ 8
- .4byte 911 @ 9
- .4byte 1250 @ 10
- .4byte 1663 @ 11
- .4byte 2160 @ 12
- .4byte 2746 @ 13
- .4byte 3430 @ 14
- .4byte 4218 @ 15
- .4byte 5120 @ 16
- .4byte 6141 @ 17
- .4byte 7290 @ 18
- .4byte 8573 @ 19
- .4byte 10000 @ 20
- .4byte 11576 @ 21
- .4byte 13310 @ 22
- .4byte 15208 @ 23
- .4byte 17280 @ 24
- .4byte 19531 @ 25
- .4byte 21970 @ 26
- .4byte 24603 @ 27
- .4byte 27440 @ 28
- .4byte 30486 @ 29
- .4byte 33750 @ 30
- .4byte 37238 @ 31
- .4byte 40960 @ 32
- .4byte 44921 @ 33
- .4byte 49130 @ 34
- .4byte 53593 @ 35
- .4byte 58320 @ 36
- .4byte 63316 @ 37
- .4byte 68590 @ 38
- .4byte 74148 @ 39
- .4byte 80000 @ 40
- .4byte 86151 @ 41
- .4byte 92610 @ 42
- .4byte 99383 @ 43
- .4byte 106480 @ 44
- .4byte 113906 @ 45
- .4byte 121670 @ 46
- .4byte 129778 @ 47
- .4byte 138240 @ 48
- .4byte 147061 @ 49
- .4byte 156250 @ 50
- .4byte 165813 @ 51
- .4byte 175760 @ 52
- .4byte 186096 @ 53
- .4byte 196830 @ 54
- .4byte 207968 @ 55
- .4byte 219520 @ 56
- .4byte 231491 @ 57
- .4byte 243890 @ 58
- .4byte 256723 @ 59
- .4byte 270000 @ 60
- .4byte 283726 @ 61
- .4byte 297910 @ 62
- .4byte 312558 @ 63
- .4byte 327680 @ 64
- .4byte 343281 @ 65
- .4byte 359370 @ 66
- .4byte 375953 @ 67
- .4byte 393040 @ 68
- .4byte 410636 @ 69
- .4byte 428750 @ 70
- .4byte 447388 @ 71
- .4byte 466560 @ 72
- .4byte 486271 @ 73
- .4byte 506530 @ 74
- .4byte 527343 @ 75
- .4byte 548720 @ 76
- .4byte 570666 @ 77
- .4byte 593190 @ 78
- .4byte 616298 @ 79
- .4byte 640000 @ 80
- .4byte 664301 @ 81
- .4byte 689210 @ 82
- .4byte 714733 @ 83
- .4byte 740880 @ 84
- .4byte 767656 @ 85
- .4byte 795070 @ 86
- .4byte 823128 @ 87
- .4byte 851840 @ 88
- .4byte 881211 @ 89
- .4byte 911250 @ 90
- .4byte 941963 @ 91
- .4byte 973360 @ 92
- .4byte 1005446 @ 93
- .4byte 1038230 @ 94
- .4byte 1071718 @ 95
- .4byte 1105920 @ 96
- .4byte 1140841 @ 97
- .4byte 1176490 @ 98
- .4byte 1212873 @ 99
- .4byte 1250000 @ 100
diff --git a/data/graphics/berries/berry_graphics.inc b/data/graphics/berries/berry_graphics.inc
index 01a7c776d..358cc8fc1 100644
--- a/data/graphics/berries/berry_graphics.inc
+++ b/data/graphics/berries/berry_graphics.inc
@@ -1,343 +1,343 @@
.align 2
gBerryPic_Cheri:: @ 8D9C3A8
- .incbin "graphics/berries/pics/cheri.4bpp.lz"
+ .incbin "graphics/berries/cheri.4bpp.lz"
.align 2
gBerryPic_Oran:: @ 8D9C4FC
- .incbin "graphics/berries/pics/oran.4bpp.lz"
+ .incbin "graphics/berries/oran.4bpp.lz"
.align 2
gBerryPic_Pecha:: @ 8D9C670
- .incbin "graphics/berries/pics/pecha.4bpp.lz"
+ .incbin "graphics/berries/pecha.4bpp.lz"
.align 2
gBerryPic_Rawst:: @ 8D9C7E4
- .incbin "graphics/berries/pics/rawst.4bpp.lz"
+ .incbin "graphics/berries/rawst.4bpp.lz"
.align 2
gBerryPic_Aspear:: @ 8D9C97C
- .incbin "graphics/berries/pics/aspear.4bpp.lz"
+ .incbin "graphics/berries/aspear.4bpp.lz"
.align 2
gBerryPic_Leppa:: @ 8D9CB24
- .incbin "graphics/berries/pics/leppa.4bpp.lz"
+ .incbin "graphics/berries/leppa.4bpp.lz"
.align 2
gBerryPic_Chesto:: @ 8D9CC94
- .incbin "graphics/berries/pics/chesto.4bpp.lz"
+ .incbin "graphics/berries/chesto.4bpp.lz"
.align 2
gBerryPic_Persim:: @ 8D9CE78
- .incbin "graphics/berries/pics/persim.4bpp.lz"
+ .incbin "graphics/berries/persim.4bpp.lz"
.align 2
gBerryPic_Lum:: @ 8D9CFC8
- .incbin "graphics/berries/pics/lum.4bpp.lz"
+ .incbin "graphics/berries/lum.4bpp.lz"
.align 2
gBerryPic_Sitrus:: @ 8D9D0E4
- .incbin "graphics/berries/pics/sitrus.4bpp.lz"
+ .incbin "graphics/berries/sitrus.4bpp.lz"
.align 2
gBerryPic_Figy:: @ 8D9D288
- .incbin "graphics/berries/pics/figy.4bpp.lz"
+ .incbin "graphics/berries/figy.4bpp.lz"
.align 2
gBerryPic_Wiki:: @ 8D9D434
- .incbin "graphics/berries/pics/wiki.4bpp.lz"
+ .incbin "graphics/berries/wiki.4bpp.lz"
.align 2
gBerryPic_Mago:: @ 8D9D628
- .incbin "graphics/berries/pics/mago.4bpp.lz"
+ .incbin "graphics/berries/mago.4bpp.lz"
.align 2
gBerryPic_Aguav:: @ 8D9D7DC
- .incbin "graphics/berries/pics/aguav.4bpp.lz"
+ .incbin "graphics/berries/aguav.4bpp.lz"
.align 2
gBerryPic_Iapapa:: @ 8D9D950
- .incbin "graphics/berries/pics/iapapa.4bpp.lz"
+ .incbin "graphics/berries/iapapa.4bpp.lz"
.align 2
gBerryPic_Razz:: @ 8D9DC08
- .incbin "graphics/berries/pics/razz.4bpp.lz"
+ .incbin "graphics/berries/razz.4bpp.lz"
.align 2
gBerryPic_Bluk:: @ 8D9DE38
- .incbin "graphics/berries/pics/bluk.4bpp.lz"
+ .incbin "graphics/berries/bluk.4bpp.lz"
.align 2
gBerryPic_Nanab:: @ 8D9E020
- .incbin "graphics/berries/pics/nanab.4bpp.lz"
+ .incbin "graphics/berries/nanab.4bpp.lz"
.align 2
gBerryPic_Wepear:: @ 8D9E194
- .incbin "graphics/berries/pics/wepear.4bpp.lz"
+ .incbin "graphics/berries/wepear.4bpp.lz"
.align 2
gBerryPic_Pinap:: @ 8D9E35C
- .incbin "graphics/berries/pics/pinap.4bpp.lz"
+ .incbin "graphics/berries/pinap.4bpp.lz"
.align 2
gBerryPic_Pomeg:: @ 8D9E570
- .incbin "graphics/berries/pics/pomeg.4bpp.lz"
+ .incbin "graphics/berries/pomeg.4bpp.lz"
.align 2
gBerryPic_Kelpsy:: @ 8D9E718
- .incbin "graphics/berries/pics/kelpsy.4bpp.lz"
+ .incbin "graphics/berries/kelpsy.4bpp.lz"
.align 2
gBerryPic_Qualot:: @ 8D9E8C0
- .incbin "graphics/berries/pics/qualot.4bpp.lz"
+ .incbin "graphics/berries/qualot.4bpp.lz"
.align 2
gBerryPic_Hondew:: @ 8D9EA8C
- .incbin "graphics/berries/pics/hondew.4bpp.lz"
+ .incbin "graphics/berries/hondew.4bpp.lz"
.align 2
gBerryPic_Grepa:: @ 8D9ECE4
- .incbin "graphics/berries/pics/grepa.4bpp.lz"
+ .incbin "graphics/berries/grepa.4bpp.lz"
.align 2
gBerryPic_Tamato:: @ 8D9EE74
- .incbin "graphics/berries/pics/tamato.4bpp.lz"
+ .incbin "graphics/berries/tamato.4bpp.lz"
.align 2
gBerryPic_Cornn:: @ 8D9F138
- .incbin "graphics/berries/pics/cornn.4bpp.lz"
+ .incbin "graphics/berries/cornn.4bpp.lz"
.align 2
gBerryPic_Magost:: @ 8D9F33C
- .incbin "graphics/berries/pics/magost.4bpp.lz"
+ .incbin "graphics/berries/magost.4bpp.lz"
.align 2
gBerryPic_Rabuta:: @ 8D9F4E0
- .incbin "graphics/berries/pics/rabuta.4bpp.lz"
+ .incbin "graphics/berries/rabuta.4bpp.lz"
.align 2
gBerryPic_Nomel:: @ 8D9F7D4
- .incbin "graphics/berries/pics/nomel.4bpp.lz"
+ .incbin "graphics/berries/nomel.4bpp.lz"
.align 2
gBerryPic_Spelon:: @ 8D9F9B0
- .incbin "graphics/berries/pics/spelon.4bpp.lz"
+ .incbin "graphics/berries/spelon.4bpp.lz"
.align 2
gBerryPic_Pamtre:: @ 8D9FBA0
- .incbin "graphics/berries/pics/pamtre.4bpp.lz"
+ .incbin "graphics/berries/pamtre.4bpp.lz"
.align 2
gBerryPic_Watmel:: @ 8D9FDF0
- .incbin "graphics/berries/pics/watmel.4bpp.lz"
+ .incbin "graphics/berries/watmel.4bpp.lz"
.align 2
gBerryPic_Durin:: @ 8DA00D4
- .incbin "graphics/berries/pics/durin.4bpp.lz"
+ .incbin "graphics/berries/durin.4bpp.lz"
.align 2
gBerryPic_Belue:: @ 8DA04A0
- .incbin "graphics/berries/pics/belue.4bpp.lz"
+ .incbin "graphics/berries/belue.4bpp.lz"
.align 2
gBerryPic_Liechi:: @ 8DA0778
- .incbin "graphics/berries/pics/liechi.4bpp.lz"
+ .incbin "graphics/berries/liechi.4bpp.lz"
.align 2
gBerryPic_Ganlon:: @ 8DA09D0
- .incbin "graphics/berries/pics/ganlon.4bpp.lz"
+ .incbin "graphics/berries/ganlon.4bpp.lz"
.align 2
gBerryPic_Salac:: @ 8DA0B68
- .incbin "graphics/berries/pics/salac.4bpp.lz"
+ .incbin "graphics/berries/salac.4bpp.lz"
.align 2
gBerryPic_Petaya:: @ 8DA0DAC
- .incbin "graphics/berries/pics/petaya.4bpp.lz"
+ .incbin "graphics/berries/petaya.4bpp.lz"
.align 2
gBerryPic_Apicot:: @ 8DA1054
- .incbin "graphics/berries/pics/apicot.4bpp.lz"
+ .incbin "graphics/berries/apicot.4bpp.lz"
.align 2
gBerryPic_Lansat:: @ 8DA11E4
- .incbin "graphics/berries/pics/lansat.4bpp.lz"
+ .incbin "graphics/berries/lansat.4bpp.lz"
.align 2
gBerryPic_Starf:: @ 8DA13D8
- .incbin "graphics/berries/pics/starf.4bpp.lz"
+ .incbin "graphics/berries/starf.4bpp.lz"
.align 2
gBerryPic_Enigma:: @ 8DA15A8
- .incbin "graphics/berries/pics/enigma.4bpp.lz"
+ .incbin "graphics/berries/enigma.4bpp.lz"
.align 2
gBerryPalette_Cheri:: @ 8DA17C0
- .incbin "graphics/berries/palettes/cheri.gbapal.lz"
+ .incbin "graphics/berries/cheri.gbapal.lz"
.align 2
gBerryPalette_Oran:: @ 8DA17E8
- .incbin "graphics/berries/palettes/oran.gbapal.lz"
+ .incbin "graphics/berries/oran.gbapal.lz"
.align 2
gBerryPalette_Pecha:: @ 8DA1810
- .incbin "graphics/berries/palettes/pecha.gbapal.lz"
+ .incbin "graphics/berries/pecha.gbapal.lz"
.align 2
gBerryPalette_Rawst:: @ 8DA1838
- .incbin "graphics/berries/palettes/rawst.gbapal.lz"
+ .incbin "graphics/berries/rawst.gbapal.lz"
.align 2
gBerryPalette_Aspear:: @ 8DA1860
- .incbin "graphics/berries/palettes/aspear.gbapal.lz"
+ .incbin "graphics/berries/aspear.gbapal.lz"
.align 2
gBerryPalette_Leppa:: @ 8DA1888
- .incbin "graphics/berries/palettes/leppa.gbapal.lz"
+ .incbin "graphics/berries/leppa.gbapal.lz"
.align 2
gBerryPalette_Chesto:: @ 8DA18B0
- .incbin "graphics/berries/palettes/chesto.gbapal.lz"
+ .incbin "graphics/berries/chesto.gbapal.lz"
.align 2
gBerryPalette_Persim:: @ 8DA18D8
- .incbin "graphics/berries/palettes/persim.gbapal.lz"
+ .incbin "graphics/berries/persim.gbapal.lz"
.align 2
gBerryPalette_Lum:: @ 8DA1900
- .incbin "graphics/berries/palettes/lum.gbapal.lz"
+ .incbin "graphics/berries/lum.gbapal.lz"
.align 2
gBerryPalette_Sitrus:: @ 8DA1928
- .incbin "graphics/berries/palettes/sitrus.gbapal.lz"
+ .incbin "graphics/berries/sitrus.gbapal.lz"
.align 2
gBerryPalette_Figy:: @ 8DA1950
- .incbin "graphics/berries/palettes/figy.gbapal.lz"
+ .incbin "graphics/berries/figy.gbapal.lz"
.align 2
gBerryPalette_Wiki:: @ 8DA1978
- .incbin "graphics/berries/palettes/wiki.gbapal.lz"
+ .incbin "graphics/berries/wiki.gbapal.lz"
.align 2
gBerryPalette_Mago:: @ 8DA19A0
- .incbin "graphics/berries/palettes/mago.gbapal.lz"
+ .incbin "graphics/berries/mago.gbapal.lz"
.align 2
gBerryPalette_Aguav:: @ 8DA19C8
- .incbin "graphics/berries/palettes/aguav.gbapal.lz"
+ .incbin "graphics/berries/aguav.gbapal.lz"
.align 2
gBerryPalette_Iapapa:: @ 8DA19F0
- .incbin "graphics/berries/palettes/iapapa.gbapal.lz"
+ .incbin "graphics/berries/iapapa.gbapal.lz"
.align 2
gBerryPalette_Razz:: @ 8DA1A18
- .incbin "graphics/berries/palettes/razz.gbapal.lz"
+ .incbin "graphics/berries/razz.gbapal.lz"
.align 2
gBerryPalette_Bluk:: @ 8DA1A40
- .incbin "graphics/berries/palettes/bluk.gbapal.lz"
+ .incbin "graphics/berries/bluk.gbapal.lz"
.align 2
gBerryPalette_Nanab:: @ 8DA1A68
- .incbin "graphics/berries/palettes/nanab.gbapal.lz"
+ .incbin "graphics/berries/nanab.gbapal.lz"
.align 2
gBerryPalette_Wepear:: @ 8DA1A90
- .incbin "graphics/berries/palettes/wepear.gbapal.lz"
+ .incbin "graphics/berries/wepear.gbapal.lz"
.align 2
gBerryPalette_Pinap:: @ 8DA1AB8
- .incbin "graphics/berries/palettes/pinap.gbapal.lz"
+ .incbin "graphics/berries/pinap.gbapal.lz"
.align 2
gBerryPalette_Pomeg:: @ 8DA1AE0
- .incbin "graphics/berries/palettes/pomeg.gbapal.lz"
+ .incbin "graphics/berries/pomeg.gbapal.lz"
.align 2
gBerryPalette_Kelpsy:: @ 8DA1B08
- .incbin "graphics/berries/palettes/kelpsy.gbapal.lz"
+ .incbin "graphics/berries/kelpsy.gbapal.lz"
.align 2
gBerryPalette_Qualot:: @ 8DA1B30
- .incbin "graphics/berries/palettes/qualot.gbapal.lz"
+ .incbin "graphics/berries/qualot.gbapal.lz"
.align 2
gBerryPalette_Hondew:: @ 8DA1B58
- .incbin "graphics/berries/palettes/hondew.gbapal.lz"
+ .incbin "graphics/berries/hondew.gbapal.lz"
.align 2
gBerryPalette_Grepa:: @ 8DA1B80
- .incbin "graphics/berries/palettes/grepa.gbapal.lz"
+ .incbin "graphics/berries/grepa.gbapal.lz"
.align 2
gBerryPalette_Tamato:: @ 8DA1BA8
- .incbin "graphics/berries/palettes/tamato.gbapal.lz"
+ .incbin "graphics/berries/tamato.gbapal.lz"
.align 2
gBerryPalette_Cornn:: @ 8DA1BD0
- .incbin "graphics/berries/palettes/cornn.gbapal.lz"
+ .incbin "graphics/berries/cornn.gbapal.lz"
.align 2
gBerryPalette_Magost:: @ 8DA1BF8
- .incbin "graphics/berries/palettes/magost.gbapal.lz"
+ .incbin "graphics/berries/magost.gbapal.lz"
.align 2
gBerryPalette_Rabuta:: @ 8DA1C20
- .incbin "graphics/berries/palettes/rabuta.gbapal.lz"
+ .incbin "graphics/berries/rabuta.gbapal.lz"
.align 2
gBerryPalette_Nomel:: @ 8DA1C48
- .incbin "graphics/berries/palettes/nomel.gbapal.lz"
+ .incbin "graphics/berries/nomel.gbapal.lz"
.align 2
gBerryPalette_Spelon:: @ 8DA1C70
- .incbin "graphics/berries/palettes/spelon.gbapal.lz"
+ .incbin "graphics/berries/spelon.gbapal.lz"
.align 2
gBerryPalette_Pamtre:: @ 8DA1C98
- .incbin "graphics/berries/palettes/pamtre.gbapal.lz"
+ .incbin "graphics/berries/pamtre.gbapal.lz"
.align 2
gBerryPalette_Watmel:: @ 8DA1CC0
- .incbin "graphics/berries/palettes/watmel.gbapal.lz"
+ .incbin "graphics/berries/watmel.gbapal.lz"
.align 2
gBerryPalette_Durin:: @ 8DA1CE8
- .incbin "graphics/berries/palettes/durin.gbapal.lz"
+ .incbin "graphics/berries/durin.gbapal.lz"
.align 2
gBerryPalette_Belue:: @ 8DA1D10
- .incbin "graphics/berries/palettes/belue.gbapal.lz"
+ .incbin "graphics/berries/belue.gbapal.lz"
.align 2
gBerryPalette_Liechi:: @ 8DA1D38
- .incbin "graphics/berries/palettes/liechi.gbapal.lz"
+ .incbin "graphics/berries/liechi.gbapal.lz"
.align 2
gBerryPalette_Ganlon:: @ 8DA1D60
- .incbin "graphics/berries/palettes/ganlon.gbapal.lz"
+ .incbin "graphics/berries/ganlon.gbapal.lz"
.align 2
gBerryPalette_Salac:: @ 8DA1D88
- .incbin "graphics/berries/palettes/salac.gbapal.lz"
+ .incbin "graphics/berries/salac.gbapal.lz"
.align 2
gBerryPalette_Petaya:: @ 8DA1DB0
- .incbin "graphics/berries/palettes/petaya.gbapal.lz"
+ .incbin "graphics/berries/petaya.gbapal.lz"
.align 2
gBerryPalette_Apicot:: @ 8DA1DD8
- .incbin "graphics/berries/palettes/apicot.gbapal.lz"
+ .incbin "graphics/berries/apicot.gbapal.lz"
.align 2
gBerryPalette_Lansat:: @ 8DA1E00
- .incbin "graphics/berries/palettes/lansat.gbapal.lz"
+ .incbin "graphics/berries/lansat.gbapal.lz"
.align 2
gBerryPalette_Starf:: @ 8DA1E28
- .incbin "graphics/berries/palettes/starf.gbapal.lz"
+ .incbin "graphics/berries/starf.gbapal.lz"
.align 2
gBerryPalette_Enigma:: @ 8DA1E50
- .incbin "graphics/berries/palettes/enigma.gbapal.lz"
+ .incbin "graphics/berries/enigma.gbapal.lz"
diff --git a/data/item_effect_info.inc b/data/item_effect_info.inc
deleted file mode 100644
index adbe86619..000000000
--- a/data/item_effect_info.inc
+++ /dev/null
@@ -1,824 +0,0 @@
-gPotionItemEffectInfo:: @ 831E380
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 20
-
-gAntidoteItemEffectInfo:: @ 831E387
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x10
- .byte 0x00
- .byte 0x00
-
-gBurnHealItemEffectInfo:: @ 831E38D
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x08
- .byte 0x00
- .byte 0x00
-
-gIceHealItemEffectInfo:: @ 831E393
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 0x00
-
-gAwakeningItemEffectInfo:: @ 831E399
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x20
- .byte 0x00
- .byte 0x00
-
-gParalyzeHealItemEffectInfo:: @ 831E39F
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x02
- .byte 0x00
- .byte 0x00
-
-gFullRestoreItemEffectInfo:: @ 831E3A5
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x3f
- .byte 0x04
- .byte 0x00
- .byte 0xff
-
-gMaxPotionItemEffectInfo:: @ 831E3AC
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 0xff
-
-gHyperPotionItemEffectInfo:: @ 831E3B3
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 200
-
-gSuperPotionItemEffectInfo:: @ 831E3BA
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 50
-
-gFullHealItemEffectInfo:: @ 831E3C1
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x3f
- .byte 0x00
- .byte 0x00
-
-gReviveItemEffectInfo:: @ 831E3C7
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x44
- .byte 0x00
- .byte 0xfe
-
-gMaxReviveItemEffectInfo:: @ 831E3CE
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x44
- .byte 0x00
- .byte 0xff
-
-gFreshWaterItemEffectInfo:: @ 831E3D5
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 50
-
-gSodaPopItemEffectInfo:: @ 831E3DC
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 60
-
-gLemonadeItemEffectInfo:: @ 831E3E3
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 80
-
-gMoomooMilkItemEffectInfo:: @ 831E3EA
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 100
-
-gEnergyPowderItemEffectInfo:: @ 831E3F1
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0xe0
- .byte 50
- .byte 0xfb
- .byte 0xfb
- .byte 0xf6
-
-gEnergyRootItemEffectInfo:: @ 831E3FB
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0xe0
- .byte 200
- .byte 0xf6
- .byte 0xf6
- .byte 0xf1
-
-gHealPowderItemEffectInfo:: @ 831E405
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x3f
- .byte 0x00
- .byte 0xe0
- .byte 0xfb
- .byte 0xfb
- .byte 0xf6
-
-gRevivalHerbItemEffectInfo:: @ 831E40E
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x44
- .byte 0xe0
- .byte 0xff
- .byte 0xf1
- .byte 0xf1
- .byte 0xec
-
-gEtherItemEffectInfo:: @ 831E418
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x18
- .byte 0x00
- .byte 0x0a
-
-gMaxEtherItemEffectInfo:: @ 831E41F
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x18
- .byte 0x00
- .byte 0x7f
-
-gElixirItemEffectInfo:: @ 831E426
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x08
- .byte 0x00
- .byte 0x0a
-
-gMaxElixirItemEffectInfo:: @ 831E42D
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x08
- .byte 0x00
- .byte 0x7f
-
-gLavaCookieItemEffectInfo:: @ 831E434
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x3f
- .byte 0x00
- .byte 0x00
-
-gBlueFluteItemEffectInfo:: @ 831E43A
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x20
- .byte 0x00
- .byte 0x00
-
-gYellowFluteItemEffectInfo:: @ 831E440
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x01
- .byte 0x00
- .byte 0x00
-
-gRedFluteItemEffectInfo:: @ 831E446
- .byte 0x80
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
-
-gBerryJuiceItemEffectInfo:: @ 831E44C
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 20
-
-gSacredAshItemEffectInfo:: @ 831E453
- .byte 0x40
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x44
- .byte 0x00
- .byte 0xff
-
-gHPUpItemEffectInfo:: @ 831E45A
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x01
- .byte 0xe0
- .byte 0x0a
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gProteinItemEffectInfo:: @ 831E464
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x02
- .byte 0xe0
- .byte 0x0a
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gIronItemEffectInfo:: @ 831E46E
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xe1
- .byte 0x0a
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gCarbosItemEffectInfo:: @ 831E478
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xe2
- .byte 0x0a
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gCalciumItemEffectInfo:: @ 831E482
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xe8
- .byte 0x0a
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gRareCandyItemEffectInfo:: @ 831E48C
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x40
- .byte 0x44
- .byte 0xe0
- .byte 0xfd
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gPPUpItemEffectInfo:: @ 831E496
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x20
- .byte 0xe0
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gZincItemEffectInfo:: @ 831E49F
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xe4
- .byte 0x0a
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gPPMaxItemEffectInfo:: @ 831E4A9
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xf0
- .byte 0x05
- .byte 0x03
- .byte 0x02
-
-gGuardSpecItemEffectInfo:: @ 831E4B2
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x80
- .byte 0x00
- .byte 0x60
- .byte 0x01
- .byte 0x01
-
-gDireHitItemEffectInfo:: @ 831E4BA
- .byte 0x20
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x60
- .byte 0x01
- .byte 0x01
-
-gXAttackItemEffectInfo:: @ 831E4C2
- .byte 0x01
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x60
- .byte 0x01
- .byte 0x01
-
-gXDefendItemEffectInfo:: @ 831E4CA
- .byte 0x00
- .byte 0x10
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x60
- .byte 0x01
- .byte 0x01
-
-gXSpeedItemEffectInfo:: @ 831E4D2
- .byte 0x00
- .byte 0x01
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x60
- .byte 0x01
- .byte 0x01
-
-gXAccuracyItemEffectInfo:: @ 831E4DA
- .byte 0x00
- .byte 0x00
- .byte 0x10
- .byte 0x00
- .byte 0x00
- .byte 0x60
- .byte 0x01
- .byte 0x01
-
-gXSpecialItemEffectInfo:: @ 831E4E2
- .byte 0x00
- .byte 0x00
- .byte 0x01
- .byte 0x00
- .byte 0x00
- .byte 0x60
- .byte 0x01
- .byte 0x01
-
-gSunStoneItemEffectInfo:: @ 831E4EA
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x80
- .byte 0x00
-
-gMoonStoneItemEffectInfo:: @ 831E4F0
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x80
- .byte 0x00
-
-gFireStoneItemEffectInfo:: @ 831E4F6
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x80
- .byte 0x00
-
-gThunderStoneItemEffectInfo:: @ 831E4FC
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x80
- .byte 0x00
-
-gWaterStoneItemEffectInfo:: @ 831E502
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x80
- .byte 0x00
-
-gLeafStoneItemEffectInfo:: @ 831E508
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x80
- .byte 0x00
-
-gCheriBerryItemEffectInfo:: @ 831E50E
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x02
- .byte 0x00
- .byte 0x00
-
-gChestoBerryItemEffectInfo:: @ 831E514
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x20
- .byte 0x00
- .byte 0x00
-
-gPechaBerryItemEffectInfo:: @ 831E51A
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x10
- .byte 0x00
- .byte 0x00
-
-gRawstBerryItemEffectInfo:: @ 831E520
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x08
- .byte 0x00
- .byte 0x00
-
-gAspearBerryItemEffectInfo:: @ 831E526
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 0x00
-
-gLeppaBerryItemEffectInfo:: @ 831E52C
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x18
- .byte 0x00
- .byte 0x0a
-
-gOranBerryItemEffectInfo:: @ 831E533
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 10
-
-gPersimBerryItemEffectInfo:: @ 831E53A
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x01
- .byte 0x00
- .byte 0x00
-
-gLumBerryItemEffectInfo:: @ 831E540
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x3f
- .byte 0x00
- .byte 0x00
-
-gSitrusBerryItemEffectInfo:: @ 831E546
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x04
- .byte 0x00
- .byte 30
-
-gPomegBerryItemEffectInfo:: @ 831E54D
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x01
- .byte 0xe0
- .byte 0xf6
- .byte 0x0a
- .byte 0x05
- .byte 0x02
-
-gKelpsyBerryItemEffectInfo:: @ 831E557
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x02
- .byte 0xe0
- .byte 0xf6
- .byte 0x0a
- .byte 0x05
- .byte 0x02
-
-gQualotBerryItemEffectInfo:: @ 831E561
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xe1
- .byte 0xf6
- .byte 0x0a
- .byte 0x05
- .byte 0x02
-
-gHondewBerryItemEffectInfo:: @ 831E56B
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xe8
- .byte 0xf6
- .byte 0x0a
- .byte 0x05
- .byte 0x02
-
-gGrepaBerryItemEffectInfo:: @ 831E575
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xe4
- .byte 0xf6
- .byte 0x0a
- .byte 0x05
- .byte 0x02
-
-gTamatoBerryItemEffectInfo:: @ 831E57F
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0x00
- .byte 0xe2
- .byte 0xf6
- .byte 0x0a
- .byte 0x05
- .byte 0x02
-
- .align 2
-gItemEffectTable:: @ 831E58C
- .4byte gPotionItemEffectInfo
- .4byte gAntidoteItemEffectInfo
- .4byte gBurnHealItemEffectInfo
- .4byte gIceHealItemEffectInfo
- .4byte gAwakeningItemEffectInfo
- .4byte gParalyzeHealItemEffectInfo
- .4byte gFullRestoreItemEffectInfo
- .4byte gMaxPotionItemEffectInfo
- .4byte gHyperPotionItemEffectInfo
- .4byte gSuperPotionItemEffectInfo
- .4byte gFullHealItemEffectInfo
- .4byte gReviveItemEffectInfo
- .4byte gMaxReviveItemEffectInfo
- .4byte gFreshWaterItemEffectInfo
- .4byte gSodaPopItemEffectInfo
- .4byte gLemonadeItemEffectInfo
- .4byte gMoomooMilkItemEffectInfo
- .4byte gEnergyPowderItemEffectInfo
- .4byte gEnergyRootItemEffectInfo
- .4byte gHealPowderItemEffectInfo
- .4byte gRevivalHerbItemEffectInfo
- .4byte gEtherItemEffectInfo
- .4byte gMaxEtherItemEffectInfo
- .4byte gElixirItemEffectInfo
- .4byte gMaxElixirItemEffectInfo
- .4byte gLavaCookieItemEffectInfo
- .4byte gBlueFluteItemEffectInfo
- .4byte gYellowFluteItemEffectInfo
- .4byte gRedFluteItemEffectInfo
- .4byte 0
- .4byte 0
- .4byte gBerryJuiceItemEffectInfo
- .4byte gSacredAshItemEffectInfo
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte gHPUpItemEffectInfo
- .4byte gProteinItemEffectInfo
- .4byte gIronItemEffectInfo
- .4byte gCarbosItemEffectInfo
- .4byte gCalciumItemEffectInfo
- .4byte gRareCandyItemEffectInfo
- .4byte gPPUpItemEffectInfo
- .4byte gZincItemEffectInfo
- .4byte gPPMaxItemEffectInfo
- .4byte 0
- .4byte gGuardSpecItemEffectInfo
- .4byte gDireHitItemEffectInfo
- .4byte gXAttackItemEffectInfo
- .4byte gXDefendItemEffectInfo
- .4byte gXSpeedItemEffectInfo
- .4byte gXAccuracyItemEffectInfo
- .4byte gXSpecialItemEffectInfo
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte gSunStoneItemEffectInfo
- .4byte gMoonStoneItemEffectInfo
- .4byte gFireStoneItemEffectInfo
- .4byte gThunderStoneItemEffectInfo
- .4byte gWaterStoneItemEffectInfo
- .4byte gLeafStoneItemEffectInfo
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte gCheriBerryItemEffectInfo
- .4byte gChestoBerryItemEffectInfo
- .4byte gPechaBerryItemEffectInfo
- .4byte gRawstBerryItemEffectInfo
- .4byte gAspearBerryItemEffectInfo
- .4byte gLeppaBerryItemEffectInfo
- .4byte gOranBerryItemEffectInfo
- .4byte gPersimBerryItemEffectInfo
- .4byte gLumBerryItemEffectInfo
- .4byte gSitrusBerryItemEffectInfo
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte gPomegBerryItemEffectInfo
- .4byte gKelpsyBerryItemEffectInfo
- .4byte gQualotBerryItemEffectInfo
- .4byte gHondewBerryItemEffectInfo
- .4byte gGrepaBerryItemEffectInfo
- .4byte gTamatoBerryItemEffectInfo
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
- .4byte 0
diff --git a/data/item_icon.s b/data/item_icon.s
index 41fb7d9a1..6fd94d0a0 100644
--- a/data/item_icon.s
+++ b/data/item_icon.s
@@ -6,18 +6,3 @@
@ 8614410
.include "data/graphics/items/item_icon_table.inc"
-gUnknown_08614FE0:: @ 8614FE0
- .2byte 0
- .2byte 0x8000
- .2byte 0x2400
- .2byte 0
-
-gUnknown_08614FE8:: @ 8614FE8
- obj_image_anim_frame 0, 0
- obj_image_anim_end
-
-gUnknown_08614FF0:: @ 8614FF0
- .4byte gUnknown_08614FE8
-
-gUnknown_08614FF4:: @ 8614FF4
- spr_template 0, 0, gUnknown_08614FE0, gUnknown_08614FF0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/data/item_menu_icons.s b/data/item_menu_icons.s
index ff86fc54d..36f339b09 100644
--- a/data/item_menu_icons.s
+++ b/data/item_menu_icons.s
@@ -1,4 +1,4 @@
- #include "constants/items.h"
+#include "constants/items.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/level_up_learnset_pointers.inc b/data/level_up_learnset_pointers.inc
deleted file mode 100644
index 4b757dda9..000000000
--- a/data/level_up_learnset_pointers.inc
+++ /dev/null
@@ -1,414 +0,0 @@
- .align 2
-gLevelUpLearnsets:: @ 832937C
- .4byte gBulbasaurLevelUpLearnset
- .4byte gBulbasaurLevelUpLearnset
- .4byte gIvysaurLevelUpLearnset
- .4byte gVenusaurLevelUpLearnset
- .4byte gCharmanderLevelUpLearnset
- .4byte gCharmeleonLevelUpLearnset
- .4byte gCharizardLevelUpLearnset
- .4byte gSquirtleLevelUpLearnset
- .4byte gWartortleLevelUpLearnset
- .4byte gBlastoiseLevelUpLearnset
- .4byte gCaterpieLevelUpLearnset
- .4byte gMetapodLevelUpLearnset
- .4byte gButterfreeLevelUpLearnset
- .4byte gWeedleLevelUpLearnset
- .4byte gKakunaLevelUpLearnset
- .4byte gBeedrillLevelUpLearnset
- .4byte gPidgeyLevelUpLearnset
- .4byte gPidgeottoLevelUpLearnset
- .4byte gPidgeotLevelUpLearnset
- .4byte gRattataLevelUpLearnset
- .4byte gRaticateLevelUpLearnset
- .4byte gSpearowLevelUpLearnset
- .4byte gFearowLevelUpLearnset
- .4byte gEkansLevelUpLearnset
- .4byte gArbokLevelUpLearnset
- .4byte gPikachuLevelUpLearnset
- .4byte gRaichuLevelUpLearnset
- .4byte gSandshrewLevelUpLearnset
- .4byte gSandslashLevelUpLearnset
- .4byte gNidoranFLevelUpLearnset
- .4byte gNidorinaLevelUpLearnset
- .4byte gNidoqueenLevelUpLearnset
- .4byte gNidoranMLevelUpLearnset
- .4byte gNidorinoLevelUpLearnset
- .4byte gNidokingLevelUpLearnset
- .4byte gClefairyLevelUpLearnset
- .4byte gClefableLevelUpLearnset
- .4byte gVulpixLevelUpLearnset
- .4byte gNinetalesLevelUpLearnset
- .4byte gJigglypuffLevelUpLearnset
- .4byte gWigglytuffLevelUpLearnset
- .4byte gZubatLevelUpLearnset
- .4byte gGolbatLevelUpLearnset
- .4byte gOddishLevelUpLearnset
- .4byte gGloomLevelUpLearnset
- .4byte gVileplumeLevelUpLearnset
- .4byte gParasLevelUpLearnset
- .4byte gParasectLevelUpLearnset
- .4byte gVenonatLevelUpLearnset
- .4byte gVenomothLevelUpLearnset
- .4byte gDiglettLevelUpLearnset
- .4byte gDugtrioLevelUpLearnset
- .4byte gMeowthLevelUpLearnset
- .4byte gPersianLevelUpLearnset
- .4byte gPsyduckLevelUpLearnset
- .4byte gGolduckLevelUpLearnset
- .4byte gMankeyLevelUpLearnset
- .4byte gPrimeapeLevelUpLearnset
- .4byte gGrowlitheLevelUpLearnset
- .4byte gArcanineLevelUpLearnset
- .4byte gPoliwagLevelUpLearnset
- .4byte gPoliwhirlLevelUpLearnset
- .4byte gPoliwrathLevelUpLearnset
- .4byte gAbraLevelUpLearnset
- .4byte gKadabraLevelUpLearnset
- .4byte gAlakazamLevelUpLearnset
- .4byte gMachopLevelUpLearnset
- .4byte gMachokeLevelUpLearnset
- .4byte gMachampLevelUpLearnset
- .4byte gBellsproutLevelUpLearnset
- .4byte gWeepinbellLevelUpLearnset
- .4byte gVictreebelLevelUpLearnset
- .4byte gTentacoolLevelUpLearnset
- .4byte gTentacruelLevelUpLearnset
- .4byte gGeodudeLevelUpLearnset
- .4byte gGravelerLevelUpLearnset
- .4byte gGolemLevelUpLearnset
- .4byte gPonytaLevelUpLearnset
- .4byte gRapidashLevelUpLearnset
- .4byte gSlowpokeLevelUpLearnset
- .4byte gSlowbroLevelUpLearnset
- .4byte gMagnemiteLevelUpLearnset
- .4byte gMagnetonLevelUpLearnset
- .4byte gFarfetchdLevelUpLearnset
- .4byte gDoduoLevelUpLearnset
- .4byte gDodrioLevelUpLearnset
- .4byte gSeelLevelUpLearnset
- .4byte gDewgongLevelUpLearnset
- .4byte gGrimerLevelUpLearnset
- .4byte gMukLevelUpLearnset
- .4byte gShellderLevelUpLearnset
- .4byte gCloysterLevelUpLearnset
- .4byte gGastlyLevelUpLearnset
- .4byte gHaunterLevelUpLearnset
- .4byte gGengarLevelUpLearnset
- .4byte gOnixLevelUpLearnset
- .4byte gDrowzeeLevelUpLearnset
- .4byte gHypnoLevelUpLearnset
- .4byte gKrabbyLevelUpLearnset
- .4byte gKinglerLevelUpLearnset
- .4byte gVoltorbLevelUpLearnset
- .4byte gElectrodeLevelUpLearnset
- .4byte gExeggcuteLevelUpLearnset
- .4byte gExeggutorLevelUpLearnset
- .4byte gCuboneLevelUpLearnset
- .4byte gMarowakLevelUpLearnset
- .4byte gHitmonleeLevelUpLearnset
- .4byte gHitmonchanLevelUpLearnset
- .4byte gLickitungLevelUpLearnset
- .4byte gKoffingLevelUpLearnset
- .4byte gWeezingLevelUpLearnset
- .4byte gRhyhornLevelUpLearnset
- .4byte gRhydonLevelUpLearnset
- .4byte gChanseyLevelUpLearnset
- .4byte gTangelaLevelUpLearnset
- .4byte gKangaskhanLevelUpLearnset
- .4byte gHorseaLevelUpLearnset
- .4byte gSeadraLevelUpLearnset
- .4byte gGoldeenLevelUpLearnset
- .4byte gSeakingLevelUpLearnset
- .4byte gStaryuLevelUpLearnset
- .4byte gStarmieLevelUpLearnset
- .4byte gMrmimeLevelUpLearnset
- .4byte gScytherLevelUpLearnset
- .4byte gJynxLevelUpLearnset
- .4byte gElectabuzzLevelUpLearnset
- .4byte gMagmarLevelUpLearnset
- .4byte gPinsirLevelUpLearnset
- .4byte gTaurosLevelUpLearnset
- .4byte gMagikarpLevelUpLearnset
- .4byte gGyaradosLevelUpLearnset
- .4byte gLaprasLevelUpLearnset
- .4byte gDittoLevelUpLearnset
- .4byte gEeveeLevelUpLearnset
- .4byte gVaporeonLevelUpLearnset
- .4byte gJolteonLevelUpLearnset
- .4byte gFlareonLevelUpLearnset
- .4byte gPorygonLevelUpLearnset
- .4byte gOmanyteLevelUpLearnset
- .4byte gOmastarLevelUpLearnset
- .4byte gKabutoLevelUpLearnset
- .4byte gKabutopsLevelUpLearnset
- .4byte gAerodactylLevelUpLearnset
- .4byte gSnorlaxLevelUpLearnset
- .4byte gArticunoLevelUpLearnset
- .4byte gZapdosLevelUpLearnset
- .4byte gMoltresLevelUpLearnset
- .4byte gDratiniLevelUpLearnset
- .4byte gDragonairLevelUpLearnset
- .4byte gDragoniteLevelUpLearnset
- .4byte gMewtwoLevelUpLearnset
- .4byte gMewLevelUpLearnset
- .4byte gChikoritaLevelUpLearnset
- .4byte gBayleefLevelUpLearnset
- .4byte gMeganiumLevelUpLearnset
- .4byte gCyndaquilLevelUpLearnset
- .4byte gQuilavaLevelUpLearnset
- .4byte gTyphlosionLevelUpLearnset
- .4byte gTotodileLevelUpLearnset
- .4byte gCroconawLevelUpLearnset
- .4byte gFeraligatrLevelUpLearnset
- .4byte gSentretLevelUpLearnset
- .4byte gFurretLevelUpLearnset
- .4byte gHoothootLevelUpLearnset
- .4byte gNoctowlLevelUpLearnset
- .4byte gLedybaLevelUpLearnset
- .4byte gLedianLevelUpLearnset
- .4byte gSpinarakLevelUpLearnset
- .4byte gAriadosLevelUpLearnset
- .4byte gCrobatLevelUpLearnset
- .4byte gChinchouLevelUpLearnset
- .4byte gLanturnLevelUpLearnset
- .4byte gPichuLevelUpLearnset
- .4byte gCleffaLevelUpLearnset
- .4byte gIgglybuffLevelUpLearnset
- .4byte gTogepiLevelUpLearnset
- .4byte gTogeticLevelUpLearnset
- .4byte gNatuLevelUpLearnset
- .4byte gXatuLevelUpLearnset
- .4byte gMareepLevelUpLearnset
- .4byte gFlaaffyLevelUpLearnset
- .4byte gAmpharosLevelUpLearnset
- .4byte gBellossomLevelUpLearnset
- .4byte gMarillLevelUpLearnset
- .4byte gAzumarillLevelUpLearnset
- .4byte gSudowoodoLevelUpLearnset
- .4byte gPolitoedLevelUpLearnset
- .4byte gHoppipLevelUpLearnset
- .4byte gSkiploomLevelUpLearnset
- .4byte gJumpluffLevelUpLearnset
- .4byte gAipomLevelUpLearnset
- .4byte gSunkernLevelUpLearnset
- .4byte gSunfloraLevelUpLearnset
- .4byte gYanmaLevelUpLearnset
- .4byte gWooperLevelUpLearnset
- .4byte gQuagsireLevelUpLearnset
- .4byte gEspeonLevelUpLearnset
- .4byte gUmbreonLevelUpLearnset
- .4byte gMurkrowLevelUpLearnset
- .4byte gSlowkingLevelUpLearnset
- .4byte gMisdreavusLevelUpLearnset
- .4byte gUnownLevelUpLearnset
- .4byte gWobbuffetLevelUpLearnset
- .4byte gGirafarigLevelUpLearnset
- .4byte gPinecoLevelUpLearnset
- .4byte gForretressLevelUpLearnset
- .4byte gDunsparceLevelUpLearnset
- .4byte gGligarLevelUpLearnset
- .4byte gSteelixLevelUpLearnset
- .4byte gSnubbullLevelUpLearnset
- .4byte gGranbullLevelUpLearnset
- .4byte gQwilfishLevelUpLearnset
- .4byte gScizorLevelUpLearnset
- .4byte gShuckleLevelUpLearnset
- .4byte gHeracrossLevelUpLearnset
- .4byte gSneaselLevelUpLearnset
- .4byte gTeddiursaLevelUpLearnset
- .4byte gUrsaringLevelUpLearnset
- .4byte gSlugmaLevelUpLearnset
- .4byte gMagcargoLevelUpLearnset
- .4byte gSwinubLevelUpLearnset
- .4byte gPiloswineLevelUpLearnset
- .4byte gCorsolaLevelUpLearnset
- .4byte gRemoraidLevelUpLearnset
- .4byte gOctilleryLevelUpLearnset
- .4byte gDelibirdLevelUpLearnset
- .4byte gMantineLevelUpLearnset
- .4byte gSkarmoryLevelUpLearnset
- .4byte gHoundourLevelUpLearnset
- .4byte gHoundoomLevelUpLearnset
- .4byte gKingdraLevelUpLearnset
- .4byte gPhanpyLevelUpLearnset
- .4byte gDonphanLevelUpLearnset
- .4byte gPorygon2LevelUpLearnset
- .4byte gStantlerLevelUpLearnset
- .4byte gSmeargleLevelUpLearnset
- .4byte gTyrogueLevelUpLearnset
- .4byte gHitmontopLevelUpLearnset
- .4byte gSmoochumLevelUpLearnset
- .4byte gElekidLevelUpLearnset
- .4byte gMagbyLevelUpLearnset
- .4byte gMiltankLevelUpLearnset
- .4byte gBlisseyLevelUpLearnset
- .4byte gRaikouLevelUpLearnset
- .4byte gEnteiLevelUpLearnset
- .4byte gSuicuneLevelUpLearnset
- .4byte gLarvitarLevelUpLearnset
- .4byte gPupitarLevelUpLearnset
- .4byte gTyranitarLevelUpLearnset
- .4byte gLugiaLevelUpLearnset
- .4byte gHoOhLevelUpLearnset
- .4byte gCelebiLevelUpLearnset
- .4byte gSpecies252LevelUpLearnset
- .4byte gSpecies253LevelUpLearnset
- .4byte gSpecies254LevelUpLearnset
- .4byte gSpecies255LevelUpLearnset
- .4byte gSpecies256LevelUpLearnset
- .4byte gSpecies257LevelUpLearnset
- .4byte gSpecies258LevelUpLearnset
- .4byte gSpecies259LevelUpLearnset
- .4byte gSpecies260LevelUpLearnset
- .4byte gSpecies261LevelUpLearnset
- .4byte gSpecies262LevelUpLearnset
- .4byte gSpecies263LevelUpLearnset
- .4byte gSpecies264LevelUpLearnset
- .4byte gSpecies265LevelUpLearnset
- .4byte gSpecies266LevelUpLearnset
- .4byte gSpecies267LevelUpLearnset
- .4byte gSpecies268LevelUpLearnset
- .4byte gSpecies269LevelUpLearnset
- .4byte gSpecies270LevelUpLearnset
- .4byte gSpecies271LevelUpLearnset
- .4byte gSpecies272LevelUpLearnset
- .4byte gSpecies273LevelUpLearnset
- .4byte gSpecies274LevelUpLearnset
- .4byte gSpecies275LevelUpLearnset
- .4byte gSpecies276LevelUpLearnset
- .4byte gTreeckoLevelUpLearnset
- .4byte gGrovyleLevelUpLearnset
- .4byte gSceptileLevelUpLearnset
- .4byte gTorchicLevelUpLearnset
- .4byte gCombuskenLevelUpLearnset
- .4byte gBlazikenLevelUpLearnset
- .4byte gMudkipLevelUpLearnset
- .4byte gMarshtompLevelUpLearnset
- .4byte gSwampertLevelUpLearnset
- .4byte gPoochyenaLevelUpLearnset
- .4byte gMightyenaLevelUpLearnset
- .4byte gZigzagoonLevelUpLearnset
- .4byte gLinooneLevelUpLearnset
- .4byte gWurmpleLevelUpLearnset
- .4byte gSilcoonLevelUpLearnset
- .4byte gBeautiflyLevelUpLearnset
- .4byte gCascoonLevelUpLearnset
- .4byte gDustoxLevelUpLearnset
- .4byte gLotadLevelUpLearnset
- .4byte gLombreLevelUpLearnset
- .4byte gLudicoloLevelUpLearnset
- .4byte gSeedotLevelUpLearnset
- .4byte gNuzleafLevelUpLearnset
- .4byte gShiftryLevelUpLearnset
- .4byte gNincadaLevelUpLearnset
- .4byte gNinjaskLevelUpLearnset
- .4byte gShedinjaLevelUpLearnset
- .4byte gTaillowLevelUpLearnset
- .4byte gSwellowLevelUpLearnset
- .4byte gShroomishLevelUpLearnset
- .4byte gBreloomLevelUpLearnset
- .4byte gSpindaLevelUpLearnset
- .4byte gWingullLevelUpLearnset
- .4byte gPelipperLevelUpLearnset
- .4byte gSurskitLevelUpLearnset
- .4byte gMasquerainLevelUpLearnset
- .4byte gWailmerLevelUpLearnset
- .4byte gWailordLevelUpLearnset
- .4byte gSkittyLevelUpLearnset
- .4byte gDelcattyLevelUpLearnset
- .4byte gKecleonLevelUpLearnset
- .4byte gBaltoyLevelUpLearnset
- .4byte gClaydolLevelUpLearnset
- .4byte gNosepassLevelUpLearnset
- .4byte gTorkoalLevelUpLearnset
- .4byte gSableyeLevelUpLearnset
- .4byte gBarboachLevelUpLearnset
- .4byte gWhiscashLevelUpLearnset
- .4byte gLuvdiscLevelUpLearnset
- .4byte gCorphishLevelUpLearnset
- .4byte gCrawdauntLevelUpLearnset
- .4byte gFeebasLevelUpLearnset
- .4byte gMiloticLevelUpLearnset
- .4byte gCarvanhaLevelUpLearnset
- .4byte gSharpedoLevelUpLearnset
- .4byte gTrapinchLevelUpLearnset
- .4byte gVibravaLevelUpLearnset
- .4byte gFlygonLevelUpLearnset
- .4byte gMakuhitaLevelUpLearnset
- .4byte gHariyamaLevelUpLearnset
- .4byte gElectrikeLevelUpLearnset
- .4byte gManectricLevelUpLearnset
- .4byte gNumelLevelUpLearnset
- .4byte gCameruptLevelUpLearnset
- .4byte gSphealLevelUpLearnset
- .4byte gSealeoLevelUpLearnset
- .4byte gWalreinLevelUpLearnset
- .4byte gCacneaLevelUpLearnset
- .4byte gCacturneLevelUpLearnset
- .4byte gSnoruntLevelUpLearnset
- .4byte gGlalieLevelUpLearnset
- .4byte gLunatoneLevelUpLearnset
- .4byte gSolrockLevelUpLearnset
- .4byte gAzurillLevelUpLearnset
- .4byte gSpoinkLevelUpLearnset
- .4byte gGrumpigLevelUpLearnset
- .4byte gPlusleLevelUpLearnset
- .4byte gMinunLevelUpLearnset
- .4byte gMawileLevelUpLearnset
- .4byte gMedititeLevelUpLearnset
- .4byte gMedichamLevelUpLearnset
- .4byte gSwabluLevelUpLearnset
- .4byte gAltariaLevelUpLearnset
- .4byte gWynautLevelUpLearnset
- .4byte gDuskullLevelUpLearnset
- .4byte gDusclopsLevelUpLearnset
- .4byte gRoseliaLevelUpLearnset
- .4byte gSlakothLevelUpLearnset
- .4byte gVigorothLevelUpLearnset
- .4byte gSlakingLevelUpLearnset
- .4byte gGulpinLevelUpLearnset
- .4byte gSwalotLevelUpLearnset
- .4byte gTropiusLevelUpLearnset
- .4byte gWhismurLevelUpLearnset
- .4byte gLoudredLevelUpLearnset
- .4byte gExploudLevelUpLearnset
- .4byte gClamperlLevelUpLearnset
- .4byte gHuntailLevelUpLearnset
- .4byte gGorebyssLevelUpLearnset
- .4byte gAbsolLevelUpLearnset
- .4byte gShuppetLevelUpLearnset
- .4byte gBanetteLevelUpLearnset
- .4byte gSeviperLevelUpLearnset
- .4byte gZangooseLevelUpLearnset
- .4byte gRelicanthLevelUpLearnset
- .4byte gAronLevelUpLearnset
- .4byte gLaironLevelUpLearnset
- .4byte gAggronLevelUpLearnset
- .4byte gCastformLevelUpLearnset
- .4byte gVolbeatLevelUpLearnset
- .4byte gIllumiseLevelUpLearnset
- .4byte gLileepLevelUpLearnset
- .4byte gCradilyLevelUpLearnset
- .4byte gAnorithLevelUpLearnset
- .4byte gArmaldoLevelUpLearnset
- .4byte gRaltsLevelUpLearnset
- .4byte gKirliaLevelUpLearnset
- .4byte gGardevoirLevelUpLearnset
- .4byte gBagonLevelUpLearnset
- .4byte gShelgonLevelUpLearnset
- .4byte gSalamenceLevelUpLearnset
- .4byte gBeldumLevelUpLearnset
- .4byte gMetangLevelUpLearnset
- .4byte gMetagrossLevelUpLearnset
- .4byte gRegirockLevelUpLearnset
- .4byte gRegiceLevelUpLearnset
- .4byte gRegisteelLevelUpLearnset
- .4byte gKyogreLevelUpLearnset
- .4byte gGroudonLevelUpLearnset
- .4byte gRayquazaLevelUpLearnset
- .4byte gLatiasLevelUpLearnset
- .4byte gLatiosLevelUpLearnset
- .4byte gJirachiLevelUpLearnset
- .4byte gDeoxysLevelUpLearnset
- .4byte gChimechoLevelUpLearnset
diff --git a/data/level_up_learnsets.inc b/data/level_up_learnsets.inc
deleted file mode 100644
index 1a3de4b79..000000000
--- a/data/level_up_learnsets.inc
+++ /dev/null
@@ -1,5204 +0,0 @@
-gBulbasaurLevelUpLearnset:: @ 83230DC
- 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
- .2byte -1
-
-gIvysaurLevelUpLearnset:: @ 83230F4
- 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
- .2byte -1
-
-gVenusaurLevelUpLearnset:: @ 8323110
- 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
- .2byte -1
-
-gCharmanderLevelUpLearnset:: @ 832312E
- 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
- .2byte -1
-
-gCharmeleonLevelUpLearnset:: @ 8323144
- 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
- .2byte -1
-
-gCharizardLevelUpLearnset:: @ 832315C
- 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
- .2byte -1
-
-gSquirtleLevelUpLearnset:: @ 8323178
- 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
- .2byte -1
-
-gWartortleLevelUpLearnset:: @ 8323190
- 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
- .2byte -1
-
-gBlastoiseLevelUpLearnset:: @ 83231AC
- 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
- .2byte -1
-
-gCaterpieLevelUpLearnset:: @ 83231CA
- level_up_move 1, MOVE_TACKLE
- level_up_move 1, MOVE_STRING_SHOT
- .2byte -1
-
-gMetapodLevelUpLearnset:: @ 83231D0
- level_up_move 1, MOVE_HARDEN
- level_up_move 7, MOVE_HARDEN
- .2byte -1
-
-gButterfreeLevelUpLearnset:: @ 83231D6
- 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
- .2byte -1
-
-gWeedleLevelUpLearnset:: @ 83231EE
- level_up_move 1, MOVE_POISON_STING
- level_up_move 1, MOVE_STRING_SHOT
- .2byte -1
-
-gKakunaLevelUpLearnset:: @ 83231F4
- level_up_move 1, MOVE_HARDEN
- level_up_move 7, MOVE_HARDEN
- .2byte -1
-
-gBeedrillLevelUpLearnset:: @ 83231FA
- 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
- .2byte -1
-
-gPidgeyLevelUpLearnset:: @ 832320E
- 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
- .2byte -1
-
-gPidgeottoLevelUpLearnset:: @ 8323222
- 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
- .2byte -1
-
-gPidgeotLevelUpLearnset:: @ 832323A
- 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
- .2byte -1
-
-gRattataLevelUpLearnset:: @ 8323254
- 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
- .2byte -1
-
-gRaticateLevelUpLearnset:: @ 8323266
- 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
- .2byte -1
-
-gSpearowLevelUpLearnset:: @ 832327A
- 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
- .2byte -1
-
-gFearowLevelUpLearnset:: @ 832328E
- 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
- .2byte -1
-
-gEkansLevelUpLearnset:: @ 83232A4
- 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
- .2byte -1
-
-gArbokLevelUpLearnset:: @ 83232BC
- 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
- .2byte -1
-
-gPikachuLevelUpLearnset:: @ 83232D8
- 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
- .2byte -1
-
-gRaichuLevelUpLearnset:: @ 83232F0
- 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
- .2byte -1
-
-gSandshrewLevelUpLearnset:: @ 83232FA
- 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
- .2byte -1
-
-gSandslashLevelUpLearnset:: @ 832330E
- 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
- .2byte -1
-
-gNidoranFLevelUpLearnset:: @ 8323326
- 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
- .2byte -1
-
-gNidorinaLevelUpLearnset:: @ 832333C
- 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
- .2byte -1
-
-gNidoqueenLevelUpLearnset:: @ 8323352
- 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
- .2byte -1
-
-gNidoranMLevelUpLearnset:: @ 832335E
- 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
- .2byte -1
-
-gNidorinoLevelUpLearnset:: @ 8323374
- 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
- .2byte -1
-
-gNidokingLevelUpLearnset:: @ 832338A
- 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
- .2byte -1
-
-gClefairyLevelUpLearnset:: @ 8323396
- 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
- .2byte -1
-
-gClefableLevelUpLearnset:: @ 83233B2
- 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
- .2byte -1
-
-gVulpixLevelUpLearnset:: @ 83233BC
- 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
- .2byte -1
-
-gNinetalesLevelUpLearnset:: @ 83233D4
- 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
- .2byte -1
-
-gJigglypuffLevelUpLearnset:: @ 83233E0
- 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
- .2byte -1
-
-gWigglytuffLevelUpLearnset:: @ 83233F8
- 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
- .2byte -1
-
-gZubatLevelUpLearnset:: @ 8323402
- 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
- .2byte -1
-
-gGolbatLevelUpLearnset:: @ 8323418
- 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
- .2byte -1
-
-gOddishLevelUpLearnset:: @ 8323434
- 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
- .2byte -1
-
-gGloomLevelUpLearnset:: @ 8323446
- 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
- .2byte -1
-
-gVileplumeLevelUpLearnset:: @ 832345C
- 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
- .2byte -1
-
-gParasLevelUpLearnset:: @ 8323468
- 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
- .2byte -1
-
-gParasectLevelUpLearnset:: @ 832347C
- 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
- .2byte -1
-
-gVenonatLevelUpLearnset:: @ 8323494
- 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
- .2byte -1
-
-gVenomothLevelUpLearnset:: @ 83234AC
- 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
- .2byte -1
-
-gDiglettLevelUpLearnset:: @ 83234CA
- 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
- .2byte -1
-
-gDugtrioLevelUpLearnset:: @ 83234DE
- 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
- .2byte -1
-
-gMeowthLevelUpLearnset:: @ 83234F8
- 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
- .2byte -1
-
-gPersianLevelUpLearnset:: @ 832350C
- 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
- .2byte -1
-
-gPsyduckLevelUpLearnset:: @ 8323522
- 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
- .2byte -1
-
-gGolduckLevelUpLearnset:: @ 8323536
- 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
- .2byte -1
-
-gMankeyLevelUpLearnset:: @ 832354E
- 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
- .2byte -1
-
-gPrimeapeLevelUpLearnset:: @ 8323564
- 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
- .2byte -1
-
-gGrowlitheLevelUpLearnset:: @ 8323580
- 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
- .2byte -1
-
-gArcanineLevelUpLearnset:: @ 8323596
- 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
- .2byte -1
-
-gPoliwagLevelUpLearnset:: @ 83235A2
- 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
- .2byte -1
-
-gPoliwhirlLevelUpLearnset:: @ 83235B4
- 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
- .2byte -1
-
-gPoliwrathLevelUpLearnset:: @ 83235CA
- 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
- .2byte -1
-
-gAbraLevelUpLearnset:: @ 83235D8
- level_up_move 1, MOVE_TELEPORT
- .2byte -1
-
-gKadabraLevelUpLearnset:: @ 83235DC
- 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
- .2byte -1
-
-gAlakazamLevelUpLearnset:: @ 83235F6
- 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
- .2byte -1
-
-gMachopLevelUpLearnset:: @ 8323610
- 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
- .2byte -1
-
-gMachokeLevelUpLearnset:: @ 832362A
- 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
- .2byte -1
-
-gMachampLevelUpLearnset:: @ 8323646
- 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
- .2byte -1
-
-gBellsproutLevelUpLearnset:: @ 8323662
- 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
- .2byte -1
-
-gWeepinbellLevelUpLearnset:: @ 8323678
- 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
- .2byte -1
-
-gVictreebelLevelUpLearnset:: @ 8323692
- 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
- .2byte -1
-
-gTentacoolLevelUpLearnset:: @ 832369C
- 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
- .2byte -1
-
-gTentacruelLevelUpLearnset:: @ 83236B0
- 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
- .2byte -1
-
-gGeodudeLevelUpLearnset:: @ 83236C8
- 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
- .2byte -1
-
-gGravelerLevelUpLearnset:: @ 83236E0
- 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
- .2byte -1
-
-gGolemLevelUpLearnset:: @ 83236FC
- 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
- .2byte -1
-
-gPonytaLevelUpLearnset:: @ 8323718
- 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
- .2byte -1
-
-gRapidashLevelUpLearnset:: @ 832372E
- 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
- .2byte -1
-
-gSlowpokeLevelUpLearnset:: @ 832374C
- 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
- .2byte -1
-
-gSlowbroLevelUpLearnset:: @ 8323762
- 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
- .2byte -1
-
-gMagnemiteLevelUpLearnset:: @ 832377C
- 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
- .2byte -1
-
-gMagnetonLevelUpLearnset:: @ 8323794
- 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
- .2byte -1
-
-gFarfetchdLevelUpLearnset:: @ 83237B0
- 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
- .2byte -1
-
-gDoduoLevelUpLearnset:: @ 83237C6
- 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
- .2byte -1
-
-gDodrioLevelUpLearnset:: @ 83237DA
- 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
- .2byte -1
-
-gSeelLevelUpLearnset:: @ 83237F2
- 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
- .2byte -1
-
-gDewgongLevelUpLearnset:: @ 8323804
- 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
- .2byte -1
-
-gGrimerLevelUpLearnset:: @ 832381E
- 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
- .2byte -1
-
-gMukLevelUpLearnset:: @ 8323834
- 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
- .2byte -1
-
-gShellderLevelUpLearnset:: @ 832384C
- 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
- .2byte -1
-
-gCloysterLevelUpLearnset:: @ 832385E
- 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
- .2byte -1
-
-gGastlyLevelUpLearnset:: @ 832386C
- 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
- .2byte -1
-
-gHaunterLevelUpLearnset:: @ 8323880
- 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
- .2byte -1
-
-gGengarLevelUpLearnset:: @ 8323898
- 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
- .2byte -1
-
-gOnixLevelUpLearnset:: @ 83238B0
- 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
- .2byte -1
-
-gDrowzeeLevelUpLearnset:: @ 83238C8
- 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
- .2byte -1
-
-gHypnoLevelUpLearnset:: @ 83238DE
- 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
- .2byte -1
-
-gKrabbyLevelUpLearnset:: @ 83238F8
- 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
- .2byte -1
-
-gKinglerLevelUpLearnset:: @ 832390C
- 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
- .2byte -1
-
-gVoltorbLevelUpLearnset:: @ 8323924
- 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
- .2byte -1
-
-gElectrodeLevelUpLearnset:: @ 832393C
- 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
- .2byte -1
-
-gExeggcuteLevelUpLearnset:: @ 8323958
- 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
- .2byte -1
-
-gExeggutorLevelUpLearnset:: @ 832396E
- 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
- .2byte -1
-
-gCuboneLevelUpLearnset:: @ 832397A
- 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
- .2byte -1
-
-gMarowakLevelUpLearnset:: @ 8323994
- 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
- .2byte -1
-
-gHitmonleeLevelUpLearnset:: @ 83239B4
- 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
- .2byte -1
-
-gHitmonchanLevelUpLearnset:: @ 83239D0
- 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
- .2byte -1
-
-gLickitungLevelUpLearnset:: @ 83239EA
- 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
- .2byte -1
-
-gKoffingLevelUpLearnset:: @ 8323A00
- 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
- .2byte -1
-
-gWeezingLevelUpLearnset:: @ 8323A16
- 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
- .2byte -1
-
-gRhyhornLevelUpLearnset:: @ 8323A30
- 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
- .2byte -1
-
-gRhydonLevelUpLearnset:: @ 8323A46
- 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
- .2byte -1
-
-gChanseyLevelUpLearnset:: @ 8323A60
- 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
- .2byte -1
-
-gTangelaLevelUpLearnset:: @ 8323A7A
- 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
- .2byte -1
-
-gKangaskhanLevelUpLearnset:: @ 8323A94
- 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
- .2byte -1
-
-gHorseaLevelUpLearnset:: @ 8323AAA
- 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
- .2byte -1
-
-gSeadraLevelUpLearnset:: @ 8323ABC
- 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
- .2byte -1
-
-gGoldeenLevelUpLearnset:: @ 8323AD4
- 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
- .2byte -1
-
-gSeakingLevelUpLearnset:: @ 8323AEA
- 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
- .2byte -1
-
-gStaryuLevelUpLearnset:: @ 8323B02
- 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
- .2byte -1
-
-gStarmieLevelUpLearnset:: @ 8323B1C
- 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
- .2byte -1
-
-gMrmimeLevelUpLearnset:: @ 8323B28
- 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
- .2byte -1
-
-gScytherLevelUpLearnset:: @ 8323B48
- 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
- .2byte -1
-
-gJynxLevelUpLearnset:: @ 8323B60
- 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
- .2byte -1
-
-gElectabuzzLevelUpLearnset:: @ 8323B7C
- 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
- .2byte -1
-
-gMagmarLevelUpLearnset:: @ 8323B90
- 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
- .2byte -1
-
-gPinsirLevelUpLearnset:: @ 8323BAA
- 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
- .2byte -1
-
-gTaurosLevelUpLearnset:: @ 8323BC0
- 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
- .2byte -1
-
-gMagikarpLevelUpLearnset:: @ 8323BD4
- level_up_move 1, MOVE_SPLASH
- level_up_move 15, MOVE_TACKLE
- level_up_move 30, MOVE_FLAIL
- .2byte -1
-
-gGyaradosLevelUpLearnset:: @ 8323BDC
- 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
- .2byte -1
-
-gLaprasLevelUpLearnset:: @ 8323BF0
- 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
- .2byte -1
-
-gDittoLevelUpLearnset:: @ 8323C0A
- level_up_move 1, MOVE_TRANSFORM
- .2byte -1
-
-gEeveeLevelUpLearnset:: @ 8323C0E
- 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
- .2byte -1
-
-gVaporeonLevelUpLearnset:: @ 8323C22
- 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
- .2byte -1
-
-gJolteonLevelUpLearnset:: @ 8323C3A
- 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
- .2byte -1
-
-gFlareonLevelUpLearnset:: @ 8323C52
- 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
- .2byte -1
-
-gPorygonLevelUpLearnset:: @ 8323C6A
- 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
- .2byte -1
-
-gOmanyteLevelUpLearnset:: @ 8323C82
- 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
- .2byte -1
-
-gOmastarLevelUpLearnset:: @ 8323C98
- 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
- .2byte -1
-
-gKabutoLevelUpLearnset:: @ 8323CB2
- 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
- .2byte -1
-
-gKabutopsLevelUpLearnset:: @ 8323CC8
- 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
- .2byte -1
-
-gAerodactylLevelUpLearnset:: @ 8323CE2
- 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
- .2byte -1
-
-gSnorlaxLevelUpLearnset:: @ 8323CF4
- 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
- .2byte -1
-
-gArticunoLevelUpLearnset:: @ 8323D10
- 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
- .2byte -1
-
-gZapdosLevelUpLearnset:: @ 8323D24
- 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
- .2byte -1
-
-gMoltresLevelUpLearnset:: @ 8323D38
- 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
- .2byte -1
-
-gDratiniLevelUpLearnset:: @ 8323D4C
- 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
- .2byte -1
-
-gDragonairLevelUpLearnset:: @ 8323D62
- 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
- .2byte -1
-
-gDragoniteLevelUpLearnset:: @ 8323D7C
- 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
- .2byte -1
-
-gMewtwoLevelUpLearnset:: @ 8323D98
- 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
- .2byte -1
-
-gMewLevelUpLearnset:: @ 8323DB0
- 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
- .2byte -1
-
-gChikoritaLevelUpLearnset:: @ 8323DBE
- 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
- .2byte -1
-
-gBayleefLevelUpLearnset:: @ 8323DD4
- 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
- .2byte -1
-
-gMeganiumLevelUpLearnset:: @ 8323DEE
- 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
- .2byte -1
-
-gCyndaquilLevelUpLearnset:: @ 8323E08
- 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
- .2byte -1
-
-gQuilavaLevelUpLearnset:: @ 8323E1A
- 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
- .2byte -1
-
-gTyphlosionLevelUpLearnset:: @ 8323E2E
- 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
- .2byte -1
-
-gTotodileLevelUpLearnset:: @ 8323E44
- 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
- .2byte -1
-
-gCroconawLevelUpLearnset:: @ 8323E58
- 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
- .2byte -1
-
-gFeraligatrLevelUpLearnset:: @ 8323E6E
- 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
- .2byte -1
-
-gSentretLevelUpLearnset:: @ 8323E86
- 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
- .2byte -1
-
-gFurretLevelUpLearnset:: @ 8323E9A
- 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
- .2byte -1
-
-gHoothootLevelUpLearnset:: @ 8323EB2
- 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
- .2byte -1
-
-gNoctowlLevelUpLearnset:: @ 8323EC6
- 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
- .2byte -1
-
-gLedybaLevelUpLearnset:: @ 8323EDE
- 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
- .2byte -1
-
-gLedianLevelUpLearnset:: @ 8323EF4
- 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
- .2byte -1
-
-gSpinarakLevelUpLearnset:: @ 8323F0C
- 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
- .2byte -1
-
-gAriadosLevelUpLearnset:: @ 8323F22
- 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
- .2byte -1
-
-gCrobatLevelUpLearnset:: @ 8323F3C
- 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
- .2byte -1
-
-gChinchouLevelUpLearnset:: @ 8323F58
- 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
- .2byte -1
-
-gLanturnLevelUpLearnset:: @ 8323F6E
- 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
- .2byte -1
-
-gPichuLevelUpLearnset:: @ 8323F86
- 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
- .2byte -1
-
-gCleffaLevelUpLearnset:: @ 8323F92
- 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
- .2byte -1
-
-gIgglybuffLevelUpLearnset:: @ 8323F9E
- 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
- .2byte -1
-
-gTogepiLevelUpLearnset:: @ 8323FAA
- 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
- .2byte -1
-
-gTogeticLevelUpLearnset:: @ 8323FC0
- 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
- .2byte -1
-
-gNatuLevelUpLearnset:: @ 8323FD6
- 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
- .2byte -1
-
-gXatuLevelUpLearnset:: @ 8323FE8
- 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
- .2byte -1
-
-gMareepLevelUpLearnset:: @ 8323FFA
- 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
- .2byte -1
-
-gFlaaffyLevelUpLearnset:: @ 832400A
- 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
- .2byte -1
-
-gAmpharosLevelUpLearnset:: @ 832401C
- 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
- .2byte -1
-
-gBellossomLevelUpLearnset:: @ 8324032
- 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
- .2byte -1
-
-gMarillLevelUpLearnset:: @ 8324040
- 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
- .2byte -1
-
-gAzumarillLevelUpLearnset:: @ 8324054
- 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
- .2byte -1
-
-gSudowoodoLevelUpLearnset:: @ 832406E
- 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
- .2byte -1
-
-gPolitoedLevelUpLearnset:: @ 8324082
- 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
- .2byte -1
-
-gHoppipLevelUpLearnset:: @ 8324090
- 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
- .2byte -1
-
-gSkiploomLevelUpLearnset:: @ 83240A6
- 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
- .2byte -1
-
-gJumpluffLevelUpLearnset:: @ 83240C2
- 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
- .2byte -1
-
-gAipomLevelUpLearnset:: @ 83240DE
- 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
- .2byte -1
-
-gSunkernLevelUpLearnset:: @ 83240F4
- 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
- .2byte -1
-
-gSunfloraLevelUpLearnset:: @ 8324106
- 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
- .2byte -1
-
-gYanmaLevelUpLearnset:: @ 832411A
- 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
- .2byte -1
-
-gWooperLevelUpLearnset:: @ 8324130
- 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
- .2byte -1
-
-gQuagsireLevelUpLearnset:: @ 8324146
- 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
- .2byte -1
-
-gEspeonLevelUpLearnset:: @ 832415C
- 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
- .2byte -1
-
-gUmbreonLevelUpLearnset:: @ 8324174
- 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
- .2byte -1
-
-gMurkrowLevelUpLearnset:: @ 832418C
- 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
- .2byte -1
-
-gSlowkingLevelUpLearnset:: @ 832419E
- 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
- .2byte -1
-
-gMisdreavusLevelUpLearnset:: @ 83241B4
- 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
- .2byte -1
-
-gUnownLevelUpLearnset:: @ 83241CA
- level_up_move 1, MOVE_HIDDEN_POWER
- .2byte -1
-
-gWobbuffetLevelUpLearnset:: @ 83241CE
- 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
- .2byte -1
-
-gGirafarigLevelUpLearnset:: @ 83241D8
- 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
- .2byte -1
-
-gPinecoLevelUpLearnset:: @ 83241EE
- 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
- .2byte -1
-
-gForretressLevelUpLearnset:: @ 8324202
- 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
- .2byte -1
-
-gDunsparceLevelUpLearnset:: @ 8324218
- 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
- .2byte -1
-
-gGligarLevelUpLearnset:: @ 832422C
- 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
- .2byte -1
-
-gSteelixLevelUpLearnset:: @ 832423E
- 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
- .2byte -1
-
-gSnubbullLevelUpLearnset:: @ 8324256
- 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
- .2byte -1
-
-gGranbullLevelUpLearnset:: @ 832426C
- 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
- .2byte -1
-
-gQwilfishLevelUpLearnset:: @ 8324282
- 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
- .2byte -1
-
-gScizorLevelUpLearnset:: @ 8324296
- 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
- .2byte -1
-
-gShuckleLevelUpLearnset:: @ 83242AE
- 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
- .2byte -1
-
-gHeracrossLevelUpLearnset:: @ 83242BE
- 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
- .2byte -1
-
-gSneaselLevelUpLearnset:: @ 83242D4
- 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
- .2byte -1
-
-gTeddiursaLevelUpLearnset:: @ 83242EE
- 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
- .2byte -1
-
-gUrsaringLevelUpLearnset:: @ 8324304
- 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
- .2byte -1
-
-gSlugmaLevelUpLearnset:: @ 832431E
- 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
- .2byte -1
-
-gMagcargoLevelUpLearnset:: @ 8324332
- 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
- .2byte -1
-
-gSwinubLevelUpLearnset:: @ 832434A
- 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
- .2byte -1
-
-gPiloswineLevelUpLearnset:: @ 832435C
- 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
- .2byte -1
-
-gCorsolaLevelUpLearnset:: @ 8324374
- 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
- .2byte -1
-
-gRemoraidLevelUpLearnset:: @ 832438A
- 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
- .2byte -1
-
-gOctilleryLevelUpLearnset:: @ 832439C
- 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
- .2byte -1
-
-gDelibirdLevelUpLearnset:: @ 83243B0
- level_up_move 1, MOVE_PRESENT
- .2byte -1
-
-gMantineLevelUpLearnset:: @ 83243B4
- 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
- .2byte -1
-
-gSkarmoryLevelUpLearnset:: @ 83243C8
- 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
- .2byte -1
-
-gHoundourLevelUpLearnset:: @ 83243DE
- 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
- .2byte -1
-
-gHoundoomLevelUpLearnset:: @ 83243F4
- 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
- .2byte -1
-
-gKingdraLevelUpLearnset:: @ 832440C
- 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
- .2byte -1
-
-gPhanpyLevelUpLearnset:: @ 8324424
- 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
- .2byte -1
-
-gDonphanLevelUpLearnset:: @ 8324438
- 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
- .2byte -1
-
-gPorygon2LevelUpLearnset:: @ 832444C
- 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
- .2byte -1
-
-gStantlerLevelUpLearnset:: @ 8324464
- 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
- .2byte -1
-
-gSmeargleLevelUpLearnset:: @ 8324478
- 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
- .2byte -1
-
-gTyrogueLevelUpLearnset:: @ 832448E
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gHitmontopLevelUpLearnset:: @ 8324492
- 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
- .2byte -1
-
-gSmoochumLevelUpLearnset:: @ 83244AA
- 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
- .2byte -1
-
-gElekidLevelUpLearnset:: @ 83244C2
- 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
- .2byte -1
-
-gMagbyLevelUpLearnset:: @ 83244D4
- 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
- .2byte -1
-
-gMiltankLevelUpLearnset:: @ 83244E8
- 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
- .2byte -1
-
-gBlisseyLevelUpLearnset:: @ 83244FC
- 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
- .2byte -1
-
-gRaikouLevelUpLearnset:: @ 8324516
- 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
- .2byte -1
-
-gEnteiLevelUpLearnset:: @ 832452C
- 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
- .2byte -1
-
-gSuicuneLevelUpLearnset:: @ 8324542
- 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
- .2byte -1
-
-gLarvitarLevelUpLearnset:: @ 8324558
- 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
- .2byte -1
-
-gPupitarLevelUpLearnset:: @ 832456E
- 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
- .2byte -1
-
-gTyranitarLevelUpLearnset:: @ 8324588
- 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
- .2byte -1
-
-gLugiaLevelUpLearnset:: @ 83245A2
- 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
- .2byte -1
-
-gHoOhLevelUpLearnset:: @ 83245B8
- 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
- .2byte -1
-
-gCelebiLevelUpLearnset:: @ 83245CE
- 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
- .2byte -1
-
-gSpecies252LevelUpLearnset:: @ 83245E2
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies253LevelUpLearnset:: @ 83245E6
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies254LevelUpLearnset:: @ 83245EA
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies255LevelUpLearnset:: @ 83245EE
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies256LevelUpLearnset:: @ 83245F2
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies257LevelUpLearnset:: @ 83245F6
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies258LevelUpLearnset:: @ 83245FA
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies259LevelUpLearnset:: @ 83245FE
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies260LevelUpLearnset:: @ 8324602
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies261LevelUpLearnset:: @ 8324606
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies262LevelUpLearnset:: @ 832460A
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies263LevelUpLearnset:: @ 832460E
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies264LevelUpLearnset:: @ 8324612
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies265LevelUpLearnset:: @ 8324616
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies266LevelUpLearnset:: @ 832461A
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies267LevelUpLearnset:: @ 832461E
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies268LevelUpLearnset:: @ 8324622
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies269LevelUpLearnset:: @ 8324626
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies270LevelUpLearnset:: @ 832462A
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies271LevelUpLearnset:: @ 832462E
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies272LevelUpLearnset:: @ 8324632
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies273LevelUpLearnset:: @ 8324636
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies274LevelUpLearnset:: @ 832463A
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies275LevelUpLearnset:: @ 832463E
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gSpecies276LevelUpLearnset:: @ 8324642
- level_up_move 1, MOVE_TACKLE
- .2byte -1
-
-gTreeckoLevelUpLearnset:: @ 8324646
- 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
- .2byte -1
-
-gGrovyleLevelUpLearnset:: @ 832465E
- 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
- .2byte -1
-
-gSceptileLevelUpLearnset:: @ 832467C
- 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
- .2byte -1
-
-gTorchicLevelUpLearnset:: @ 832469A
- 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
- .2byte -1
-
-gCombuskenLevelUpLearnset:: @ 83246B2
- 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
- .2byte -1
-
-gBlazikenLevelUpLearnset:: @ 83246D0
- 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
- .2byte -1
-
-gMudkipLevelUpLearnset:: @ 83246F2
- 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
- .2byte -1
-
-gMarshtompLevelUpLearnset:: @ 832470C
- 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
- .2byte -1
-
-gSwampertLevelUpLearnset:: @ 832472C
- 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
- .2byte -1
-
-gPoochyenaLevelUpLearnset:: @ 832474C
- 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
- .2byte -1
-
-gMightyenaLevelUpLearnset:: @ 8324766
- 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
- .2byte -1
-
-gZigzagoonLevelUpLearnset:: @ 8324786
- 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
- .2byte -1
-
-gLinooneLevelUpLearnset:: @ 83247A0
- 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
- .2byte -1
-
-gWurmpleLevelUpLearnset:: @ 83247BE
- level_up_move 1, MOVE_TACKLE
- level_up_move 1, MOVE_STRING_SHOT
- level_up_move 5, MOVE_POISON_STING
- .2byte -1
-
-gSilcoonLevelUpLearnset:: @ 83247C6
- level_up_move 1, MOVE_HARDEN
- level_up_move 7, MOVE_HARDEN
- .2byte -1
-
-gBeautiflyLevelUpLearnset:: @ 83247CC
- 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
- .2byte -1
-
-gCascoonLevelUpLearnset:: @ 83247E2
- level_up_move 1, MOVE_HARDEN
- level_up_move 7, MOVE_HARDEN
- .2byte -1
-
-gDustoxLevelUpLearnset:: @ 83247E8
- 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
- .2byte -1
-
-gLotadLevelUpLearnset:: @ 83247FE
- 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
- .2byte -1
-
-gLombreLevelUpLearnset:: @ 832480E
- 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
- .2byte -1
-
-gLudicoloLevelUpLearnset:: @ 8324824
- 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
- .2byte -1
-
-gSeedotLevelUpLearnset:: @ 832482E
- 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
- .2byte -1
-
-gNuzleafLevelUpLearnset:: @ 832483E
- 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
- .2byte -1
-
-gShiftryLevelUpLearnset:: @ 8324854
- 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
- .2byte -1
-
-gNincadaLevelUpLearnset:: @ 832485E
- 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
- .2byte -1
-
-gNinjaskLevelUpLearnset:: @ 8324874
- 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
- .2byte -1
-
-gShedinjaLevelUpLearnset:: @ 8324894
- 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
- .2byte -1
-
-gTaillowLevelUpLearnset:: @ 83248AA
- 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
- .2byte -1
-
-gSwellowLevelUpLearnset:: @ 83248BE
- 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
- .2byte -1
-
-gShroomishLevelUpLearnset:: @ 83248D6
- 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
- .2byte -1
-
-gBreloomLevelUpLearnset:: @ 83248EC
- 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
- .2byte -1
-
-gSpindaLevelUpLearnset:: @ 832490A
- 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
- .2byte -1
-
-gWingullLevelUpLearnset:: @ 8324922
- 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
- .2byte -1
-
-gPelipperLevelUpLearnset:: @ 8324934
- 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
- .2byte -1
-
-gSurskitLevelUpLearnset:: @ 8324950
- 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
- .2byte -1
-
-gMasquerainLevelUpLearnset:: @ 8324962
- 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
- .2byte -1
-
-gWailmerLevelUpLearnset:: @ 832497C
- 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
- .2byte -1
-
-gWailordLevelUpLearnset:: @ 8324996
- 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
- .2byte -1
-
-gSkittyLevelUpLearnset:: @ 83249B6
- 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
- .2byte -1
-
-gDelcattyLevelUpLearnset:: @ 83249D0
- 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
- .2byte -1
-
-gKecleonLevelUpLearnset:: @ 83249DA
- 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
- .2byte -1
-
-gBaltoyLevelUpLearnset:: @ 83249F6
- 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
- .2byte -1
-
-gClaydolLevelUpLearnset:: @ 8324A0E
- 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
- .2byte -1
-
-gNosepassLevelUpLearnset:: @ 8324A2E
- 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
- .2byte -1
-
-gTorkoalLevelUpLearnset:: @ 8324A44
- 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
- .2byte -1
-
-gSableyeLevelUpLearnset:: @ 8324A5E
- 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
- .2byte -1
-
-gBarboachLevelUpLearnset:: @ 8324A7A
- 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
- .2byte -1
-
-gWhiscashLevelUpLearnset:: @ 8324A92
- 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
- .2byte -1
-
-gLuvdiscLevelUpLearnset:: @ 8324AB0
- 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
- .2byte -1
-
-gCorphishLevelUpLearnset:: @ 8324AC4
- 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
- .2byte -1
-
-gCrawdauntLevelUpLearnset:: @ 8324ADC
- 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
- .2byte -1
-
-gFeebasLevelUpLearnset:: @ 8324AFA
- level_up_move 1, MOVE_SPLASH
- level_up_move 15, MOVE_TACKLE
- level_up_move 30, MOVE_FLAIL
- .2byte -1
-
-gMiloticLevelUpLearnset:: @ 8324B02
- 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
- .2byte -1
-
-gCarvanhaLevelUpLearnset:: @ 8324B1A
- 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
- .2byte -1
-
-gSharpedoLevelUpLearnset:: @ 8324B30
- 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
- .2byte -1
-
-gTrapinchLevelUpLearnset:: @ 8324B4E
- 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
- .2byte -1
-
-gVibravaLevelUpLearnset:: @ 8324B60
- 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
- .2byte -1
-
-gFlygonLevelUpLearnset:: @ 8324B7A
- 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
- .2byte -1
-
-gMakuhitaLevelUpLearnset:: @ 8324B94
- 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
- .2byte -1
-
-gHariyamaLevelUpLearnset:: @ 8324BB0
- 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
- .2byte -1
-
-gElectrikeLevelUpLearnset:: @ 8324BD0
- 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
- .2byte -1
-
-gManectricLevelUpLearnset:: @ 8324BE8
- 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
- .2byte -1
-
-gNumelLevelUpLearnset:: @ 8324C06
- 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
- .2byte -1
-
-gCameruptLevelUpLearnset:: @ 8324C1C
- 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
- .2byte -1
-
-gSphealLevelUpLearnset:: @ 8324C38
- 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
- .2byte -1
-
-gSealeoLevelUpLearnset:: @ 8324C52
- 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
- .2byte -1
-
-gWalreinLevelUpLearnset:: @ 8324C6E
- 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
- .2byte -1
-
-gCacneaLevelUpLearnset:: @ 8324C8A
- 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
- .2byte -1
-
-gCacturneLevelUpLearnset:: @ 8324CA6
- 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
- .2byte -1
-
-gSnoruntLevelUpLearnset:: @ 8324CC6
- 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
- .2byte -1
-
-gGlalieLevelUpLearnset:: @ 8324CDE
- 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
- .2byte -1
-
-gLunatoneLevelUpLearnset:: @ 8324CFC
- 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
- .2byte -1
-
-gSolrockLevelUpLearnset:: @ 8324D12
- 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
- .2byte -1
-
-gAzurillLevelUpLearnset:: @ 8324D28
- 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
- .2byte -1
-
-gSpoinkLevelUpLearnset:: @ 8324D36
- 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
- .2byte -1
-
-gGrumpigLevelUpLearnset:: @ 8324D4E
- 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
- .2byte -1
-
-gPlusleLevelUpLearnset:: @ 8324D6C
- 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
- .2byte -1
-
-gMinunLevelUpLearnset:: @ 8324D84
- 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
- .2byte -1
-
-gMawileLevelUpLearnset:: @ 8324D9C
- 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
- .2byte -1
-
-gMedititeLevelUpLearnset:: @ 8324DB6
- 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
- .2byte -1
-
-gMedichamLevelUpLearnset:: @ 8324DCE
- 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
- .2byte -1
-
-gSwabluLevelUpLearnset:: @ 8324DF2
- 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
- .2byte -1
-
-gAltariaLevelUpLearnset:: @ 8324E0A
- 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
- .2byte -1
-
-gWynautLevelUpLearnset:: @ 8324E2A
- 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
- .2byte -1
-
-gDuskullLevelUpLearnset:: @ 8324E3A
- 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
- .2byte -1
-
-gDusclopsLevelUpLearnset:: @ 8324E52
- 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
- .2byte -1
-
-gRoseliaLevelUpLearnset:: @ 8324E70
- 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
- .2byte -1
-
-gSlakothLevelUpLearnset:: @ 8324E90
- 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
- .2byte -1
-
-gVigorothLevelUpLearnset:: @ 8324EA4
- 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
- .2byte -1
-
-gSlakingLevelUpLearnset:: @ 8324EBE
- 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
- .2byte -1
-
-gGulpinLevelUpLearnset:: @ 8324ED8
- 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
- .2byte -1
-
-gSwalotLevelUpLearnset:: @ 8324EF0
- 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
- .2byte -1
-
-gTropiusLevelUpLearnset:: @ 8324F10
- 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
- .2byte -1
-
-gWhismurLevelUpLearnset:: @ 8324F28
- 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
- .2byte -1
-
-gLoudredLevelUpLearnset:: @ 8324F40
- 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
- .2byte -1
-
-gExploudLevelUpLearnset:: @ 8324F5E
- 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
- .2byte -1
-
-gClamperlLevelUpLearnset:: @ 8324F7E
- 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
- .2byte -1
-
-gHuntailLevelUpLearnset:: @ 8324F88
- 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
- .2byte -1
-
-gGorebyssLevelUpLearnset:: @ 8324F9A
- 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
- .2byte -1
-
-gAbsolLevelUpLearnset:: @ 8324FAC
- 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
- .2byte -1
-
-gShuppetLevelUpLearnset:: @ 8324FC4
- 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
- .2byte -1
-
-gBanetteLevelUpLearnset:: @ 8324FDA
- 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
- .2byte -1
-
-gSeviperLevelUpLearnset:: @ 8324FF6
- 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
- .2byte -1
-
-gZangooseLevelUpLearnset:: @ 832500C
- 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
- .2byte -1
-
-gRelicanthLevelUpLearnset:: @ 8325024
- 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
- .2byte -1
-
-gAronLevelUpLearnset:: @ 832503C
- 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
- .2byte -1
-
-gLaironLevelUpLearnset:: @ 8325056
- 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
- .2byte -1
-
-gAggronLevelUpLearnset:: @ 8325076
- 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
- .2byte -1
-
-gCastformLevelUpLearnset:: @ 8325096
- 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
- .2byte -1
-
-gVolbeatLevelUpLearnset:: @ 83250A8
- 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
- .2byte -1
-
-gIllumiseLevelUpLearnset:: @ 83250BE
- 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
- .2byte -1
-
-gLileepLevelUpLearnset:: @ 83250D4
- 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
- .2byte -1
-
-gCradilyLevelUpLearnset:: @ 83250EA
- 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
- .2byte -1
-
-gAnorithLevelUpLearnset:: @ 8325106
- 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
- .2byte -1
-
-gArmaldoLevelUpLearnset:: @ 832511C
- 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
- .2byte -1
-
-gRaltsLevelUpLearnset:: @ 8325138
- 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
- .2byte -1
-
-gKirliaLevelUpLearnset:: @ 832514E
- 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
- .2byte -1
-
-gGardevoirLevelUpLearnset:: @ 832516A
- 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
- .2byte -1
-
-gBagonLevelUpLearnset:: @ 8325186
- 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
- .2byte -1
-
-gShelgonLevelUpLearnset:: @ 832519E
- 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
- .2byte -1
-
-gSalamenceLevelUpLearnset:: @ 83251BE
- 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
- .2byte -1
-
-gBeldumLevelUpLearnset:: @ 83251E0
- level_up_move 1, MOVE_TAKE_DOWN
- .2byte -1
-
-gMetangLevelUpLearnset:: @ 83251E4
- 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
- .2byte -1
-
-gMetagrossLevelUpLearnset:: @ 83251FA
- 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
- .2byte -1
-
-gRegirockLevelUpLearnset:: @ 8325216
- 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
- .2byte -1
-
-gRegiceLevelUpLearnset:: @ 832522A
- 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
- .2byte -1
-
-gRegisteelLevelUpLearnset:: @ 832523E
- 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
- .2byte -1
-
-gKyogreLevelUpLearnset:: @ 8325254
- 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
- .2byte -1
-
-gGroudonLevelUpLearnset:: @ 832526C
- 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
- .2byte -1
-
-gRayquazaLevelUpLearnset:: @ 8325284
- 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
- .2byte -1
-
-gLatiasLevelUpLearnset:: @ 832529C
- 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
- .2byte -1
-
-gLatiosLevelUpLearnset:: @ 83252B4
- 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
- .2byte -1
-
-gJirachiLevelUpLearnset:: @ 83252CC
- 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
- .2byte -1
-
-gDeoxysLevelUpLearnset:: @ 83252E6
- 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
- .2byte -1
-
-gChimechoLevelUpLearnset:: @ 8325300
- 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
- .2byte -1
diff --git a/data/nature_stat_table.inc b/data/nature_stat_table.inc
deleted file mode 100644
index efba22f06..000000000
--- a/data/nature_stat_table.inc
+++ /dev/null
@@ -1,27 +0,0 @@
-gNatureStatTable:: @ 831E818
-@ Atk Def Spd Sp.Atk Sp.Def
- .byte 0, 0, 0, 0, 0 @ Hardy
- .byte 1, -1, 0, 0, 0 @ Lonely
- .byte 1, 0, -1, 0, 0 @ Brave
- .byte 1, 0, 0, -1, 0 @ Adamant
- .byte 1, 0, 0, 0, -1 @ Naughty
- .byte -1, 1, 0, 0, 0 @ Bold
- .byte 0, 0, 0, 0, 0 @ Docile
- .byte 0, 1, -1, 0, 0 @ Relaxed
- .byte 0, 1, 0, -1, 0 @ Impish
- .byte 0, 1, 0, 0, -1 @ Lax
- .byte -1, 0, 1, 0, 0 @ Timid
- .byte 0, -1, 1, 0, 0 @ Hasty
- .byte 0, 0, 0, 0, 0 @ Serious
- .byte 0, 0, 1, -1, 0 @ Jolly
- .byte 0, 0, 1, 0, -1 @ Naive
- .byte -1, 0, 0, 1, 0 @ Modest
- .byte 0, -1, 0, 1, 0 @ Mild
- .byte 0, 0, -1, 1, 0 @ Quiet
- .byte 0, 0, 0, 0, 0 @ Bashful
- .byte 0, 0, 0, 1, -1 @ Rash
- .byte -1, 0, 0, 0, 1 @ Calm
- .byte 0, -1, 0, 0, 1 @ Gentle
- .byte 0, 0, -1, 0, 1 @ Sassy
- .byte 0, 0, 0, -1, 1 @ Careful
- .byte 0, 0, 0, 0, 0 @ Quirky
diff --git a/data/new_menu_helpers.s b/data/new_menu_helpers.s
deleted file mode 100644
index c11d73d7c..000000000
--- a/data/new_menu_helpers.s
+++ /dev/null
@@ -1,53 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_0860F074:: @ 860F074
- .incbin "graphics/interface/860F074.gbapal"
-
-gUnknown_0860F094:: @ 860F094
- .byte 8, 4, 1, 0
-
-gUnknown_0860F098:: @ 860F098
- window_template 0, 2, 15, 27, 4, 15, 0x194
- null_window_template
-
-gUnknown_0860F0A8:: @ 860F0A8
- window_template 0, 21, 9, 5, 4, 15, 0x125
-
- @ These are not referenced in src/new_menu_helpers.c; rather, they are in src/menu.c. Regardless, they were plopped here.
-
-gUnknown_0860F0B0:: @ 860F0B0
- .incbin "graphics/interface/860F0B0.gbapal"
-
-gUnknown_0860F0D0:: @ 860F0D0
- .byte 15, 1, 2, 0
-
-gUnknown_0860F0D4:: @ 860F0D4
- .2byte 0xC0C, 0
- .2byte 0xC20, 32
- .2byte 0xC20, 100
- .2byte 0xC20, 0x60
- .2byte 0xC20, 0x80
- .2byte 0xC20, 0x48
- .2byte 0xC20, 0x44
- .2byte 0xC20, 0x6C
- .2byte 0xC20, 0x68
- .2byte 0xC20, 0x88
- .2byte 0xC20, 0xA4
- .2byte 0xC20, 0x24
- .2byte 0xC20, 0x28
- .2byte 0xC20, 0x2C
- .2byte 0xC20, 0x40
- .2byte 0xC20, 0x84
- .2byte 0xC20, 0x4C
- .2byte 0xC20, 0xA0
- .2byte 0xC20, 0x8C
- .2byte 0xC2A, 0xA8
- .2byte 0xC2A, 0xC0
- .2byte 0xC2A, 0xC8
- .2byte 0xC2A, 0xE0
- .2byte 0xC2A, 0xE8
- .2byte 0x808, 0xAE
- .2byte 0x808, 0xAF
diff --git a/data/pokedex_order.inc b/data/pokedex_order.inc
deleted file mode 100644
index a7699edac..000000000
--- a/data/pokedex_order.inc
+++ /dev/null
@@ -1,1238 +0,0 @@
-gSpeciesToHoennPokedexNum:: @ 831D94C
- .2byte 203
- .2byte 204
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 208
- .2byte 209
- .2byte 210
- .2byte 211
- .2byte 212
- .2byte 213
- .2byte 214
- .2byte 215
- .2byte 216
- .2byte 217
- .2byte 218
- .2byte 219
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 224
- .2byte 225
- .2byte 226
- .2byte 156
- .2byte 157
- .2byte 112
- .2byte 113
- .2byte 227
- .2byte 228
- .2byte 229
- .2byte 230
- .2byte 231
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 153
- .2byte 154
- .2byte 138
- .2byte 139
- .2byte 63
- .2byte 64
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 235
- .2byte 236
- .2byte 237
- .2byte 238
- .2byte 239
- .2byte 240
- .2byte 241
- .2byte 242
- .2byte 158
- .2byte 159
- .2byte 243
- .2byte 244
- .2byte 245
- .2byte 246
- .2byte 247
- .2byte 248
- .2byte 249
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 250
- .2byte 251
- .2byte 252
- .2byte 66
- .2byte 67
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 253
- .2byte 254
- .2byte 255
- .2byte 256
- .2byte 82
- .2byte 83
- .2byte 257
- .2byte 92
- .2byte 93
- .2byte 258
- .2byte 259
- .2byte 106
- .2byte 107
- .2byte 260
- .2byte 261
- .2byte 262
- .2byte 263
- .2byte 264
- .2byte 265
- .2byte 266
- .2byte 267
- .2byte 268
- .2byte 269
- .2byte 84
- .2byte 85
- .2byte 270
- .2byte 271
- .2byte 272
- .2byte 273
- .2byte 274
- .2byte 275
- .2byte 276
- .2byte 108
- .2byte 109
- .2byte 169
- .2byte 170
- .2byte 277
- .2byte 278
- .2byte 279
- .2byte 184
- .2byte 185
- .2byte 50
- .2byte 51
- .2byte 143
- .2byte 144
- .2byte 280
- .2byte 281
- .2byte 282
- .2byte 283
- .2byte 284
- .2byte 167
- .2byte 285
- .2byte 52
- .2byte 53
- .2byte 286
- .2byte 287
- .2byte 288
- .2byte 289
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 293
- .2byte 294
- .2byte 295
- .2byte 296
- .2byte 297
- .2byte 298
- .2byte 299
- .2byte 300
- .2byte 301
- .2byte 302
- .2byte 303
- .2byte 304
- .2byte 305
- .2byte 306
- .2byte 307
- .2byte 308
- .2byte 309
- .2byte 310
- .2byte 311
- .2byte 312
- .2byte 313
- .2byte 314
- .2byte 315
- .2byte 316
- .2byte 317
- .2byte 318
- .2byte 319
- .2byte 320
- .2byte 321
- .2byte 322
- .2byte 323
- .2byte 65
- .2byte 181
- .2byte 182
- .2byte 155
- .2byte 324
- .2byte 137
- .2byte 325
- .2byte 326
- .2byte 162
- .2byte 163
- .2byte 327
- .2byte 328
- .2byte 329
- .2byte 91
- .2byte 55
- .2byte 56
- .2byte 330
- .2byte 331
- .2byte 332
- .2byte 333
- .2byte 334
- .2byte 335
- .2byte 336
- .2byte 337
- .2byte 338
- .2byte 339
- .2byte 340
- .2byte 341
- .2byte 342
- .2byte 343
- .2byte 344
- .2byte 345
- .2byte 346
- .2byte 161
- .2byte 164
- .2byte 347
- .2byte 348
- .2byte 349
- .2byte 350
- .2byte 351
- .2byte 352
- .2byte 353
- .2byte 354
- .2byte 355
- .2byte 356
- .2byte 168
- .2byte 357
- .2byte 358
- .2byte 359
- .2byte 103
- .2byte 104
- .2byte 360
- .2byte 361
- .2byte 180
- .2byte 362
- .2byte 363
- .2byte 364
- .2byte 365
- .2byte 115
- .2byte 366
- .2byte 367
- .2byte 186
- .2byte 165
- .2byte 166
- .2byte 368
- .2byte 369
- .2byte 370
- .2byte 371
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 8
- .2byte 9
- .2byte 10
- .2byte 11
- .2byte 12
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 25
- .2byte 26
- .2byte 34
- .2byte 35
- .2byte 114
- .2byte 27
- .2byte 28
- .2byte 32
- .2byte 33
- .2byte 99
- .2byte 100
- .2byte 61
- .2byte 62
- .2byte 145
- .2byte 131
- .2byte 132
- .2byte 60
- .2byte 105
- .2byte 68
- .2byte 127
- .2byte 128
- .2byte 183
- .2byte 129
- .2byte 130
- .2byte 140
- .2byte 141
- .2byte 97
- .2byte 98
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 48
- .2byte 49
- .2byte 78
- .2byte 79
- .2byte 101
- .2byte 102
- .2byte 173
- .2byte 174
- .2byte 175
- .2byte 119
- .2byte 120
- .2byte 171
- .2byte 172
- .2byte 125
- .2byte 126
- .2byte 54
- .2byte 110
- .2byte 111
- .2byte 80
- .2byte 81
- .2byte 69
- .2byte 76
- .2byte 77
- .2byte 121
- .2byte 122
- .2byte 160
- .2byte 148
- .2byte 149
- .2byte 94
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 95
- .2byte 96
- .2byte 150
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 176
- .2byte 177
- .2byte 178
- .2byte 152
- .2byte 146
- .2byte 147
- .2byte 124
- .2byte 123
- .2byte 179
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 142
- .2byte 86
- .2byte 87
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 187
- .2byte 188
- .2byte 189
- .2byte 190
- .2byte 191
- .2byte 192
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 198
- .2byte 199
- .2byte 200
- .2byte 196
- .2byte 197
- .2byte 201
- .2byte 202
- .2byte 151
-
-gSpeciesToNationalPokedexNum:: @ 831DC82
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 8
- .2byte 9
- .2byte 10
- .2byte 11
- .2byte 12
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 25
- .2byte 26
- .2byte 27
- .2byte 28
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 37
- .2byte 38
- .2byte 39
- .2byte 40
- .2byte 41
- .2byte 42
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 54
- .2byte 55
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 72
- .2byte 73
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 81
- .2byte 82
- .2byte 83
- .2byte 84
- .2byte 85
- .2byte 86
- .2byte 87
- .2byte 88
- .2byte 89
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 100
- .2byte 101
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 109
- .2byte 110
- .2byte 111
- .2byte 112
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 116
- .2byte 117
- .2byte 118
- .2byte 119
- .2byte 120
- .2byte 121
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 126
- .2byte 127
- .2byte 128
- .2byte 129
- .2byte 130
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte 162
- .2byte 163
- .2byte 164
- .2byte 165
- .2byte 166
- .2byte 167
- .2byte 168
- .2byte 169
- .2byte 170
- .2byte 171
- .2byte 172
- .2byte 173
- .2byte 174
- .2byte 175
- .2byte 176
- .2byte 177
- .2byte 178
- .2byte 179
- .2byte 180
- .2byte 181
- .2byte 182
- .2byte 183
- .2byte 184
- .2byte 185
- .2byte 186
- .2byte 187
- .2byte 188
- .2byte 189
- .2byte 190
- .2byte 191
- .2byte 192
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 196
- .2byte 197
- .2byte 198
- .2byte 199
- .2byte 200
- .2byte 201
- .2byte 202
- .2byte 203
- .2byte 204
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 208
- .2byte 209
- .2byte 210
- .2byte 211
- .2byte 212
- .2byte 213
- .2byte 214
- .2byte 215
- .2byte 216
- .2byte 217
- .2byte 218
- .2byte 219
- .2byte 220
- .2byte 221
- .2byte 222
- .2byte 223
- .2byte 224
- .2byte 225
- .2byte 226
- .2byte 227
- .2byte 228
- .2byte 229
- .2byte 230
- .2byte 231
- .2byte 232
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 237
- .2byte 238
- .2byte 239
- .2byte 240
- .2byte 241
- .2byte 242
- .2byte 243
- .2byte 244
- .2byte 245
- .2byte 246
- .2byte 247
- .2byte 248
- .2byte 249
- .2byte 250
- .2byte 251
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
- .2byte 252
- .2byte 253
- .2byte 254
- .2byte 255
- .2byte 256
- .2byte 257
- .2byte 258
- .2byte 259
- .2byte 260
- .2byte 261
- .2byte 262
- .2byte 263
- .2byte 264
- .2byte 265
- .2byte 266
- .2byte 267
- .2byte 268
- .2byte 269
- .2byte 270
- .2byte 271
- .2byte 272
- .2byte 273
- .2byte 274
- .2byte 275
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 276
- .2byte 277
- .2byte 285
- .2byte 286
- .2byte 327
- .2byte 278
- .2byte 279
- .2byte 283
- .2byte 284
- .2byte 320
- .2byte 321
- .2byte 300
- .2byte 301
- .2byte 352
- .2byte 343
- .2byte 344
- .2byte 299
- .2byte 324
- .2byte 302
- .2byte 339
- .2byte 340
- .2byte 370
- .2byte 341
- .2byte 342
- .2byte 349
- .2byte 350
- .2byte 318
- .2byte 319
- .2byte 328
- .2byte 329
- .2byte 330
- .2byte 296
- .2byte 297
- .2byte 309
- .2byte 310
- .2byte 322
- .2byte 323
- .2byte 363
- .2byte 364
- .2byte 365
- .2byte 331
- .2byte 332
- .2byte 361
- .2byte 362
- .2byte 337
- .2byte 338
- .2byte 298
- .2byte 325
- .2byte 326
- .2byte 311
- .2byte 312
- .2byte 303
- .2byte 307
- .2byte 308
- .2byte 333
- .2byte 334
- .2byte 360
- .2byte 355
- .2byte 356
- .2byte 315
- .2byte 287
- .2byte 288
- .2byte 289
- .2byte 316
- .2byte 317
- .2byte 357
- .2byte 293
- .2byte 294
- .2byte 295
- .2byte 366
- .2byte 367
- .2byte 368
- .2byte 359
- .2byte 353
- .2byte 354
- .2byte 336
- .2byte 335
- .2byte 369
- .2byte 304
- .2byte 305
- .2byte 306
- .2byte 351
- .2byte 313
- .2byte 314
- .2byte 345
- .2byte 346
- .2byte 347
- .2byte 348
- .2byte 280
- .2byte 281
- .2byte 282
- .2byte 371
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 380
- .2byte 381
- .2byte 385
- .2byte 386
- .2byte 358
-
-gHoennToNationalOrder:: @ 831DFB8
- .2byte 252
- .2byte 253
- .2byte 254
- .2byte 255
- .2byte 256
- .2byte 257
- .2byte 258
- .2byte 259
- .2byte 260
- .2byte 261
- .2byte 262
- .2byte 263
- .2byte 264
- .2byte 265
- .2byte 266
- .2byte 267
- .2byte 268
- .2byte 269
- .2byte 270
- .2byte 271
- .2byte 272
- .2byte 273
- .2byte 274
- .2byte 275
- .2byte 276
- .2byte 277
- .2byte 278
- .2byte 279
- .2byte 280
- .2byte 281
- .2byte 282
- .2byte 283
- .2byte 284
- .2byte 285
- .2byte 286
- .2byte 287
- .2byte 288
- .2byte 289
- .2byte 63
- .2byte 64
- .2byte 65
- .2byte 290
- .2byte 291
- .2byte 292
- .2byte 293
- .2byte 294
- .2byte 295
- .2byte 296
- .2byte 297
- .2byte 118
- .2byte 119
- .2byte 129
- .2byte 130
- .2byte 298
- .2byte 183
- .2byte 184
- .2byte 74
- .2byte 75
- .2byte 76
- .2byte 299
- .2byte 300
- .2byte 301
- .2byte 41
- .2byte 42
- .2byte 169
- .2byte 72
- .2byte 73
- .2byte 302
- .2byte 303
- .2byte 304
- .2byte 305
- .2byte 306
- .2byte 66
- .2byte 67
- .2byte 68
- .2byte 307
- .2byte 308
- .2byte 309
- .2byte 310
- .2byte 311
- .2byte 312
- .2byte 81
- .2byte 82
- .2byte 100
- .2byte 101
- .2byte 313
- .2byte 314
- .2byte 43
- .2byte 44
- .2byte 45
- .2byte 182
- .2byte 84
- .2byte 85
- .2byte 315
- .2byte 316
- .2byte 317
- .2byte 318
- .2byte 319
- .2byte 320
- .2byte 321
- .2byte 322
- .2byte 323
- .2byte 218
- .2byte 219
- .2byte 324
- .2byte 88
- .2byte 89
- .2byte 109
- .2byte 110
- .2byte 325
- .2byte 326
- .2byte 27
- .2byte 28
- .2byte 327
- .2byte 227
- .2byte 328
- .2byte 329
- .2byte 330
- .2byte 331
- .2byte 332
- .2byte 333
- .2byte 334
- .2byte 335
- .2byte 336
- .2byte 337
- .2byte 338
- .2byte 339
- .2byte 340
- .2byte 341
- .2byte 342
- .2byte 343
- .2byte 344
- .2byte 345
- .2byte 346
- .2byte 347
- .2byte 348
- .2byte 174
- .2byte 39
- .2byte 40
- .2byte 349
- .2byte 350
- .2byte 351
- .2byte 120
- .2byte 121
- .2byte 352
- .2byte 353
- .2byte 354
- .2byte 355
- .2byte 356
- .2byte 357
- .2byte 358
- .2byte 359
- .2byte 37
- .2byte 38
- .2byte 172
- .2byte 25
- .2byte 26
- .2byte 54
- .2byte 55
- .2byte 360
- .2byte 202
- .2byte 177
- .2byte 178
- .2byte 203
- .2byte 231
- .2byte 232
- .2byte 127
- .2byte 214
- .2byte 111
- .2byte 112
- .2byte 361
- .2byte 362
- .2byte 363
- .2byte 364
- .2byte 365
- .2byte 366
- .2byte 367
- .2byte 368
- .2byte 369
- .2byte 222
- .2byte 170
- .2byte 171
- .2byte 370
- .2byte 116
- .2byte 117
- .2byte 230
- .2byte 371
- .2byte 372
- .2byte 373
- .2byte 374
- .2byte 375
- .2byte 376
- .2byte 377
- .2byte 378
- .2byte 379
- .2byte 380
- .2byte 381
- .2byte 382
- .2byte 383
- .2byte 384
- .2byte 385
- .2byte 386
- .2byte 1
- .2byte 2
- .2byte 3
- .2byte 4
- .2byte 5
- .2byte 6
- .2byte 7
- .2byte 8
- .2byte 9
- .2byte 10
- .2byte 11
- .2byte 12
- .2byte 13
- .2byte 14
- .2byte 15
- .2byte 16
- .2byte 17
- .2byte 18
- .2byte 19
- .2byte 20
- .2byte 21
- .2byte 22
- .2byte 23
- .2byte 24
- .2byte 29
- .2byte 30
- .2byte 31
- .2byte 32
- .2byte 33
- .2byte 34
- .2byte 35
- .2byte 36
- .2byte 46
- .2byte 47
- .2byte 48
- .2byte 49
- .2byte 50
- .2byte 51
- .2byte 52
- .2byte 53
- .2byte 56
- .2byte 57
- .2byte 58
- .2byte 59
- .2byte 60
- .2byte 61
- .2byte 62
- .2byte 69
- .2byte 70
- .2byte 71
- .2byte 77
- .2byte 78
- .2byte 79
- .2byte 80
- .2byte 83
- .2byte 86
- .2byte 87
- .2byte 90
- .2byte 91
- .2byte 92
- .2byte 93
- .2byte 94
- .2byte 95
- .2byte 96
- .2byte 97
- .2byte 98
- .2byte 99
- .2byte 102
- .2byte 103
- .2byte 104
- .2byte 105
- .2byte 106
- .2byte 107
- .2byte 108
- .2byte 113
- .2byte 114
- .2byte 115
- .2byte 122
- .2byte 123
- .2byte 124
- .2byte 125
- .2byte 126
- .2byte 128
- .2byte 131
- .2byte 132
- .2byte 133
- .2byte 134
- .2byte 135
- .2byte 136
- .2byte 137
- .2byte 138
- .2byte 139
- .2byte 140
- .2byte 141
- .2byte 142
- .2byte 143
- .2byte 144
- .2byte 145
- .2byte 146
- .2byte 147
- .2byte 148
- .2byte 149
- .2byte 150
- .2byte 151
- .2byte 152
- .2byte 153
- .2byte 154
- .2byte 155
- .2byte 156
- .2byte 157
- .2byte 158
- .2byte 159
- .2byte 160
- .2byte 161
- .2byte 162
- .2byte 163
- .2byte 164
- .2byte 165
- .2byte 166
- .2byte 167
- .2byte 168
- .2byte 173
- .2byte 175
- .2byte 176
- .2byte 179
- .2byte 180
- .2byte 181
- .2byte 185
- .2byte 186
- .2byte 187
- .2byte 188
- .2byte 189
- .2byte 190
- .2byte 191
- .2byte 192
- .2byte 193
- .2byte 194
- .2byte 195
- .2byte 196
- .2byte 197
- .2byte 198
- .2byte 199
- .2byte 200
- .2byte 201
- .2byte 204
- .2byte 205
- .2byte 206
- .2byte 207
- .2byte 208
- .2byte 209
- .2byte 210
- .2byte 211
- .2byte 212
- .2byte 213
- .2byte 215
- .2byte 216
- .2byte 217
- .2byte 220
- .2byte 221
- .2byte 223
- .2byte 224
- .2byte 225
- .2byte 226
- .2byte 228
- .2byte 229
- .2byte 233
- .2byte 234
- .2byte 235
- .2byte 236
- .2byte 237
- .2byte 238
- .2byte 239
- .2byte 240
- .2byte 241
- .2byte 242
- .2byte 243
- .2byte 244
- .2byte 245
- .2byte 246
- .2byte 247
- .2byte 248
- .2byte 249
- .2byte 250
- .2byte 251
- .2byte 387
- .2byte 388
- .2byte 389
- .2byte 390
- .2byte 391
- .2byte 392
- .2byte 393
- .2byte 394
- .2byte 395
- .2byte 396
- .2byte 397
- .2byte 398
- .2byte 399
- .2byte 400
- .2byte 401
- .2byte 402
- .2byte 403
- .2byte 404
- .2byte 405
- .2byte 406
- .2byte 407
- .2byte 408
- .2byte 409
- .2byte 410
- .2byte 411
diff --git a/data/reset_rtc_screen.s b/data/reset_rtc_screen.s
deleted file mode 100644
index 6d3964da8..000000000
--- a/data/reset_rtc_screen.s
+++ /dev/null
@@ -1,78 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_08510404:: @ 8510404 struct BgTemplate
- .4byte 0x000001f0
-
- .align 2
-gUnknown_08510408:: @ 8510408
- window_template 0x00, 0x01, 0x01, 0x13, 0x09, 0x0f, 0x0155
- window_template 0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x00e9
- null_window_template
-
- .align 2
-gUnknown_08510420:: @ 8510420
- window_template 0x00, 0x04, 0x09, 0x15, 0x02, 0x0f, 0x00bf
-
- .align 2
-gUnknown_08510428:: @ 8510428
- .byte 3, 0, 1, 0, 15, 39, 0, 2, 0, 0, 0, 0
- .byte 4, 0, 0, 0, 23, 0, 1, 3, 0, 0, 0, 0
- .byte 5, 0, 0, 0, 59, 0, 2, 4, 0, 0, 0, 0
- .byte 6, 0, 0, 0, 59, 0, 3, 5, 0, 0, 0, 0
- .byte 7, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0
-
- .align 2
-gOamData_08510464:: @ 8510464
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gResetRtcScreen_DownArrowGfx:: @ 851046C
- .incbin "graphics/misc/reset_rtc_screen_downarrow.4bpp"
-
- .align 2
-gResetRtcScreen_RightArrowGfx:: @ 851048C
- .incbin "graphics/misc/reset_rtc_screen_rightarrow.4bpp"
-
- .align 2
-gResetRtcScreen_ArrowPal: @ 85104AC
- .incbin "graphics/misc/reset_rtc_screen_arrow.gbapal"
-
- .align 2
-gSpriteImageTable_85104B4:: @ 85104B4
- obj_frame_tiles gResetRtcScreen_DownArrowGfx, 0x20
- obj_frame_tiles gResetRtcScreen_RightArrowGfx, 0x20
-
- .align 2
-gUnknown_085104C4:: @ 85104C4
- obj_pal gResetRtcScreen_ArrowPal, 0x1000
-
- .align 2
-gSpriteAnim_85104CC:: @ 85104CC
- obj_image_anim_frame 0, 30
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_85104D4: @ 85104D4
- obj_image_anim_frame 0, 30, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_85104DC:: @ 85104DC
- obj_image_anim_frame 1, 30
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_85104E4:: @ 85104E4
- .4byte gSpriteAnim_85104CC
- .4byte gSpriteAnim_85104D4
- .4byte gSpriteAnim_85104DC
-
- .align 2
-gSpriteTemplate_85104F0:: @ 85104F0
- spr_template 0xFFFF, 0x1000, gOamData_08510464, gSpriteAnimTable_85104E4, gSpriteImageTable_85104B4, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/data/rom_8011DC0.s b/data/rom_8011DC0.s
index a86d4b442..df212a640 100644
--- a/data/rom_8011DC0.s
+++ b/data/rom_8011DC0.s
@@ -1705,14 +1705,14 @@ gUnknown_082F06F8:: @ 82F06F8
.4byte gText_ReturnToTitle
.align 2
-gUnknown_082F0720:: @ 82F0720 struct TextColor
+gUnknown_082F0720:: @ 82F0720
.byte 0x00, 0x01, 0x02
.align 2
.byte 0x00, 0x01, 0x02
.align 2
-gUnknown_082F0728:: @ 82F0728 struct TextColor
+gUnknown_082F0728:: @ 82F0728
.byte 0x01, 0x02, 0x03
.align 2
diff --git a/data/spinda_spot_graphics.inc b/data/spinda_spot_graphics.inc
deleted file mode 100644
index bbe604b82..000000000
--- a/data/spinda_spot_graphics.inc
+++ /dev/null
@@ -1,81 +0,0 @@
- .align 2
-gSpindaSpotGraphics:: @ 831E2F0
- .byte 16 @ X
- .byte 7 @ Y
- .2byte 0b0000000001110000
- .2byte 0b0000000111111100
- .2byte 0b0000001111111110
- .2byte 0b0000011111111110
- .2byte 0b0000011111111111
- .2byte 0b0000111111111111
- .2byte 0b0000111111111111
- .2byte 0b0000111111111111
- .2byte 0b0000011111111110
- .2byte 0b0000011111111110
- .2byte 0b0000001111111100
- .2byte 0b0000000111100000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
-
- .byte 40 @ X
- .byte 8 @ Y
- .2byte 0b0000000111100000
- .2byte 0b0000001111111000
- .2byte 0b0000011111111100
- .2byte 0b0000111111111110
- .2byte 0b0000111111111110
- .2byte 0b0001111111111111
- .2byte 0b0001111111111111
- .2byte 0b0001111111111111
- .2byte 0b0000111111111110
- .2byte 0b0000111111111110
- .2byte 0b0000011111111100
- .2byte 0b0000011111111000
- .2byte 0b0000000011100000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
-
- .byte 22 @ X
- .byte 25 @ Y
- .2byte 0b0000000000011100
- .2byte 0b0000000000111110
- .2byte 0b0000000001111111
- .2byte 0b0000000001111111
- .2byte 0b0000000001111111
- .2byte 0b0000000001111111
- .2byte 0b0000000001111111
- .2byte 0b0000000000111110
- .2byte 0b0000000000011100
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
-
- .byte 34 @ X
- .byte 26 @ Y
- .2byte 0b0000000000111100
- .2byte 0b0000000001111110
- .2byte 0b0000000011111111
- .2byte 0b0000000011111111
- .2byte 0b0000000011111111
- .2byte 0b0000000011111111
- .2byte 0b0000000011111111
- .2byte 0b0000000001111110
- .2byte 0b0000000000111100
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
- .2byte 0b0000000000000000
diff --git a/data/title_screen.s b/data/title_screen.s
deleted file mode 100644
index b07464ce9..000000000
--- a/data/title_screen.s
+++ /dev/null
@@ -1,163 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
- .incbin "graphics/title_screen/unk_853EF78.gbapal"
-
- .align 2
-gTitleScreenRayquazaGfx:: @ 853F058
- .incbin "graphics/title_screen/rayquaza.4bpp.lz"
-
- .align 2
-gTitleScreenRayquazaTilemap:: @ 853F83C
- .incbin "graphics/title_screen/rayquaza.bin.lz"
-
- .align 2
-gTitleScreenLogoShineGfx:: @ 853FB3C
- .incbin "graphics/title_screen/logo_shine.4bpp.lz"
-
- .align 2
-gTitleScreenCloudsGfx:: @ 853FC8C
- .incbin "graphics/title_screen/clouds.4bpp.lz"
-
- .align 2
-gUnknown_0853FF70:: @ 853FF70
- .2byte 0x0010, 0x0110, 0x0210, 0x0310, 0x0410, 0x0510, 0x0610, 0x0710
- .2byte 0x0810, 0x0910, 0x0a10, 0x0b10, 0x0c10, 0x0d10, 0x0e10, 0x0f10
- .2byte 0x100f, 0x100e, 0x100d, 0x100c, 0x100b, 0x100a, 0x1009, 0x1008
- .2byte 0x1007, 0x1006, 0x1005, 0x1004, 0x1003, 0x1002, 0x1001, 0x1000
- .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000
- .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000
- .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000
- .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000
-
- .align 2
-gUnknown_0853FFF0:: @ 853FFF0
- .byte 0xa0, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_0853FFF8:: @ 853FFF8
- .byte 0xa0, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_08540000:: @ 8540000
- .2byte 0x0000, 0x001e, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540008:: @ 8540008
- .2byte 0x0040, 0x001e, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540010:: @ 8540010
- .4byte gUnknown_08540000
-
- .align 2
-gUnknown_08540014:: @ 8540014
- .4byte gUnknown_08540008
-
- .align 2
-gUnknown_08540018:: @ 8540018
- spr_template 0x03e8, 0x03e8, gUnknown_0853FFF0, gUnknown_08540010, NULL, gDummySpriteAffineAnimTable, sub_80AA40C
-
- .align 2
-gUnknown_08540030:: @ 8540030
- spr_template 0x03e8, 0x03e8, gUnknown_0853FFF8, gUnknown_08540014, NULL, gDummySpriteAffineAnimTable, sub_80AA474
-
- .align 2
-gUnknown_08540048:: @ 8540048
- obj_tiles gTitleScreenEmeraldVersionGfx, 0x1000, 0x03e8
- null_obj_tiles
-
- .align 2
-gUnknown_08540058:: @ 8540058
- .byte 0xa0, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_08540060:: @ 8540060
- .2byte 0x0001, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540068:: @ 8540068
- .2byte 0x0005, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540070:: @ 8540070
- .2byte 0x0009, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540078:: @ 8540078
- .2byte 0x000d, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540080:: @ 8540080
- .2byte 0x0011, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540088:: @ 8540088
- .2byte 0x0015, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540090:: @ 8540090
- .2byte 0x0019, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540098:: @ 8540098
- .2byte 0x001d, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_085400A0:: @ 85400A0
- .2byte 0x0021, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_085400A8:: @ 85400A8
- .2byte 0x0025, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_085400B0:: @ 85400B0
- .4byte gUnknown_08540060
- .4byte gUnknown_08540068
- .4byte gUnknown_08540070
- .4byte gUnknown_08540078
- .4byte gUnknown_08540080
- .4byte gUnknown_08540088
- .4byte gUnknown_08540090
- .4byte gUnknown_08540098
- .4byte gUnknown_085400A0
- .4byte gUnknown_085400A8
-
- .align 2
-gUnknown_085400D8:: @ 85400D8
- spr_template 0x03e9, 0x03e9, gUnknown_08540058, gUnknown_085400B0, NULL, gDummySpriteAffineAnimTable, sub_80AA4B4
-
- .align 2
-gUnknown_085400F0:: @ 85400F0
- obj_tiles gTitleScreenPressStartGfx, 0x0520, 0x03e9
- null_obj_tiles
-
- .align 2
-gUnknown_08540100:: @ 8540100
- obj_pal gTitleScreenPressStartPal, 0x03e9
- null_obj_pal
-
- .align 2
-gUnknown_08540110:: @ 8540110
- .byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_08540118:: @ 8540118
- .2byte 0x0000, 0x0004, 0xffff, 0x0000
-
- .align 2
-gUnknown_08540120:: @ 8540120
- .4byte gUnknown_08540118
-
- .align 2
-gUnknown_08540124:: @ 8540124
- spr_template 0x03ea, 0x03e9, gUnknown_08540110, gUnknown_08540120, NULL, gDummySpriteAffineAnimTable, title_screen_logo_shine_obj_callback_type1
-
- .align 2
-gUnknown_0854013C:: @ 854013C
- obj_tiles gTitleScreenLogoShineGfx, 0x0800, 0x03ea
- null_obj_tiles
diff --git a/data/tm_hm_learnsets.inc b/data/tm_hm_learnsets.inc
deleted file mode 100644
index 41d12fcaa..000000000
--- a/data/tm_hm_learnsets.inc
+++ /dev/null
@@ -1,414 +0,0 @@
- .align 2
-gTMHMLearnsets:: @ 831E898
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ??????????
- .8byte 0b0011100100000111100000100010000100001101010000011100100000 @ Bulbasaur
- .8byte 0b0011100100000111100000100010000100001101010000011100100000 @ Ivysaur
- .8byte 0b0011100100000111100000100010000110001101010100011100110000 @ Venusaur
- .8byte 0b0010100110000111101010010011001100010100010000011000100011 @ Charmander
- .8byte 0b0010100110000111101010010011001100010100010000011000100011 @ Charmeleon
- .8byte 0b0010101110010111101010010011001110010100010100011000110011 @ Charizard
- .8byte 0b1110110000000111100000000011001100010100110011001001100101 @ Squirtle
- .8byte 0b1110110000000111100000000011001100010100110011001001100101 @ Wartortle
- .8byte 0b1110110000000111100000000011001110010100110111001001110101 @ Blastoise
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Caterpie
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Metapod
- .8byte 0b0001000000101111101000000010110100001111110100011000100000 @ Butterfree
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Weedle
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Kakuna
- .8byte 0b0010000100001111101000100011000100001101010100011000100000 @ Beedrill
- .8byte 0b0000001000011111101000000010000100000100110000011000100000 @ Pidgey
- .8byte 0b0000001000011111101000000010000100000100110000011000100000 @ Pidgeotto
- .8byte 0b0000001000011111101000000010000100000100110100011000100000 @ Pidgeot
- .8byte 0b0010000100001111100000001010101101110100110011111000100000 @ Rattata
- .8byte 0b0010100100001111100000001010101101110100110111111000110000 @ Raticate
- .8byte 0b0000001000011111101000000010000100000100110000011000100000 @ Spearow
- .8byte 0b0000001000011111101000000010000100000100110100011000100000 @ Fearow
- .8byte 0b0000100001001111110000100010001110010101110000011000100000 @ Ekans
- .8byte 0b0000100001001111110000100010001110010101110100011000100000 @ Arbok
- .8byte 0b0011100000000111100000001011001101110100111000001000100001 @ Pikachu
- .8byte 0b0011100000001111100000001011001101110100111100001000100001 @ Raichu
- .8byte 0b0010100100001111101101000011001110010100010000011000100001 @ Sandshrew
- .8byte 0b0010100100001111101101000011001110010100010100011000100001 @ Sandslash
- .8byte 0b0010100100001111101000101010001101110100110011011000100100 @ Nidoran♀
- .8byte 0b0010100100001111101000101010001101110100110011011000100100 @ Nidorina
- .8byte 0b0010110100001111111111111011101111110100110111111000110101 @ Nidoqueen
- .8byte 0b0010100100001111100000101010001101110100110011011000100100 @ Nidoran♂
- .8byte 0b0010100100001111100000101010001101110100110011011000100100 @ Nidorino
- .8byte 0b0010110100001111110111111011101111110100110111111000110101 @ Nidoking
- .8byte 0b0001100001000111100010011111111101111110111011011000101101 @ Clefairy
- .8byte 0b0001100001000111100010011111111101111110111111011000101101 @ Clefable
- .8byte 0b0000000010000111100010010010001100010110010000011000110000 @ Vulpix
- .8byte 0b0000000010000111100010010010001100010110010100011000110000 @ Ninetales
- .8byte 0b0001100001000111100010011111111101101110111011011000100101 @ Jigglypuff
- .8byte 0b0001100001000111100010011111111101101110111111011000100101 @ Wigglytuff
- .8byte 0b0000000001011111111000100010100100000101110000111000100000 @ Zubat
- .8byte 0b0000000001011111111000100010100100000101110100111000100000 @ Golbat
- .8byte 0b0001000100000111100000100010000100001101010000011100100000 @ Oddish
- .8byte 0b0001000100000111100000100010000100001101010000011100100000 @ Gloom
- .8byte 0b0001000100000111100000100010000100001101010100011100100000 @ Vileplume
- .8byte 0b0011000100001111101000100010001100001101010000011100100000 @ Paras
- .8byte 0b0011000100001111101000100010001100001101010100011100100000 @ Parasect
- .8byte 0b0001000000101111100000100010010100001101010000011000100000 @ Venonat
- .8byte 0b0001000000101111101000100010010100001101010100011000100000 @ Venomoth
- .8byte 0b0010000100001111101100100010001110000100010000011000100000 @ Diglett
- .8byte 0b0010000100001111101100100010001110000100010100011000100000 @ Dugtrio
- .8byte 0b0001000101001111111000001010101101110100110000111000100100 @ Meowth
- .8byte 0b0001000101001111111000001010101101110100110100111000110100 @ Persian
- .8byte 0b1111110000000111101000000011001100010100110011001001101101 @ Psyduck
- .8byte 0b1111110000000111101000000011001100010100110111001001101101 @ Golduck
- .8byte 0b0010100010001111101100000011001111110100110000111010100001 @ Mankey
- .8byte 0b0010100010001111101100000011001111110100110100111010100001 @ Primeape
- .8byte 0b0010100010001111101010010010001100010100010000011000110000 @ Growlithe
- .8byte 0b0010100010001111101010010010001100010100010100011000110000 @ Arcanine
- .8byte 0b1100010000001111100000000010011100000100110011001001100100 @ Poliwag
- .8byte 0b1110110000001111100000000011011110000100110011001001100101 @ Poliwhirl
- .8byte 0b1110110000001111100100000011011110000100110111001011100101 @ Poliwrath
- .8byte 0b0001000001101111110000001110110100010110111000111000101001 @ Abra
- .8byte 0b0001000001101111110000001110110100010110111000111000101001 @ Kadabra
- .8byte 0b0001000001101111110000001110110100010110111100111000101001 @ Alakazam
- .8byte 0b0010100000001111100110010011001110000100110000011010100001 @ Machop
- .8byte 0b0010100000001111100110010011001110000100110000011010100001 @ Machoke
- .8byte 0b0010100000001111100110010011001110000100110100011010100001 @ Machamp
- .8byte 0b0001000100001111100000100010000100001101010000011100100000 @ Bellsprout
- .8byte 0b0001000100001111100000100010000100001101010000011100100000 @ Weepinbell
- .8byte 0b0001000100001111100000100010000100001101010100011100100000 @ Victreebel
- .8byte 0b1100010100001111100000100010000100000101110011001001100100 @ Tentacool
- .8byte 0b1100010100001111100000100010000100000101110111001001100100 @ Tentacruel
- .8byte 0b0010100000000111100111010011001110000100010000011000100001 @ Geodude
- .8byte 0b0010100000000111100111010011001110000100010000011000100001 @ Graveler
- .8byte 0b0010100000000111100111010011001110000100010100011000110001 @ Golem
- .8byte 0b0000100010000111100010010010000100011100010000011000100000 @ Ponyta
- .8byte 0b0000100010000111100010010010000100011100010100011000100000 @ Rapidash
- .8byte 0b1001110000100111100010010010111110010110110011011001101100 @ Slowpoke
- .8byte 0b1011110000100111100010010011111110010110110111011001101101 @ Slowbro
- .8byte 0b0001000000000011100000001110000101100100110000011000100000 @ Magnemite
- .8byte 0b0001000000000011100000001110000101100100110100011000100000 @ Magneton
- .8byte 0b0000001100011111101000000010000100010100010000011000100000 @ Farfetch'd
- .8byte 0b0000001000011111101000000010000100000100010000011000100000 @ Doduo
- .8byte 0b0000001000011111111000000010000100000100010100111000100000 @ Dodrio
- .8byte 0b1100010000001111100000000010000100000110110011001001100100 @ Seel
- .8byte 0b1100010000001111100000000010000100000110110111001001100100 @ Dewgong
- .8byte 0b0000000000001111110110111010001101100101110000111000100000 @ Grimer
- .8byte 0b0010100000001111110110111011001101100101110100111000100001 @ Muk
- .8byte 0b1000010000000111100000000010000100000100110011001001100100 @ Shellder
- .8byte 0b1000010000000111110000000010000100000100110111001001100100 @ Cloyster
- .8byte 0b0000000001101111110000100010110100100101110000111000100000 @ Gastly
- .8byte 0b0000000001101111110000100010110100100101110000111000100000 @ Haunter
- .8byte 0b0010100001101111110000100011110101100101110100111000100001 @ Gengar
- .8byte 0b0010100000000111110101000010001110010100010000111000110000 @ Onix
- .8byte 0b0001000001101111110000000111110100000110111000111000101001 @ Drowzee
- .8byte 0b0001000001101111110000000111110100000110111100111000101001 @ Hypno
- .8byte 0b1010110100001111100100000010001100000100110011001001100100 @ Krabby
- .8byte 0b1010110100001111100100000010001100000100110111001001100100 @ Kingler
- .8byte 0b0001000000001011110000001010000101100100111000101000100000 @ Voltorb
- .8byte 0b0001000000001011110000001010000101100100111100101000100000 @ Electrode
- .8byte 0b0001100000101111100000100110010100001101011000011100100000 @ Exeggcute
- .8byte 0b0001100000101111100000100110010100001101011100011100100000 @ Exeggutor
- .8byte 0b0010100000001111101111010011001110010100010011011000100001 @ Cubone
- .8byte 0b0010100000001111101111010011001110010100010111011000100001 @ Marowak
- .8byte 0b0010100000001111100100000011000110000100110000011010100001 @ Hitmonlee
- .8byte 0b0010100000001111100100000011000110000100110000011010100001 @ Hitmonchan
- .8byte 0b0010110100001111100111011011101111111100110111011000100101 @ Lickitung
- .8byte 0b0001000000001111110010111010100101100100110000111000100000 @ Koffing
- .8byte 0b0001000000001111110010111010100101100100110100111000100000 @ Weezing
- .8byte 0b0010100000001111100111011010001111110100110011011000110000 @ Rhyhorn
- .8byte 0b0010110100001111100111011011001111110100110111011000110001 @ Rhydon
- .8byte 0b0011100001100111100111011011110111111110111111011001101101 @ Chansey
- .8byte 0b0011000100001111100000100010000100001101010100011100100000 @ Tangela
- .8byte 0b0010110100001111101111011011101111111100110111011001110101 @ Kangaskhan
- .8byte 0b1100010000000111100000000010000100000100110011001001100100 @ Horsea
- .8byte 0b1100010000000111100000000010000100000100110111001001100100 @ Seadra
- .8byte 0b1100010000000111100000000010000100000100110011001001100100 @ Goldeen
- .8byte 0b1100010000000111100000000010000100000100110111001001100100 @ Seaking
- .8byte 0b1101010000000011100000000110010101100100111011001001100100 @ Staryu
- .8byte 0b1101010000100011100000000110010101100100111111001001100100 @ Starmie
- .8byte 0b0001000001101111110000001111110101101110111100111000101001 @ Mr. mime
- .8byte 0b0010000100011111101000000010000100000100110100011000100000 @ Scyther
- .8byte 0b0001000000101111110000000111110100000100111111101001101101 @ Jynx
- .8byte 0b0011100000001111100000001011010101110100111100001000100001 @ Electabuzz
- .8byte 0b0010100000001111100010010011010100010100010100011000100001 @ Magmar
- .8byte 0b0010100100001111100100000011001110000100110100011010100001 @ Pinsir
- .8byte 0b0010110000000111100111011010000111111100110111011000100100 @ Tauros
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Magikarp
- .8byte 0b1110110000000111110011010010000111100100110111101001110100 @ Gyarados
- .8byte 0b1110110000000111100000001010010101110110110111001001110100 @ Lapras
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Ditto
- .8byte 0b0000000000000111100000000010101100010100110000011000100000 @ Eevee
- .8byte 0b1100010000000111100000000010101100010100110111011001110100 @ Vaporeon
- .8byte 0b0001000000000111100000001010101101110100110100011000110000 @ Jolteon
- .8byte 0b0000000010000111100010010010101100010100110100011000110000 @ Flareon
- .8byte 0b0001000000001011101000001010110101111100110111011000100000 @ Porygon
- .8byte 0b1110010000001111100101000010000100000100110011001001100100 @ Omanyte
- .8byte 0b1110010000001111100101000010000100000100110111001001100100 @ Omastar
- .8byte 0b0110010000001111101101000010001100000101110011001001100100 @ Kabuto
- .8byte 0b1110010100001111101101000011001100000101110111001001100100 @ Kabutops
- .8byte 0b0010101000011111111111010010000110010100110100111000110010 @ Aerodactyl
- .8byte 0b0000110000000111100111011011110111101100110111011000100101 @ Snorlax
- .8byte 0b0010001000010011101001000110000100000100110111011001110100 @ Articuno
- .8byte 0b0011001000010011101001001010000101100100111100011000110000 @ Zapdos
- .8byte 0b0010001010010011101011010010000100000110110100011000110000 @ Moltres
- .8byte 0b0100010000000111100010011010000101110110110111011001100100 @ Dratini
- .8byte 0b0100010000000111100010011010000101110110110111011001100100 @ Dragonair
- .8byte 0b1110111100010111101111011011000111110110110111011001110111 @ Dragonite
- .8byte 0b0011100001100011111111011111110111111110111111111011101101 @ Mewtwo
- .8byte 0b1111111111111111111111111111111111111111111111111111111111 @ Mew
- .8byte 0b0001000100000111100000000110000100011111011000011100100000 @ Chikorita
- .8byte 0b0011100100000111100000000110000100011111011000011100100000 @ Bayleef
- .8byte 0b0011100100000111100000000110000110011111011100011100100000 @ Meganium
- .8byte 0b0000000110000111101010010010001100000100010000011000100000 @ Cyndaquil
- .8byte 0b0010100110000111101010010011001100000100010000011000110001 @ Quilava
- .8byte 0b0010100110000111101010010011001110000100010100011000110001 @ Typhlosion
- .8byte 0b1100010100000111101000000011001100010100110011001001100101 @ Totodile
- .8byte 0b1110110100000111101000000011001100010100110011001001110101 @ Croconaw
- .8byte 0b1110110100000111101000000011001110010100110111001001110111 @ Feraligatr
- .8byte 0b0000010100001111100000011011101100111100110001011000100101 @ Sentret
- .8byte 0b0010110100001111100000011011101101111100110111011000100101 @ Furret
- .8byte 0b0001001000011111101000000110110100000100110000011000100000 @ Hoothoot
- .8byte 0b0001001000011111101000000110110100000100110100011000100000 @ Noctowl
- .8byte 0b0001000000001111101000000111001100001111011000011000100001 @ Ledyba
- .8byte 0b0001000000001111101000000111001100001111011100011000100001 @ Ledian
- .8byte 0b0001000000001111100000100010011100001101010000011000100000 @ Spinarak
- .8byte 0b0001000000001111100000100010011100001101010100011000100000 @ Ariados
- .8byte 0b0000001001011111111000100010100100000101110100111000100000 @ Crobat
- .8byte 0b1101010000000111100000001010000101100100110011001001100100 @ Chinchou
- .8byte 0b1101010000000111100000001010000101100100110111001001100100 @ Lanturn
- .8byte 0b0001000000000111100000001010000101110100111000001000100000 @ Pichu
- .8byte 0b0001000000000111100010011110111100011110111000011000100100 @ Cleffa
- .8byte 0b0001000000000111100010011110111100001110111000011000100100 @ Igglybuff
- .8byte 0b0011000000000111100010011110110100001110111000011000100100 @ Togepi
- .8byte 0b0011001000010111101010011111110100001110111100011000100101 @ Togetic
- .8byte 0b0001000000111111101000000110110100001101111000011000101000 @ Natu
- .8byte 0b0001001000111111101000000110110100001101111100011000101000 @ Xatu
- .8byte 0b0001000000000111100000001010000101110100111000001000100000 @ Mareep
- .8byte 0b0011100000000111100000001011000101110100111000001000100001 @ Flaaffy
- .8byte 0b0011100000000111100000001011000101110100111100001000100001 @ Ampharos
- .8byte 0b0001000100000111100000100010000100001111010100011100100000 @ Bellossom
- .8byte 0b1110110000000111100000000011001100010100110011001001100101 @ Marill
- .8byte 0b1110110000000111100000000011001100010100110111001001100101 @ Azumarill
- .8byte 0b0010100000001111100101000011001110000100010000111000101001 @ Sudowoodo
- .8byte 0b1110110000001111100000000011011110000100110111001001100101 @ Politoed
- .8byte 0b0001000000000111101000000010000100001101010000011100100000 @ Hoppip
- .8byte 0b0001000000000111101000000010000100001101010000011100100000 @ Skiploom
- .8byte 0b0001000000000111101000000010000100001101010100011100100000 @ Jumpluff
- .8byte 0b0010100101001111101000001011101101111100110000111000100101 @ Aipom
- .8byte 0b0001000100000111100000100010000100001111011000011100100000 @ Sunkern
- .8byte 0b0001000100000111100000100010000100001111011100011100100000 @ Sunflora
- .8byte 0b0001000000011111101000000010110100001101010000011000100000 @ Yanma
- .8byte 0b1111010000000111100001100010001110010100110011001001100100 @ Wooper
- .8byte 0b1111110000000111100101100011001110010100110111001001100101 @ Quagsire
- .8byte 0b0001000100100111100000000110111100010100111100011000101000 @ Espeon
- .8byte 0b0001000101000111110000000010111100010100110100111000100000 @ Umbreon
- .8byte 0b0000001001011111111000000010100100000100110000111000101000 @ Murkrow
- .8byte 0b1011110000100111100010010011111110010110110111011001101101 @ Slowking
- .8byte 0b0001000001101111111000001010110101100100110000111000101000 @ Misdreavus
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Unown
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Wobbuffet
- .8byte 0b0011100000101111100000001110110111110100111000011000101000 @ Girafarig
- .8byte 0b0010100000000111100001000110001110001101011000011000100000 @ Pineco
- .8byte 0b0010100000000111100001000110001110001101011100011000100000 @ Forretress
- .8byte 0b0010100000001111100110011010101111111100110011011000101100 @ Dunsparce
- .8byte 0b0010100100011111101101100010001110010100110000011000100000 @ Gligar
- .8byte 0b0010100100000111110101000010001110010100010100111000110000 @ Steelix
- .8byte 0b0010100010001111110010111011101111101100110000111010110101 @ Snubbull
- .8byte 0b0010100010001111110110111011101111111100110100111010110101 @ Granbull
- .8byte 0b1100010000000111100000101010100100000100110011001001100100 @ Qwilfish
- .8byte 0b0010100100011111101001000010000100000100110100011000100000 @ Scizor
- .8byte 0b0011100000000111100101100010001110000110010000011000100000 @ Shuckle
- .8byte 0b0010100100001111100100000011001110000100110100011010100001 @ Heracross
- .8byte 0b0010110101001111111000000011101100010100110011111001101001 @ Sneasel
- .8byte 0b0010100100001111111000000011001110000100110000111010110001 @ Teddiursa
- .8byte 0b0010100100001111111100000011001110000100110100111010110001 @ Ursaring
- .8byte 0b0010000010000111100010010110000100000100011000011000100000 @ Slugma
- .8byte 0b0010100010000111100111010110000110000100011100011000100000 @ Magcargo
- .8byte 0b0010100000000111100101000110001110000100111011001001110000 @ Swinub
- .8byte 0b0010100000000111100101000110001110000100111111001001110000 @ Piloswine
- .8byte 0b0010110000000111100101000110111110000110111011011001101100 @ Corsola
- .8byte 0b1100010000001111100010010010010100000100110111011000100100 @ Remoraid
- .8byte 0b1100010000001111100010110010010100000100110111011100100100 @ Octillery
- .8byte 0b0000001000001111101000000010000100000100110011001001100101 @ Delibird
- .8byte 0b1100010000000111101000000010000110000100110011001001100100 @ Mantine
- .8byte 0b0010001100011111111001000010000100000100010000111000110000 @ Skarmory
- .8byte 0b0010000011001111110010110010100100011100010000111000110000 @ Houndour
- .8byte 0b0010100011001111110010110010100100011100010100111000110000 @ Houndoom
- .8byte 0b1100010000000111100000000010000100000100110111001001100100 @ Kingdra
- .8byte 0b0010100000000111100101000010000110010100010000011000110000 @ Phanpy
- .8byte 0b0010100000000111100101000010000110010100010100011000110000 @ Donphan
- .8byte 0b0001000000001011101000001010110101111100110111011000100000 @ Porygon2
- .8byte 0b0001000000101111100000001110110111111100111000011000111000 @ Stantler
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Smeargle
- .8byte 0b0010100000001111100000000011000110000100110000011010100000 @ Tyrogue
- .8byte 0b0010100000001111100001000011001110000100110000011010100000 @ Hitmontop
- .8byte 0b0001000000101111100000000110110100000100111011001001101100 @ Smoochum
- .8byte 0b0011000000001111100000001011010101100100111000001000100001 @ Elekid
- .8byte 0b0010000000001111100010010011010100010100010000011000100001 @ Magby
- .8byte 0b0010110000000111100101001011100111111100110111011000100101 @ Miltank
- .8byte 0b0011100001100111100111011011110111111110111111011001101101 @ Blissey
- .8byte 0b0011100100000011100001001110001101110100110100011000111000 @ Raikou
- .8byte 0b0011100100000011100011010110001100011100110100011000111000 @ Entei
- .8byte 0b1110010100000011100001000110001100010100110111011001111100 @ Suicune
- .8byte 0b0010000000000111110001000011001110000100110100111000100000 @ Larvitar
- .8byte 0b0010000000000111110001000011001110000100110100111000100000 @ Pupitar
- .8byte 0b0010110100000111111111011011001111110100110111111000110111 @ Tyranitar
- .8byte 0b1110111000110011101001001110110111110111111111011001111100 @ Lugia
- .8byte 0b0011101010010011101011011110110111101111111100011000111000 @ Ho-Oh
- .8byte 0b0001000100100011101001001110110100001111111100011000101100 @ Celebi
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?
- .8byte 0b0011100100000111101100000011001100011111010000011100100001 @ Treecko
- .8byte 0b0011100100000111101100000011001100011111010000011100100001 @ Grovyle
- .8byte 0b0011100100000111101100000011001110011111010100011100110011 @ Sceptile
- .8byte 0b0010100110000111101110010010001100000100010000011000100000 @ Torchic
- .8byte 0b0010100110000111101110010011001100000100010000011010100001 @ Combusken
- .8byte 0b0010100110000111101110010011001110000100010100011010110001 @ Blaziken
- .8byte 0b1110110000000111100100000010001100010100110011001001100100 @ Mudkip
- .8byte 0b1110110000000111100100000010001110010100110011001001100100 @ Marshtomp
- .8byte 0b1110110000000111100100000011001110010100110111001001110101 @ Swampert
- .8byte 0b0010000001001111110000000010101100010100110000111000110000 @ Poochyena
- .8byte 0b0010100001001111110000000010101100010100110100111000110000 @ Mightyena
- .8byte 0b0010010100001111100000001010101101110100110011011000100100 @ Zigzagoon
- .8byte 0b0010110100001111100000001010101101110100110111011000110100 @ Linoone
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Wurmple
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Silcoon
- .8byte 0b0001000000001111101000000010110100001111010100011000100000 @ Beautifly
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Cascoon
- .8byte 0b0001000000001111101000100010110100001101011100011000100000 @ Dustox
- .8byte 0b0001010000001111100000000010000100001101110011011101100100 @ Lotad
- .8byte 0b1111110000001111100000000011000100001101110011011101100100 @ Lombre
- .8byte 0b1111110000001111100000000011000100001101110111011101100101 @ Ludicolo
- .8byte 0b0011000000000111100000000010101100001101010000011100100000 @ Seedot
- .8byte 0b0011100100001111110100000011101100001101010100011100100000 @ Nuzleaf
- .8byte 0b0011100100001111111100000011101100001101010100011100100000 @ Shiftry
- .8byte 0b0001000100000011101001000010101100001101010000011000100000 @ Nincada
- .8byte 0b0001000100001111101001000010101100001101010100011000100000 @ Ninjask
- .8byte 0b0001000100001011101001000010101100001101010100011000100000 @ Shedinja
- .8byte 0b0000001000011111101000000010000100000100110000011000100000 @ Taillow
- .8byte 0b0000001000011111101000000010000100000100110100011000100000 @ Swellow
- .8byte 0b0001000001000111100000100010000100001111010000011100100000 @ Shroomish
- .8byte 0b0011100101000111100000100011000100011111010100011110100001 @ Breloom
- .8byte 0b0011100001101111100100001011111100000110110000011000101101 @ Spinda
- .8byte 0b0000001000011111101000001010000100000100110011001001100100 @ Wingull
- .8byte 0b0000011000011111101000001010000100000100110111001001100100 @ Pelipper
- .8byte 0b0001000000001111100000000010100100001101110011011000100100 @ Surskit
- .8byte 0b0001000000001111101000000010100100001101110111011000100100 @ Masquerain
- .8byte 0b1110110000000111100100000010000110000100110011001001110100 @ Wailmer
- .8byte 0b1110110000000111100100000010000110000100110111001001110100 @ Wailord
- .8byte 0b0001000000000111100000001010101101111110110011011000101100 @ Skitty
- .8byte 0b0011100000000111100000001010101101111110110111011000101100 @ Delcatty
- .8byte 0b0011100101101111101110011011101101111100110011011000100101 @ Kecleon
- .8byte 0b0001000000100011100101000110111110001100111001011000100000 @ Baltoy
- .8byte 0b0011100000100011100101000110111110001100111101011000100000 @ Claydol
- .8byte 0b0010100000000111110101001010000111100100010000111000100000 @ Nosepass
- .8byte 0b0010100010000111100010110010000100010100010000011000100000 @ Torkoal
- .8byte 0b0011000101001111111100001011111100000100110000111000101101 @ Sableye
- .8byte 0b1100010000000111100101000010000110000100110011001001100100 @ Barboach
- .8byte 0b1110110000000111100101000010000110000100110111001001100100 @ Whiscash
- .8byte 0b1100010000000111100000000010000100000110110011001001100100 @ Luvdisc
- .8byte 0b0110110100000111101100100011001100000100110011101001100100 @ Corphish
- .8byte 0b1110110100000111101100100011001100000100110111101001100100 @ Crawdaunt
- .8byte 0b1100010000000111100000000010000100000100110011001001100100 @ Feebas
- .8byte 0b1100010000000111100000000010000100010110110111001001100100 @ Milotic
- .8byte 0b1100010000001111110000000010000100000100110011101001100100 @ Carvanha
- .8byte 0b1110110000001111110100000010000110000100110111101001110100 @ Sharpedo
- .8byte 0b0010100000000111100101000010001110001101010100011000100000 @ Trapinch
- .8byte 0b0010101000010111100101000010001110001101010100011000100000 @ Vibrava
- .8byte 0b0010101000010111100111010010001110011101010100011000100010 @ Flygon
- .8byte 0b0010110000000111100100000011001110000100110000011010100001 @ Makuhita
- .8byte 0b0010110000000111100100000011001110000100110100011010100001 @ Hariyama
- .8byte 0b0001100000001111100000001010000101110100110000001000110000 @ Electrike
- .8byte 0b0001100000001111100000001010000101110100110100001000110000 @ Manectric
- .8byte 0b0010100010000111100111010010001110000100010000011000100000 @ Numel
- .8byte 0b0010100010000111100111010010001110000100010100011000110000 @ Camerupt
- .8byte 0b1110110000000111100100000010000110010100110011001001100100 @ Spheal
- .8byte 0b1110110000000111100100000010000110010100110011001001110100 @ Sealeo
- .8byte 0b1110110000000111100100000010000110010100110111001001110100 @ Walrein
- .8byte 0b0001000100000111100001000010000100001101010000011100100001 @ Cacnea
- .8byte 0b0001100100000111100001000010000100001101010100011100100001 @ Cacturne
- .8byte 0b0001000000000111100000000010100100000110111011001001100100 @ Snorunt
- .8byte 0b0001000000000111110000000010100110000110111111101001100100 @ Glalie
- .8byte 0b0001000000100011100101000110110110000110111101001000101000 @ Lunatone
- .8byte 0b0001000010100011100111010110110110001110011100011000101000 @ Solrock
- .8byte 0b0100010000000111100000000010000100010100110011001001100100 @ Azurill
- .8byte 0b0001000001101111110000001110110100010100111000111000101000 @ Spoink
- .8byte 0b0001000001101111110000001110110100010100111100111000101001 @ Grumpig
- .8byte 0b0001000000000111100000001010000101110100111000001000100000 @ Plusle
- .8byte 0b0001000000000111100000001010000101110100111000001000100000 @ Minun
- .8byte 0b0010100000000111110111110011000100001100110101111000100001 @ Mawile
- .8byte 0b0011100000000111100100000111110100000100111000011010101001 @ Meditite
- .8byte 0b0011100000000111100100000111110100000100111100011010101001 @ Medicham
- .8byte 0b0000001000011111101000000010000100001110110001011000100000 @ Swablu
- .8byte 0b0010001000011111101010010010000110011110110101011000110010 @ Altaria
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Wynaut
- .8byte 0b0001000001101111110000000010110100000100110011111000101000 @ Duskull
- .8byte 0b0011100001101111110100000010110110000100110111111000101001 @ Dusclops
- .8byte 0b0001000100000111100000100010100100001101010000011100100000 @ Roselia
- .8byte 0b0010100100000111101010011011100101101100110011011010100101 @ Slakoth
- .8byte 0b0010100100000111101010011011100111101100110011111010110101 @ Vigoroth
- .8byte 0b0010100100000111101010011011100111101100110111111010110101 @ Slaking
- .8byte 0b0010100001000111100000101010100100001101110001011100100100 @ Gulpin
- .8byte 0b0010100001000111100000101010100100001101110101011100100100 @ Swalot
- .8byte 0b0011101100010111101000000010000110001111010100011100110000 @ Tropius
- .8byte 0b0000000000000111100010011010100100001100110011011000110100 @ Whismur
- .8byte 0b0010100010000111110010011011100110001100110011111000110100 @ Loudred
- .8byte 0b0010100010000111110010011011100110001100110111111000110100 @ Exploud
- .8byte 0b1100010000000111100000000010000100000100110011001001100100 @ Clamperl
- .8byte 0b1100010001000111100100000010000100000100110111001001100100 @ Huntail
- .8byte 0b1100010000000111100000000010110100000110110111001001100100 @ Gorebyss
- .8byte 0b0011100101001111111011011010100101110100110111111001101100 @ Absol
- .8byte 0b0001000001101111110000001010110101100100110000111000101000 @ Shuppet
- .8byte 0b0001000001101111110000001010110101100100110100111000101000 @ Banette
- .8byte 0b0010100001001111100000110010001110010101110000111000100000 @ Seviper
- .8byte 0b0010100000001111101010011011101101111101110011111000110101 @ Zangoose
- .8byte 0b1110010000000111100101000010000110000110110111001001101100 @ Relicanth
- .8byte 0b0010100100000111101101001010001110010100110000011000110100 @ Aron
- .8byte 0b0010100100000111101101001010001110010100110000011000110100 @ Lairon
- .8byte 0b0010110100000111101111011011001111111100110111111000110111 @ Aggron
- .8byte 0b0001000000001111100011011010100101101100110011011001100100 @ Castform
- .8byte 0b0001000000001111101000001011100101101101111000011000100101 @ Volbeat
- .8byte 0b0001000000001111101000001011100101101101111000011000100101 @ Illumise
- .8byte 0b0000000000000111100001100010000100001101010000011100100000 @ Lileep
- .8byte 0b0010100000000111100101100010000110001101010100011100100000 @ Cradily
- .8byte 0b0010000100000111101101000011001100000100010000011000100100 @ Anorith
- .8byte 0b0010100100000111101101000011001110010100010100011000100100 @ Armaldo
- .8byte 0b0001000001101111110000001110110100100110111000111000101000 @ Ralts
- .8byte 0b0001000001101111110000001110110100100110111000111000101000 @ Kirlia
- .8byte 0b0001000001101111110000001110110100100110111100111000101000 @ Gardevoir
- .8byte 0b0010100100000111101110010011000100000100110000011000110010 @ Bagon
- .8byte 0b0010100100000111101110010011000100000100110000011000110010 @ Shelgon
- .8byte 0b0010101100010111101110010011000110010100110100011000110010 @ Salamence
- .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Beldum
- .8byte 0b0011100100000011101101100111110110000100111100011000100000 @ Metang
- .8byte 0b0011100100000011101101100111110110000100111100011000100000 @ Metagross
- .8byte 0b0010100000000011100101001011001111100110010100011000100001 @ Regirock
- .8byte 0b0010100000000011100000001011000111100110110111001001100001 @ Regice
- .8byte 0b0010100000000011101101001011000111100110110100011000100001 @ Registeel
- .8byte 0b1110110000000011100100001011000111100110110111001001111100 @ Kyogre
- .8byte 0b0010100110000011101111011011001111111110010100011010110010 @ Groudon
- .8byte 0b1110111010000011101011011011000111111100110111011010110110 @ Rayquaza
- .8byte 0b1101011100010111101001001110110111101110111101011000111110 @ Latias
- .8byte 0b1101011100010111101001001110110111101110111101011000111110 @ Latios
- .8byte 0b0001000000100011101001001110110101100110111100011000101100 @ Jirachi
- .8byte 0b0011100101100011111100001111110101101110111101111000101101 @ Deoxys
- .8byte 0b0001000001100111110000001110110100000110111000111000101000 @ Chimecho
diff --git a/data/trainer_class_name_indices.inc b/data/trainer_class_name_indices.inc
deleted file mode 100644
index 4335bafe0..000000000
--- a/data/trainer_class_name_indices.inc
+++ /dev/null
@@ -1,83 +0,0 @@
-gTrainerClassToNameIndex:: @ 831F5CA
- .byte TRAINER_CLASS_NAME_HIKER
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
- .byte TRAINER_CLASS_NAME_COLLECTOR
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
- .byte TRAINER_CLASS_NAME_SWIMMER_M
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
- .byte TRAINER_CLASS_NAME_EXPERT
- .byte TRAINER_CLASS_NAME_BLACK_BELT
- .byte TRAINER_CLASS_NAME_AQUA_LEADER
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
- .byte TRAINER_CLASS_NAME_AROMA_LADY
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
- .byte TRAINER_CLASS_NAME_INTERVIEWER
- .byte TRAINER_CLASS_NAME_TUBER_1
- .byte TRAINER_CLASS_NAME_TUBER_2
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
- .byte TRAINER_CLASS_NAME_LADY
- .byte TRAINER_CLASS_NAME_BEAUTY
- .byte TRAINER_CLASS_NAME_RICH_BOY
- .byte TRAINER_CLASS_NAME_EXPERT
- .byte TRAINER_CLASS_NAME_POKEMANIAC
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
- .byte TRAINER_CLASS_NAME_GUITARIST
- .byte TRAINER_CLASS_NAME_KINDLER
- .byte TRAINER_CLASS_NAME_CAMPER
- .byte TRAINER_CLASS_NAME_PICNICKER
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
- .byte TRAINER_CLASS_NAME_PSYCHIC
- .byte TRAINER_CLASS_NAME_PSYCHIC
- .byte TRAINER_CLASS_NAME_GENTLEMAN
- .byte TRAINER_CLASS_NAME_ELITE_FOUR
- .byte TRAINER_CLASS_NAME_ELITE_FOUR
- .byte TRAINER_CLASS_NAME_LEADER
- .byte TRAINER_CLASS_NAME_LEADER
- .byte TRAINER_CLASS_NAME_LEADER
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
- .byte TRAINER_CLASS_NAME_SR_AND_JR
- .byte TRAINER_CLASS_NAME_POKEFAN
- .byte TRAINER_CLASS_NAME_POKEFAN
- .byte TRAINER_CLASS_NAME_YOUNGSTER
- .byte TRAINER_CLASS_NAME_CHAMPION
- .byte TRAINER_CLASS_NAME_FISHERMAN
- .byte TRAINER_CLASS_NAME_TRIATHLETE
- .byte TRAINER_CLASS_NAME_TRIATHLETE
- .byte TRAINER_CLASS_NAME_TRIATHLETE
- .byte TRAINER_CLASS_NAME_TRIATHLETE
- .byte TRAINER_CLASS_NAME_TRIATHLETE
- .byte TRAINER_CLASS_NAME_TRIATHLETE
- .byte TRAINER_CLASS_NAME_DRAGON_TAMER
- .byte TRAINER_CLASS_NAME_NINJA_BOY
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
- .byte TRAINER_CLASS_NAME_SWIMMER_F
- .byte TRAINER_CLASS_NAME_TWINS
- .byte TRAINER_CLASS_NAME_SAILOR
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
- .byte TRAINER_CLASS_NAME_MAGMA_LEADER
- .byte TRAINER_CLASS_NAME_LASS
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
- .byte TRAINER_CLASS_NAME_OLD_COUPLE
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_SALON_MAIDEN
- .byte TRAINER_CLASS_NAME_DOME_ACE
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_4
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_4
diff --git a/data/trainer_money.inc b/data/trainer_money.inc
index 00aaa6cfb..5b8032d95 100644
--- a/data/trainer_money.inc
+++ b/data/trainer_money.inc
@@ -1,59 +1,59 @@
@ This is a factor in how much money you get for beating a trainer.
.align 2
gTrainerMoneyTable:: @ 831AEB8
- .byte TRAINER_CLASS_NAME_TEAM_AQUA, 5, 0, 0
- .byte TRAINER_CLASS_NAME_AQUA_ADMIN, 10, 0, 0
- .byte TRAINER_CLASS_NAME_AQUA_LEADER, 20, 0, 0
- .byte TRAINER_CLASS_NAME_AROMA_LADY, 10, 0, 0
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC, 15, 0, 0
- .byte TRAINER_CLASS_NAME_INTERVIEWER, 12, 0, 0
- .byte TRAINER_CLASS_NAME_TUBER_1, 1, 0, 0
- .byte TRAINER_CLASS_NAME_TUBER_2, 1, 0, 0
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO, 3, 0, 0
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1, 12, 0, 0
- .byte TRAINER_CLASS_NAME_HEX_MANIAC, 6, 0, 0
- .byte TRAINER_CLASS_NAME_LADY, 50, 0, 0
- .byte TRAINER_CLASS_NAME_BEAUTY, 20, 0, 0
- .byte TRAINER_CLASS_NAME_RICH_BOY, 50, 0, 0
- .byte TRAINER_CLASS_NAME_POKEMANIAC, 15, 0, 0
- .byte TRAINER_CLASS_NAME_SWIMMER_M, 2, 0, 0
- .byte TRAINER_CLASS_NAME_BLACK_BELT, 8, 0, 0
- .byte TRAINER_CLASS_NAME_GUITARIST, 8, 0, 0
- .byte TRAINER_CLASS_NAME_KINDLER, 8, 0, 0
- .byte TRAINER_CLASS_NAME_CAMPER, 4, 0, 0
- .byte TRAINER_CLASS_NAME_OLD_COUPLE, 10, 0, 0
- .byte TRAINER_CLASS_NAME_BUG_MANIAC, 15, 0, 0
- .byte TRAINER_CLASS_NAME_PSYCHIC, 6, 0, 0
- .byte TRAINER_CLASS_NAME_GENTLEMAN, 20, 0, 0
- .byte TRAINER_CLASS_NAME_ELITE_FOUR, 25, 0, 0
- .byte TRAINER_CLASS_NAME_LEADER, 25, 0, 0
- .byte TRAINER_CLASS_NAME_SCHOOL_KID, 5, 0, 0
- .byte TRAINER_CLASS_NAME_SR_AND_JR, 4, 0, 0
- .byte TRAINER_CLASS_NAME_POKEFAN, 20, 0, 0
- .byte TRAINER_CLASS_NAME_EXPERT, 10, 0, 0
- .byte TRAINER_CLASS_NAME_YOUNGSTER, 4, 0, 0
- .byte TRAINER_CLASS_NAME_CHAMPION, 50, 0, 0
- .byte TRAINER_CLASS_NAME_FISHERMAN, 10, 0, 0
- .byte TRAINER_CLASS_NAME_TRIATHLETE, 10, 0, 0
- .byte TRAINER_CLASS_NAME_DRAGON_TAMER, 12, 0, 0
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER, 8, 0, 0
- .byte TRAINER_CLASS_NAME_NINJA_BOY, 3, 0, 0
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL, 6, 0, 0
- .byte TRAINER_CLASS_NAME_PARASOL_LADY, 10, 0, 0
- .byte TRAINER_CLASS_NAME_SWIMMER_F, 2, 0, 0
- .byte TRAINER_CLASS_NAME_PICNICKER, 4, 0, 0
- .byte TRAINER_CLASS_NAME_TWINS, 3, 0, 0
- .byte TRAINER_CLASS_NAME_SAILOR, 8, 0, 0
- .byte TRAINER_CLASS_NAME_COLLECTOR, 15, 0, 0
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3, 15, 0, 0
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER, 10, 0, 0
- .byte TRAINER_CLASS_NAME_PKMN_RANGER, 12, 0, 0
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA, 5, 0, 0
- .byte TRAINER_CLASS_NAME_MAGMA_ADMIN, 10, 0, 0
- .byte TRAINER_CLASS_NAME_MAGMA_LEADER, 20, 0, 0
- .byte TRAINER_CLASS_NAME_LASS, 4, 0, 0
- .byte TRAINER_CLASS_NAME_BUG_CATCHER, 4, 0, 0
- .byte TRAINER_CLASS_NAME_HIKER, 10, 0, 0
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE, 8, 0, 0
- .byte TRAINER_CLASS_LEADER_1, 10, 0, 0
+ .byte TRAINER_CLASS_TEAM_AQUA, 5, 0, 0
+ .byte TRAINER_CLASS_AQUA_ADMIN, 10, 0, 0
+ .byte TRAINER_CLASS_AQUA_LEADER, 20, 0, 0
+ .byte TRAINER_CLASS_AROMA_LADY, 10, 0, 0
+ .byte TRAINER_CLASS_RUIN_MANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_INTERVIEWER, 12, 0, 0
+ .byte TRAINER_CLASS_TUBER_1, 1, 0, 0
+ .byte TRAINER_CLASS_TUBER_2, 1, 0, 0
+ .byte TRAINER_CLASS_SIS_AND_BRO, 3, 0, 0
+ .byte TRAINER_CLASS_COOLTRAINER_1, 12, 0, 0
+ .byte TRAINER_CLASS_HEX_MANIAC, 6, 0, 0
+ .byte TRAINER_CLASS_LADY, 50, 0, 0
+ .byte TRAINER_CLASS_BEAUTY, 20, 0, 0
+ .byte TRAINER_CLASS_RICH_BOY, 50, 0, 0
+ .byte TRAINER_CLASS_POKEMANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_SWIMMER_M, 2, 0, 0
+ .byte TRAINER_CLASS_BLACK_BELT, 8, 0, 0
+ .byte TRAINER_CLASS_GUITARIST, 8, 0, 0
+ .byte TRAINER_CLASS_KINDLER, 8, 0, 0
+ .byte TRAINER_CLASS_CAMPER, 4, 0, 0
+ .byte TRAINER_CLASS_OLD_COUPLE, 10, 0, 0
+ .byte TRAINER_CLASS_BUG_MANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_PSYCHIC, 6, 0, 0
+ .byte TRAINER_CLASS_GENTLEMAN, 20, 0, 0
+ .byte TRAINER_CLASS_ELITE_FOUR, 25, 0, 0
+ .byte TRAINER_CLASS_LEADER, 25, 0, 0
+ .byte TRAINER_CLASS_SCHOOL_KID, 5, 0, 0
+ .byte TRAINER_CLASS_SR_AND_JR, 4, 0, 0
+ .byte TRAINER_CLASS_POKEFAN, 20, 0, 0
+ .byte TRAINER_CLASS_EXPERT, 10, 0, 0
+ .byte TRAINER_CLASS_YOUNGSTER, 4, 0, 0
+ .byte TRAINER_CLASS_CHAMPION, 50, 0, 0
+ .byte TRAINER_CLASS_FISHERMAN, 10, 0, 0
+ .byte TRAINER_CLASS_TRIATHLETE, 10, 0, 0
+ .byte TRAINER_CLASS_DRAGON_TAMER, 12, 0, 0
+ .byte TRAINER_CLASS_BIRD_KEEPER, 8, 0, 0
+ .byte TRAINER_CLASS_NINJA_BOY, 3, 0, 0
+ .byte TRAINER_CLASS_BATTLE_GIRL, 6, 0, 0
+ .byte TRAINER_CLASS_PARASOL_LADY, 10, 0, 0
+ .byte TRAINER_CLASS_SWIMMER_F, 2, 0, 0
+ .byte TRAINER_CLASS_PICNICKER, 4, 0, 0
+ .byte TRAINER_CLASS_TWINS, 3, 0, 0
+ .byte TRAINER_CLASS_SAILOR, 8, 0, 0
+ .byte TRAINER_CLASS_COLLECTOR, 15, 0, 0
+ .byte TRAINER_CLASS_PKMN_TRAINER_3, 15, 0, 0
+ .byte TRAINER_CLASS_PKMN_BREEDER, 10, 0, 0
+ .byte TRAINER_CLASS_PKMN_RANGER, 12, 0, 0
+ .byte TRAINER_CLASS_TEAM_MAGMA, 5, 0, 0
+ .byte TRAINER_CLASS_MAGMA_ADMIN, 10, 0, 0
+ .byte TRAINER_CLASS_MAGMA_LEADER, 20, 0, 0
+ .byte TRAINER_CLASS_LASS, 4, 0, 0
+ .byte TRAINER_CLASS_BUG_CATCHER, 4, 0, 0
+ .byte TRAINER_CLASS_HIKER, 10, 0, 0
+ .byte TRAINER_CLASS_YOUNG_COUPLE, 8, 0, 0
+ .byte TRAINER_CLASS_WINSTRATE, 10, 0, 0
.byte -1, 5, 0, 0
diff --git a/data/trainer_pic_indices.inc b/data/trainer_pic_indices.inc
deleted file mode 100644
index 22fb9aaa2..000000000
--- a/data/trainer_pic_indices.inc
+++ /dev/null
@@ -1,84 +0,0 @@
- .align 2
-gUnknown_0831F578:: @ 831F578
- .byte TRAINER_PIC_HIKER
- .byte TRAINER_PIC_AQUA_GRUNT_M
- .byte TRAINER_PIC_POKEMON_BREEDER_F
- .byte TRAINER_PIC_COOL_TRAINER_M
- .byte TRAINER_PIC_BIRD_KEEPER
- .byte TRAINER_PIC_COLLECTOR
- .byte TRAINER_PIC_AQUA_GRUNT_F
- .byte TRAINER_PIC_SWIMMER_M
- .byte TRAINER_PIC_MAGMA_GRUNT_M
- .byte TRAINER_PIC_EXPERT_M
- .byte TRAINER_PIC_BLACK_BELT
- .byte TRAINER_PIC_AQUA_LEADER_ARCHIE
- .byte TRAINER_PIC_HEX_MANIAC
- .byte TRAINER_PIC_AROMA_LADY
- .byte TRAINER_PIC_RUIN_MANIAC
- .byte TRAINER_PIC_INTERVIEWER
- .byte TRAINER_PIC_TUBER_F
- .byte TRAINER_PIC_TUBER_M
- .byte TRAINER_PIC_COOL_TRAINER_F
- .byte TRAINER_PIC_LADY
- .byte TRAINER_PIC_BEAUTY
- .byte TRAINER_PIC_RICH_BOY
- .byte TRAINER_PIC_EXPERT_F
- .byte TRAINER_PIC_POKEMANIAC
- .byte TRAINER_PIC_MAGMA_GRUNT_F
- .byte TRAINER_PIC_GUITARIST
- .byte TRAINER_PIC_KINDLER
- .byte TRAINER_PIC_CAMPER
- .byte TRAINER_PIC_PICNICKER
- .byte TRAINER_PIC_BUG_MANIAC
- .byte TRAINER_PIC_PSYCHIC_M
- .byte TRAINER_PIC_PSYCHIC_F
- .byte TRAINER_PIC_GENTLEMAN
- .byte TRAINER_PIC_ELITE_FOUR_SIDNEY
- .byte TRAINER_PIC_ELITE_FOUR_PHOEBE
- .byte TRAINER_PIC_LEADER_ROXANNE
- .byte TRAINER_PIC_LEADER_BRAWLY
- .byte TRAINER_PIC_LEADER_TATE_AND_LIZA
- .byte TRAINER_PIC_SCHOOL_KID_M
- .byte TRAINER_PIC_SCHOOL_KID_F
- .byte TRAINER_PIC_SR_AND_JR
- .byte TRAINER_PIC_WINSTRATE_M
- .byte TRAINER_PIC_WINSTRATE_F
- .byte TRAINER_PIC_YOUNGSTER
- .byte TRAINER_PIC_CHAMPION_WALLACE
- .byte TRAINER_PIC_FISHERMAN
- .byte TRAINER_PIC_CYCLING_TRIATHLETE_M
- .byte TRAINER_PIC_CYCLING_TRIATHLETE_F
- .byte TRAINER_PIC_RUNNING_TRIATHLETE_M
- .byte TRAINER_PIC_RUNNING_TRIATHLETE_F
- .byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
- .byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
- .byte TRAINER_PIC_DRAGON_TAMER
- .byte TRAINER_PIC_NINJA_BOY
- .byte TRAINER_PIC_BATTLE_GIRL
- .byte TRAINER_PIC_PARASOL_LADY
- .byte TRAINER_PIC_SWIMMER_F
- .byte TRAINER_PIC_TWINS
- .byte TRAINER_PIC_SAILOR
- .byte TRAINER_PIC_WALLY
- .byte TRAINER_PIC_BRENDAN
- .byte TRAINER_PIC_BRENDAN
- .byte TRAINER_PIC_BRENDAN
- .byte TRAINER_PIC_MAY
- .byte TRAINER_PIC_MAY
- .byte TRAINER_PIC_MAY
- .byte TRAINER_PIC_POKEMON_BREEDER_M
- .byte TRAINER_PIC_BUG_CATCHER
- .byte TRAINER_PIC_POKEMON_RANGER_M
- .byte TRAINER_PIC_POKEMON_RANGER_F
- .byte TRAINER_PIC_MAGMA_LEADER_MAXIE
- .byte TRAINER_PIC_LASS
- .byte TRAINER_PIC_YOUNG_COUPLE
- .byte TRAINER_PIC_OLD_COUPLE
- .byte TRAINER_PIC_SIS_AND_BRO
- .byte TRAINER_PIC_STEVEN
- .byte TRAINER_PIC_SALON_MAIDEN_ANABEL
- .byte TRAINER_PIC_DOME_ACE_TUCKER
- .byte TRAINER_PIC_RED
- .byte TRAINER_PIC_LEAF
- .byte TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN
- .byte TRAINER_PIC_RUBY_SAPPHIRE_MAY
diff --git a/data/trainers.inc b/data/trainers.inc
index f3fd0674f..b401c2a77 100644
--- a/data/trainers.inc
+++ b/data/trainers.inc
@@ -2,7 +2,7 @@
gTrainers:: @ 8310030
@ NONE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_1
+ .byte TRAINER_CLASS_PKMN_TRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "$", 12
@@ -14,7 +14,7 @@ gTrainers:: @ 8310030
@ SAWYER_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "SAWYER$", 12
@@ -26,7 +26,7 @@ gTrainers:: @ 8310030
@ GRUNT_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -38,7 +38,7 @@ gTrainers:: @ 8310030
@ GRUNT_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -50,7 +50,7 @@ gTrainers:: @ 8310030
@ GRUNT_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -62,7 +62,7 @@ gTrainers:: @ 8310030
@ GRUNT_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -74,7 +74,7 @@ gTrainers:: @ 8310030
@ GRUNT_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -86,7 +86,7 @@ gTrainers:: @ 8310030
@ GRUNT_6
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -98,7 +98,7 @@ gTrainers:: @ 8310030
@ GRUNT_7
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -110,7 +110,7 @@ gTrainers:: @ 8310030
@ GABRIELLE_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "GABRIELLE$", 12
@@ -122,7 +122,7 @@ gTrainers:: @ 8310030
@ GRUNT_8
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -134,7 +134,7 @@ gTrainers:: @ 8310030
@ MARCEL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "MARCEL$", 12
@@ -146,7 +146,7 @@ gTrainers:: @ 8310030
@ ALBERTO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "ALBERTO$", 12
@@ -158,7 +158,7 @@ gTrainers:: @ 8310030
@ ED
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COLLECTOR
+ .byte TRAINER_CLASS_COLLECTOR
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_COLLECTOR
.string "ED$", 12
@@ -170,7 +170,7 @@ gTrainers:: @ 8310030
@ GRUNT_9
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_F
.string "GRUNT$", 12
@@ -182,7 +182,7 @@ gTrainers:: @ 8310030
@ DECLAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "DECLAN$", 12
@@ -194,7 +194,7 @@ gTrainers:: @ 8310030
@ GRUNT_10
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -206,7 +206,7 @@ gTrainers:: @ 8310030
@ GRUNT_11
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -218,7 +218,7 @@ gTrainers:: @ 8310030
@ GRUNT_12
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -230,7 +230,7 @@ gTrainers:: @ 8310030
@ GRUNT_13
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -242,7 +242,7 @@ gTrainers:: @ 8310030
@ GRUNT_14
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -254,7 +254,7 @@ gTrainers:: @ 8310030
@ GRUNT_15
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -266,7 +266,7 @@ gTrainers:: @ 8310030
@ GRUNT_16
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -278,7 +278,7 @@ gTrainers:: @ 8310030
@ GRUNT_17
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -290,7 +290,7 @@ gTrainers:: @ 8310030
@ GRUNT_18
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -302,7 +302,7 @@ gTrainers:: @ 8310030
@ GRUNT_19
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -314,7 +314,7 @@ gTrainers:: @ 8310030
@ GRUNT_20
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_F
.string "GRUNT$", 12
@@ -326,7 +326,7 @@ gTrainers:: @ 8310030
@ GRUNT_21
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_F
.string "GRUNT$", 12
@@ -338,7 +338,7 @@ gTrainers:: @ 8310030
@ GRUNT_22
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_F
.string "GRUNT$", 12
@@ -350,7 +350,7 @@ gTrainers:: @ 8310030
@ FREDRICK
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "FREDRICK$", 12
@@ -362,7 +362,7 @@ gTrainers:: @ 8310030
@ MATT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AQUA_ADMIN
+ .byte TRAINER_CLASS_AQUA_ADMIN
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_ADMIN_M
.string "MATT$", 12
@@ -374,7 +374,7 @@ gTrainers:: @ 8310030
@ ZANDER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "ZANDER$", 12
@@ -386,7 +386,7 @@ gTrainers:: @ 8310030
@ SHELLY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AQUA_ADMIN
+ .byte TRAINER_CLASS_AQUA_ADMIN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_ADMIN_F
.string "SHELLY$", 12
@@ -398,7 +398,7 @@ gTrainers:: @ 8310030
@ SHELLY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AQUA_ADMIN
+ .byte TRAINER_CLASS_AQUA_ADMIN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_ADMIN_F
.string "SHELLY$", 12
@@ -410,7 +410,7 @@ gTrainers:: @ 8310030
@ ARCHIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AQUA_LEADER
+ .byte TRAINER_CLASS_AQUA_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_LEADER_ARCHIE
.string "ARCHIE$", 12
@@ -422,7 +422,7 @@ gTrainers:: @ 8310030
@ LEAH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "LEAH$", 12
@@ -434,7 +434,7 @@ gTrainers:: @ 8310030
@ DAISY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "DAISY$", 12
@@ -446,7 +446,7 @@ gTrainers:: @ 8310030
@ ROSE_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "ROSE$", 12
@@ -458,7 +458,7 @@ gTrainers:: @ 8310030
@ FELIX
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "FELIX$", 12
@@ -470,7 +470,7 @@ gTrainers:: @ 8310030
@ VIOLET
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "VIOLET$", 12
@@ -482,7 +482,7 @@ gTrainers:: @ 8310030
@ ROSE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "ROSE$", 12
@@ -494,7 +494,7 @@ gTrainers:: @ 8310030
@ ROSE_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "ROSE$", 12
@@ -506,7 +506,7 @@ gTrainers:: @ 8310030
@ ROSE_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "ROSE$", 12
@@ -518,7 +518,7 @@ gTrainers:: @ 8310030
@ ROSE_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "ROSE$", 12
@@ -530,7 +530,7 @@ gTrainers:: @ 8310030
@ DUSTY_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "DUSTY$", 12
@@ -542,7 +542,7 @@ gTrainers:: @ 8310030
@ CHIP
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "CHIP$", 12
@@ -554,7 +554,7 @@ gTrainers:: @ 8310030
@ FOSTER
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "FOSTER$", 12
@@ -566,7 +566,7 @@ gTrainers:: @ 8310030
@ DUSTY_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "DUSTY$", 12
@@ -578,7 +578,7 @@ gTrainers:: @ 8310030
@ DUSTY_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "DUSTY$", 12
@@ -590,7 +590,7 @@ gTrainers:: @ 8310030
@ DUSTY_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "DUSTY$", 12
@@ -602,7 +602,7 @@ gTrainers:: @ 8310030
@ DUSTY_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "DUSTY$", 12
@@ -614,7 +614,7 @@ gTrainers:: @ 8310030
@ GABBY_AND_TY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_INTERVIEWER
+ .byte TRAINER_CLASS_INTERVIEWER
.byte TRAINER_ENCOUNTER_MUSIC_INTERVIEWER @ gender flag and encounter music
.byte TRAINER_PIC_INTERVIEWER
.string "GABBY & TY$", 12
@@ -626,7 +626,7 @@ gTrainers:: @ 8310030
@ GABBY_AND_TY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_INTERVIEWER
+ .byte TRAINER_CLASS_INTERVIEWER
.byte TRAINER_ENCOUNTER_MUSIC_INTERVIEWER @ gender flag and encounter music
.byte TRAINER_PIC_INTERVIEWER
.string "GABBY & TY$", 12
@@ -638,7 +638,7 @@ gTrainers:: @ 8310030
@ GABBY_AND_TY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_INTERVIEWER
+ .byte TRAINER_CLASS_INTERVIEWER
.byte TRAINER_ENCOUNTER_MUSIC_INTERVIEWER @ gender flag and encounter music
.byte TRAINER_PIC_INTERVIEWER
.string "GABBY & TY$", 12
@@ -650,7 +650,7 @@ gTrainers:: @ 8310030
@ GABBY_AND_TY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_INTERVIEWER
+ .byte TRAINER_CLASS_INTERVIEWER
.byte TRAINER_ENCOUNTER_MUSIC_INTERVIEWER @ gender flag and encounter music
.byte TRAINER_PIC_INTERVIEWER
.string "GABBY & TY$", 12
@@ -662,7 +662,7 @@ gTrainers:: @ 8310030
@ GABBY_AND_TY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_INTERVIEWER
+ .byte TRAINER_CLASS_INTERVIEWER
.byte TRAINER_ENCOUNTER_MUSIC_INTERVIEWER @ gender flag and encounter music
.byte TRAINER_PIC_INTERVIEWER
.string "GABBY & TY$", 12
@@ -674,7 +674,7 @@ gTrainers:: @ 8310030
@ GABBY_AND_TY_6
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_INTERVIEWER
+ .byte TRAINER_CLASS_INTERVIEWER
.byte TRAINER_ENCOUNTER_MUSIC_INTERVIEWER @ gender flag and encounter music
.byte TRAINER_PIC_INTERVIEWER
.string "GABBY & TY$", 12
@@ -686,7 +686,7 @@ gTrainers:: @ 8310030
@ LOLA_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "LOLA$", 12
@@ -698,7 +698,7 @@ gTrainers:: @ 8310030
@ AUSTINA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "AUSTINA$", 12
@@ -710,7 +710,7 @@ gTrainers:: @ 8310030
@ GWEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "GWEN$", 12
@@ -722,7 +722,7 @@ gTrainers:: @ 8310030
@ LOLA_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "LOLA$", 12
@@ -734,7 +734,7 @@ gTrainers:: @ 8310030
@ LOLA_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "LOLA$", 12
@@ -746,7 +746,7 @@ gTrainers:: @ 8310030
@ LOLA_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "LOLA$", 12
@@ -758,7 +758,7 @@ gTrainers:: @ 8310030
@ LOLA_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "LOLA$", 12
@@ -770,7 +770,7 @@ gTrainers:: @ 8310030
@ RICKY_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_2
+ .byte TRAINER_CLASS_TUBER_2
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_M
.string "RICKY$", 12
@@ -782,7 +782,7 @@ gTrainers:: @ 8310030
@ SIMON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_2
+ .byte TRAINER_CLASS_TUBER_2
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_M
.string "SIMON$", 12
@@ -794,7 +794,7 @@ gTrainers:: @ 8310030
@ CHARLIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_2
+ .byte TRAINER_CLASS_TUBER_2
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_M
.string "CHARLIE$", 12
@@ -806,7 +806,7 @@ gTrainers:: @ 8310030
@ RICKY_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_2
+ .byte TRAINER_CLASS_TUBER_2
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_M
.string "RICKY$", 12
@@ -818,7 +818,7 @@ gTrainers:: @ 8310030
@ RICKY_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_2
+ .byte TRAINER_CLASS_TUBER_2
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_M
.string "RICKY$", 12
@@ -830,7 +830,7 @@ gTrainers:: @ 8310030
@ RICKY_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_2
+ .byte TRAINER_CLASS_TUBER_2
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_M
.string "RICKY$", 12
@@ -842,7 +842,7 @@ gTrainers:: @ 8310030
@ RICKY_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_2
+ .byte TRAINER_CLASS_TUBER_2
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_M
.string "RICKY$", 12
@@ -854,7 +854,7 @@ gTrainers:: @ 8310030
@ RANDALL
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "RANDALL$", 12
@@ -866,7 +866,7 @@ gTrainers:: @ 8310030
@ PARKER
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "PARKER$", 12
@@ -878,7 +878,7 @@ gTrainers:: @ 8310030
@ GEORGE
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "GEORGE$", 12
@@ -890,7 +890,7 @@ gTrainers:: @ 8310030
@ BERKE
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "BERKE$", 12
@@ -902,7 +902,7 @@ gTrainers:: @ 8310030
@ BRAXTON
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "BRAXTON$", 12
@@ -914,7 +914,7 @@ gTrainers:: @ 8310030
@ VINCENT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "VINCENT$", 12
@@ -926,7 +926,7 @@ gTrainers:: @ 8310030
@ LEROY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "LEROY$", 12
@@ -938,7 +938,7 @@ gTrainers:: @ 8310030
@ WILTON_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "WILTON$", 12
@@ -950,7 +950,7 @@ gTrainers:: @ 8310030
@ EDGAR
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "EDGAR$", 12
@@ -962,7 +962,7 @@ gTrainers:: @ 8310030
@ ALBERT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "ALBERT$", 12
@@ -974,7 +974,7 @@ gTrainers:: @ 8310030
@ SAMUEL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "SAMUEL$", 12
@@ -986,7 +986,7 @@ gTrainers:: @ 8310030
@ VITO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "VITO$", 12
@@ -998,7 +998,7 @@ gTrainers:: @ 8310030
@ OWEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "OWEN$", 12
@@ -1010,7 +1010,7 @@ gTrainers:: @ 8310030
@ WILTON_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "WILTON$", 12
@@ -1022,7 +1022,7 @@ gTrainers:: @ 8310030
@ WILTON_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "WILTON$", 12
@@ -1034,7 +1034,7 @@ gTrainers:: @ 8310030
@ WILTON_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "WILTON$", 12
@@ -1046,7 +1046,7 @@ gTrainers:: @ 8310030
@ WILTON_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "WILTON$", 12
@@ -1058,7 +1058,7 @@ gTrainers:: @ 8310030
@ WARREN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "WARREN$", 12
@@ -1070,7 +1070,7 @@ gTrainers:: @ 8310030
@ MARY
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "MARY$", 12
@@ -1082,7 +1082,7 @@ gTrainers:: @ 8310030
@ ALEXIA
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "ALEXIA$", 12
@@ -1094,7 +1094,7 @@ gTrainers:: @ 8310030
@ JODY
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "JODY$", 12
@@ -1106,7 +1106,7 @@ gTrainers:: @ 8310030
@ WENDY
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "WENDY$", 12
@@ -1118,7 +1118,7 @@ gTrainers:: @ 8310030
@ KEIRA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "KEIRA$", 12
@@ -1130,7 +1130,7 @@ gTrainers:: @ 8310030
@ BROOKE_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "BROOKE$", 12
@@ -1142,7 +1142,7 @@ gTrainers:: @ 8310030
@ JENNIFER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "JENNIFER$", 12
@@ -1154,7 +1154,7 @@ gTrainers:: @ 8310030
@ HOPE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "HOPE$", 12
@@ -1166,7 +1166,7 @@ gTrainers:: @ 8310030
@ SHANNON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "SHANNON$", 12
@@ -1178,7 +1178,7 @@ gTrainers:: @ 8310030
@ MICHELLE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "MICHELLE$", 12
@@ -1190,7 +1190,7 @@ gTrainers:: @ 8310030
@ CAROLINE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "CAROLINE$", 12
@@ -1202,7 +1202,7 @@ gTrainers:: @ 8310030
@ JULIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "JULIE$", 12
@@ -1214,7 +1214,7 @@ gTrainers:: @ 8310030
@ BROOKE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "BROOKE$", 12
@@ -1226,7 +1226,7 @@ gTrainers:: @ 8310030
@ BROOKE_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "BROOKE$", 12
@@ -1238,7 +1238,7 @@ gTrainers:: @ 8310030
@ BROOKE_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "BROOKE$", 12
@@ -1250,7 +1250,7 @@ gTrainers:: @ 8310030
@ BROOKE_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "BROOKE$", 12
@@ -1262,7 +1262,7 @@ gTrainers:: @ 8310030
@ PATRICIA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "PATRICIA$", 12
@@ -1274,7 +1274,7 @@ gTrainers:: @ 8310030
@ KINDRA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "KINDRA$", 12
@@ -1286,7 +1286,7 @@ gTrainers:: @ 8310030
@ TAMMY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "TAMMY$", 12
@@ -1298,7 +1298,7 @@ gTrainers:: @ 8310030
@ VALERIE_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "VALERIE$", 12
@@ -1310,7 +1310,7 @@ gTrainers:: @ 8310030
@ TASHA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "TASHA$", 12
@@ -1322,7 +1322,7 @@ gTrainers:: @ 8310030
@ VALERIE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "VALERIE$", 12
@@ -1334,7 +1334,7 @@ gTrainers:: @ 8310030
@ VALERIE_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "VALERIE$", 12
@@ -1346,7 +1346,7 @@ gTrainers:: @ 8310030
@ VALERIE_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "VALERIE$", 12
@@ -1358,7 +1358,7 @@ gTrainers:: @ 8310030
@ VALERIE_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "VALERIE$", 12
@@ -1370,7 +1370,7 @@ gTrainers:: @ 8310030
@ CINDY_1
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "CINDY$", 12
@@ -1382,7 +1382,7 @@ gTrainers:: @ 8310030
@ DAPHNE
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "DAPHNE$", 12
@@ -1394,7 +1394,7 @@ gTrainers:: @ 8310030
@ GRUNT_23
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -1406,7 +1406,7 @@ gTrainers:: @ 8310030
@ CINDY_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "CINDY$", 12
@@ -1418,7 +1418,7 @@ gTrainers:: @ 8310030
@ BRIANNA
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "BRIANNA$", 12
@@ -1430,7 +1430,7 @@ gTrainers:: @ 8310030
@ NAOMI
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "NAOMI$", 12
@@ -1442,7 +1442,7 @@ gTrainers:: @ 8310030
@ CINDY_3
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "CINDY$", 12
@@ -1454,7 +1454,7 @@ gTrainers:: @ 8310030
@ CINDY_4
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "CINDY$", 12
@@ -1466,7 +1466,7 @@ gTrainers:: @ 8310030
@ CINDY_5
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "CINDY$", 12
@@ -1478,7 +1478,7 @@ gTrainers:: @ 8310030
@ CINDY_6
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "CINDY$", 12
@@ -1490,7 +1490,7 @@ gTrainers:: @ 8310030
@ MELISSA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "MELISSA$", 12
@@ -1502,7 +1502,7 @@ gTrainers:: @ 8310030
@ SHEILA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "SHEILA$", 12
@@ -1514,7 +1514,7 @@ gTrainers:: @ 8310030
@ SHIRLEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "SHIRLEY$", 12
@@ -1526,7 +1526,7 @@ gTrainers:: @ 8310030
@ JESSICA_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "JESSICA$", 12
@@ -1538,7 +1538,7 @@ gTrainers:: @ 8310030
@ CONNIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "CONNIE$", 12
@@ -1550,7 +1550,7 @@ gTrainers:: @ 8310030
@ BRIDGET
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "BRIDGET$", 12
@@ -1562,7 +1562,7 @@ gTrainers:: @ 8310030
@ OLIVIA
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "OLIVIA$", 12
@@ -1574,7 +1574,7 @@ gTrainers:: @ 8310030
@ TIFFANY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "TIFFANY$", 12
@@ -1586,7 +1586,7 @@ gTrainers:: @ 8310030
@ JESSICA_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "JESSICA$", 12
@@ -1598,7 +1598,7 @@ gTrainers:: @ 8310030
@ JESSICA_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "JESSICA$", 12
@@ -1610,7 +1610,7 @@ gTrainers:: @ 8310030
@ JESSICA_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "JESSICA$", 12
@@ -1622,7 +1622,7 @@ gTrainers:: @ 8310030
@ JESSICA_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "JESSICA$", 12
@@ -1634,7 +1634,7 @@ gTrainers:: @ 8310030
@ WINSTON_1
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_RICH_BOY
+ .byte TRAINER_CLASS_RICH_BOY
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_RICH_BOY
.string "WINSTON$", 12
@@ -1646,7 +1646,7 @@ gTrainers:: @ 8310030
@ MOLLIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_F
.string "MOLLIE$", 12
@@ -1658,7 +1658,7 @@ gTrainers:: @ 8310030
@ GARRET
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_RICH_BOY
+ .byte TRAINER_CLASS_RICH_BOY
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_RICH_BOY
.string "GARRET$", 12
@@ -1670,7 +1670,7 @@ gTrainers:: @ 8310030
@ WINSTON_2
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_RICH_BOY
+ .byte TRAINER_CLASS_RICH_BOY
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_RICH_BOY
.string "WINSTON$", 12
@@ -1682,7 +1682,7 @@ gTrainers:: @ 8310030
@ WINSTON_3
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_RICH_BOY
+ .byte TRAINER_CLASS_RICH_BOY
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_RICH_BOY
.string "WINSTON$", 12
@@ -1694,7 +1694,7 @@ gTrainers:: @ 8310030
@ WINSTON_4
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_RICH_BOY
+ .byte TRAINER_CLASS_RICH_BOY
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_RICH_BOY
.string "WINSTON$", 12
@@ -1706,7 +1706,7 @@ gTrainers:: @ 8310030
@ WINSTON_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_RICH_BOY
+ .byte TRAINER_CLASS_RICH_BOY
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_RICH_BOY
.string "WINSTON$", 12
@@ -1718,7 +1718,7 @@ gTrainers:: @ 8310030
@ STEVE_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_POKEMANIAC
+ .byte TRAINER_CLASS_POKEMANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_POKEMANIAC
.string "STEVE$", 12
@@ -1730,7 +1730,7 @@ gTrainers:: @ 8310030
@ THALIA_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "THALIA$", 12
@@ -1742,7 +1742,7 @@ gTrainers:: @ 8310030
@ MARK
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_POKEMANIAC
+ .byte TRAINER_CLASS_POKEMANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_POKEMANIAC
.string "MARK$", 12
@@ -1754,7 +1754,7 @@ gTrainers:: @ 8310030
@ GRUNT_24
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_F
.string "GRUNT$", 12
@@ -1766,7 +1766,7 @@ gTrainers:: @ 8310030
@ STEVE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_POKEMANIAC
+ .byte TRAINER_CLASS_POKEMANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_POKEMANIAC
.string "STEVE$", 12
@@ -1778,7 +1778,7 @@ gTrainers:: @ 8310030
@ STEVE_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_POKEMANIAC
+ .byte TRAINER_CLASS_POKEMANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_POKEMANIAC
.string "STEVE$", 12
@@ -1790,7 +1790,7 @@ gTrainers:: @ 8310030
@ STEVE_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_POKEMANIAC
+ .byte TRAINER_CLASS_POKEMANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_POKEMANIAC
.string "STEVE$", 12
@@ -1802,7 +1802,7 @@ gTrainers:: @ 8310030
@ STEVE_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_POKEMANIAC
+ .byte TRAINER_CLASS_POKEMANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_POKEMANIAC
.string "STEVE$", 12
@@ -1814,7 +1814,7 @@ gTrainers:: @ 8310030
@ LUIS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "LUIS$", 12
@@ -1826,7 +1826,7 @@ gTrainers:: @ 8310030
@ DOMINIK
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "DOMINIK$", 12
@@ -1838,7 +1838,7 @@ gTrainers:: @ 8310030
@ DOUGLAS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "DOUGLAS$", 12
@@ -1850,7 +1850,7 @@ gTrainers:: @ 8310030
@ DARRIN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "DARRIN$", 12
@@ -1862,7 +1862,7 @@ gTrainers:: @ 8310030
@ TONY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "TONY$", 12
@@ -1874,7 +1874,7 @@ gTrainers:: @ 8310030
@ JEROME
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "JEROME$", 12
@@ -1886,7 +1886,7 @@ gTrainers:: @ 8310030
@ MATTHEW
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "MATTHEW$", 12
@@ -1898,7 +1898,7 @@ gTrainers:: @ 8310030
@ DAVID
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "DAVID$", 12
@@ -1910,7 +1910,7 @@ gTrainers:: @ 8310030
@ SPENCER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "SPENCER$", 12
@@ -1922,7 +1922,7 @@ gTrainers:: @ 8310030
@ ROLAND
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "ROLAND$", 12
@@ -1934,7 +1934,7 @@ gTrainers:: @ 8310030
@ NOLEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "NOLEN$", 12
@@ -1946,7 +1946,7 @@ gTrainers:: @ 8310030
@ STAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "STAN$", 12
@@ -1958,7 +1958,7 @@ gTrainers:: @ 8310030
@ BARRY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "BARRY$", 12
@@ -1970,7 +1970,7 @@ gTrainers:: @ 8310030
@ DEAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "DEAN$", 12
@@ -1982,7 +1982,7 @@ gTrainers:: @ 8310030
@ RODNEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "RODNEY$", 12
@@ -1994,7 +1994,7 @@ gTrainers:: @ 8310030
@ RICHARD
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "RICHARD$", 12
@@ -2006,7 +2006,7 @@ gTrainers:: @ 8310030
@ HERMAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "HERMAN$", 12
@@ -2018,7 +2018,7 @@ gTrainers:: @ 8310030
@ SANTIAGO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "SANTIAGO$", 12
@@ -2030,7 +2030,7 @@ gTrainers:: @ 8310030
@ GILBERT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "GILBERT$", 12
@@ -2042,7 +2042,7 @@ gTrainers:: @ 8310030
@ FRANKLIN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "FRANKLIN$", 12
@@ -2054,7 +2054,7 @@ gTrainers:: @ 8310030
@ KEVIN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "KEVIN$", 12
@@ -2066,7 +2066,7 @@ gTrainers:: @ 8310030
@ JACK
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "JACK$", 12
@@ -2078,7 +2078,7 @@ gTrainers:: @ 8310030
@ DUDLEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "DUDLEY$", 12
@@ -2090,7 +2090,7 @@ gTrainers:: @ 8310030
@ CHAD
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "CHAD$", 12
@@ -2102,7 +2102,7 @@ gTrainers:: @ 8310030
@ TONY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "TONY$", 12
@@ -2114,7 +2114,7 @@ gTrainers:: @ 8310030
@ TONY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "TONY$", 12
@@ -2126,7 +2126,7 @@ gTrainers:: @ 8310030
@ TONY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "TONY$", 12
@@ -2138,7 +2138,7 @@ gTrainers:: @ 8310030
@ TONY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "TONY$", 12
@@ -2150,7 +2150,7 @@ gTrainers:: @ 8310030
@ TAKAO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "TAKAO$", 12
@@ -2162,7 +2162,7 @@ gTrainers:: @ 8310030
@ HITOSHI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "HITOSHI$", 12
@@ -2174,7 +2174,7 @@ gTrainers:: @ 8310030
@ KIYO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "KIYO$", 12
@@ -2186,7 +2186,7 @@ gTrainers:: @ 8310030
@ KOICHI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "KOICHI$", 12
@@ -2198,7 +2198,7 @@ gTrainers:: @ 8310030
@ NOB_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "NOB$", 12
@@ -2210,7 +2210,7 @@ gTrainers:: @ 8310030
@ NOB_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "NOB$", 12
@@ -2222,7 +2222,7 @@ gTrainers:: @ 8310030
@ NOB_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "NOB$", 12
@@ -2234,7 +2234,7 @@ gTrainers:: @ 8310030
@ NOB_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "NOB$", 12
@@ -2246,7 +2246,7 @@ gTrainers:: @ 8310030
@ NOB_5
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "NOB$", 12
@@ -2258,7 +2258,7 @@ gTrainers:: @ 8310030
@ YUJI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "YUJI$", 12
@@ -2270,7 +2270,7 @@ gTrainers:: @ 8310030
@ DAISUKE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "DAISUKE$", 12
@@ -2282,7 +2282,7 @@ gTrainers:: @ 8310030
@ ATSUSHI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "ATSUSHI$", 12
@@ -2294,7 +2294,7 @@ gTrainers:: @ 8310030
@ KIRK
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "KIRK$", 12
@@ -2306,7 +2306,7 @@ gTrainers:: @ 8310030
@ GRUNT_25
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_F
.string "GRUNT$", 12
@@ -2318,7 +2318,7 @@ gTrainers:: @ 8310030
@ GRUNT_26
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -2330,7 +2330,7 @@ gTrainers:: @ 8310030
@ SHAWN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "SHAWN$", 12
@@ -2342,7 +2342,7 @@ gTrainers:: @ 8310030
@ FERNANDO_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "FERNANDO$", 12
@@ -2354,7 +2354,7 @@ gTrainers:: @ 8310030
@ DALTON_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "DALTON$", 12
@@ -2366,7 +2366,7 @@ gTrainers:: @ 8310030
@ DALTON_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "DALTON$", 12
@@ -2378,7 +2378,7 @@ gTrainers:: @ 8310030
@ DALTON_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "DALTON$", 12
@@ -2390,7 +2390,7 @@ gTrainers:: @ 8310030
@ DALTON_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "DALTON$", 12
@@ -2402,7 +2402,7 @@ gTrainers:: @ 8310030
@ DALTON_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "DALTON$", 12
@@ -2414,7 +2414,7 @@ gTrainers:: @ 8310030
@ COLE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "COLE$", 12
@@ -2426,7 +2426,7 @@ gTrainers:: @ 8310030
@ JEFF
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "JEFF$", 12
@@ -2438,7 +2438,7 @@ gTrainers:: @ 8310030
@ AXLE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "AXLE$", 12
@@ -2450,7 +2450,7 @@ gTrainers:: @ 8310030
@ JACE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "JACE$", 12
@@ -2462,7 +2462,7 @@ gTrainers:: @ 8310030
@ KEEGAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "KEEGAN$", 12
@@ -2474,7 +2474,7 @@ gTrainers:: @ 8310030
@ BERNIE_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "BERNIE$", 12
@@ -2486,7 +2486,7 @@ gTrainers:: @ 8310030
@ BERNIE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "BERNIE$", 12
@@ -2498,7 +2498,7 @@ gTrainers:: @ 8310030
@ BERNIE_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "BERNIE$", 12
@@ -2510,7 +2510,7 @@ gTrainers:: @ 8310030
@ BERNIE_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "BERNIE$", 12
@@ -2522,7 +2522,7 @@ gTrainers:: @ 8310030
@ BERNIE_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "BERNIE$", 12
@@ -2534,7 +2534,7 @@ gTrainers:: @ 8310030
@ DREW
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "DREW$", 12
@@ -2546,7 +2546,7 @@ gTrainers:: @ 8310030
@ BEAU
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "BEAU$", 12
@@ -2558,7 +2558,7 @@ gTrainers:: @ 8310030
@ LARRY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "LARRY$", 12
@@ -2570,7 +2570,7 @@ gTrainers:: @ 8310030
@ SHANE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "SHANE$", 12
@@ -2582,7 +2582,7 @@ gTrainers:: @ 8310030
@ JUSTIN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "JUSTIN$", 12
@@ -2594,7 +2594,7 @@ gTrainers:: @ 8310030
@ ETHAN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "ETHAN$", 12
@@ -2606,7 +2606,7 @@ gTrainers:: @ 8310030
@ AUTUMN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "AUTUMN$", 12
@@ -2618,7 +2618,7 @@ gTrainers:: @ 8310030
@ TRAVIS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "TRAVIS$", 12
@@ -2630,7 +2630,7 @@ gTrainers:: @ 8310030
@ ETHAN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "ETHAN$", 12
@@ -2642,7 +2642,7 @@ gTrainers:: @ 8310030
@ ETHAN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "ETHAN$", 12
@@ -2654,7 +2654,7 @@ gTrainers:: @ 8310030
@ ETHAN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "ETHAN$", 12
@@ -2666,7 +2666,7 @@ gTrainers:: @ 8310030
@ ETHAN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "ETHAN$", 12
@@ -2678,7 +2678,7 @@ gTrainers:: @ 8310030
@ BRENT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "BRENT$", 12
@@ -2690,7 +2690,7 @@ gTrainers:: @ 8310030
@ DONALD
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "DONALD$", 12
@@ -2702,7 +2702,7 @@ gTrainers:: @ 8310030
@ TAYLOR
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "TAYLOR$", 12
@@ -2714,7 +2714,7 @@ gTrainers:: @ 8310030
@ JEFFREY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "JEFFREY$", 12
@@ -2726,7 +2726,7 @@ gTrainers:: @ 8310030
@ DEREK
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "DEREK$", 12
@@ -2738,7 +2738,7 @@ gTrainers:: @ 8310030
@ JEFFREY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "JEFFREY$", 12
@@ -2750,7 +2750,7 @@ gTrainers:: @ 8310030
@ JEFFREY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "JEFFREY$", 12
@@ -2762,7 +2762,7 @@ gTrainers:: @ 8310030
@ JEFFREY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "JEFFREY$", 12
@@ -2774,7 +2774,7 @@ gTrainers:: @ 8310030
@ JEFFREY_5
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "JEFFREY$", 12
@@ -2786,7 +2786,7 @@ gTrainers:: @ 8310030
@ EDWARD
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "EDWARD$", 12
@@ -2798,7 +2798,7 @@ gTrainers:: @ 8310030
@ PRESTON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "PRESTON$", 12
@@ -2810,7 +2810,7 @@ gTrainers:: @ 8310030
@ VIRGIL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "VIRGIL$", 12
@@ -2822,7 +2822,7 @@ gTrainers:: @ 8310030
@ BLAKE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "BLAKE$", 12
@@ -2834,7 +2834,7 @@ gTrainers:: @ 8310030
@ WILLIAM
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "WILLIAM$", 12
@@ -2846,7 +2846,7 @@ gTrainers:: @ 8310030
@ JOSHUA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "JOSHUA$", 12
@@ -2858,7 +2858,7 @@ gTrainers:: @ 8310030
@ CAMERON_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "CAMERON$", 12
@@ -2870,7 +2870,7 @@ gTrainers:: @ 8310030
@ CAMERON_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "CAMERON$", 12
@@ -2882,7 +2882,7 @@ gTrainers:: @ 8310030
@ CAMERON_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "CAMERON$", 12
@@ -2894,7 +2894,7 @@ gTrainers:: @ 8310030
@ CAMERON_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "CAMERON$", 12
@@ -2906,7 +2906,7 @@ gTrainers:: @ 8310030
@ CAMERON_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "CAMERON$", 12
@@ -2918,7 +2918,7 @@ gTrainers:: @ 8310030
@ JACLYN
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "JACLYN$", 12
@@ -2930,7 +2930,7 @@ gTrainers:: @ 8310030
@ HANNAH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "HANNAH$", 12
@@ -2942,7 +2942,7 @@ gTrainers:: @ 8310030
@ SAMANTHA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "SAMANTHA$", 12
@@ -2954,7 +2954,7 @@ gTrainers:: @ 8310030
@ MAURA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "MAURA$", 12
@@ -2966,7 +2966,7 @@ gTrainers:: @ 8310030
@ KAYLA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "KAYLA$", 12
@@ -2978,7 +2978,7 @@ gTrainers:: @ 8310030
@ ALEXIS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "ALEXIS$", 12
@@ -2990,7 +2990,7 @@ gTrainers:: @ 8310030
@ JACKI_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "JACKI$", 12
@@ -3002,7 +3002,7 @@ gTrainers:: @ 8310030
@ JACKI_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "JACKI$", 12
@@ -3014,7 +3014,7 @@ gTrainers:: @ 8310030
@ JACKI_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "JACKI$", 12
@@ -3026,7 +3026,7 @@ gTrainers:: @ 8310030
@ JACKI_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "JACKI$", 12
@@ -3038,7 +3038,7 @@ gTrainers:: @ 8310030
@ JACKI_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "JACKI$", 12
@@ -3050,7 +3050,7 @@ gTrainers:: @ 8310030
@ WALTER_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "WALTER$", 12
@@ -3062,7 +3062,7 @@ gTrainers:: @ 8310030
@ MICAH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "MICAH$", 12
@@ -3074,7 +3074,7 @@ gTrainers:: @ 8310030
@ THOMAS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "THOMAS$", 12
@@ -3086,7 +3086,7 @@ gTrainers:: @ 8310030
@ WALTER_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "WALTER$", 12
@@ -3098,7 +3098,7 @@ gTrainers:: @ 8310030
@ WALTER_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "WALTER$", 12
@@ -3110,7 +3110,7 @@ gTrainers:: @ 8310030
@ WALTER_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "WALTER$", 12
@@ -3122,7 +3122,7 @@ gTrainers:: @ 8310030
@ WALTER_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "WALTER$", 12
@@ -3134,7 +3134,7 @@ gTrainers:: @ 8310030
@ SIDNEY
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_ELITE_FOUR
+ .byte TRAINER_CLASS_ELITE_FOUR
.byte TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR @ gender flag and encounter music
.byte TRAINER_PIC_ELITE_FOUR_SIDNEY
.string "SIDNEY$", 12
@@ -3146,7 +3146,7 @@ gTrainers:: @ 8310030
@ PHOEBE
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_ELITE_FOUR
+ .byte TRAINER_CLASS_ELITE_FOUR
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR @ gender flag and encounter music
.byte TRAINER_PIC_ELITE_FOUR_PHOEBE
.string "PHOEBE$", 12
@@ -3158,7 +3158,7 @@ gTrainers:: @ 8310030
@ GLACIA
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_ELITE_FOUR
+ .byte TRAINER_CLASS_ELITE_FOUR
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR @ gender flag and encounter music
.byte TRAINER_PIC_ELITE_FOUR_GLACIA
.string "GLACIA$", 12
@@ -3170,7 +3170,7 @@ gTrainers:: @ 8310030
@ DRAKE
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_ELITE_FOUR
+ .byte TRAINER_CLASS_ELITE_FOUR
.byte TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR @ gender flag and encounter music
.byte TRAINER_PIC_ELITE_FOUR_DRAKE
.string "DRAKE$", 12
@@ -3182,7 +3182,7 @@ gTrainers:: @ 8310030
@ ROXANNE_1
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_ROXANNE
.string "ROXANNE$", 12
@@ -3194,7 +3194,7 @@ gTrainers:: @ 8310030
@ BRAWLY_1
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_BRAWLY
.string "BRAWLY$", 12
@@ -3206,7 +3206,7 @@ gTrainers:: @ 8310030
@ WATTSON_1
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WATTSON
.string "WATTSON$", 12
@@ -3218,7 +3218,7 @@ gTrainers:: @ 8310030
@ FLANNERY_1
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_FLANNERY
.string "FLANNERY$", 12
@@ -3230,7 +3230,7 @@ gTrainers:: @ 8310030
@ NORMAN_1
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_NORMAN
.string "NORMAN$", 12
@@ -3242,7 +3242,7 @@ gTrainers:: @ 8310030
@ WINONA_1
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WINONA
.string "WINONA$", 12
@@ -3254,7 +3254,7 @@ gTrainers:: @ 8310030
@ TATE_AND_LIZA_1
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_TATE_AND_LIZA
.string "TATE&LIZA$", 12
@@ -3266,7 +3266,7 @@ gTrainers:: @ 8310030
@ JUAN_1
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_JUAN
.string "JUAN$", 12
@@ -3278,7 +3278,7 @@ gTrainers:: @ 8310030
@ JERRY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_M
.string "JERRY$", 12
@@ -3290,7 +3290,7 @@ gTrainers:: @ 8310030
@ TED
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_M
.string "TED$", 12
@@ -3302,7 +3302,7 @@ gTrainers:: @ 8310030
@ PAUL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_M
.string "PAUL$", 12
@@ -3314,7 +3314,7 @@ gTrainers:: @ 8310030
@ JERRY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_M
.string "JERRY$", 12
@@ -3326,7 +3326,7 @@ gTrainers:: @ 8310030
@ JERRY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_M
.string "JERRY$", 12
@@ -3338,7 +3338,7 @@ gTrainers:: @ 8310030
@ JERRY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_M
.string "JERRY$", 12
@@ -3350,7 +3350,7 @@ gTrainers:: @ 8310030
@ JERRY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_M
.string "JERRY$", 12
@@ -3362,7 +3362,7 @@ gTrainers:: @ 8310030
@ KAREN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_F
.string "KAREN$", 12
@@ -3374,7 +3374,7 @@ gTrainers:: @ 8310030
@ GEORGIA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_F
.string "GEORGIA$", 12
@@ -3386,7 +3386,7 @@ gTrainers:: @ 8310030
@ KAREN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_F
.string "KAREN$", 12
@@ -3398,7 +3398,7 @@ gTrainers:: @ 8310030
@ KAREN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_F
.string "KAREN$", 12
@@ -3410,7 +3410,7 @@ gTrainers:: @ 8310030
@ KAREN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_F
.string "KAREN$", 12
@@ -3422,7 +3422,7 @@ gTrainers:: @ 8310030
@ KAREN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SCHOOL_KID
+ .byte TRAINER_CLASS_SCHOOL_KID
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_SCHOOL_KID_F
.string "KAREN$", 12
@@ -3434,7 +3434,7 @@ gTrainers:: @ 8310030
@ KATE_AND_JOY
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_SR_AND_JR
+ .byte TRAINER_CLASS_SR_AND_JR
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_SR_AND_JR
.string "KATE & JOY$", 12
@@ -3446,7 +3446,7 @@ gTrainers:: @ 8310030
@ ANNA_AND_MEG_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_SR_AND_JR
+ .byte TRAINER_CLASS_SR_AND_JR
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_SR_AND_JR
.string "ANNA & MEG$", 12
@@ -3458,7 +3458,7 @@ gTrainers:: @ 8310030
@ ANNA_AND_MEG_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_SR_AND_JR
+ .byte TRAINER_CLASS_SR_AND_JR
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_SR_AND_JR
.string "ANNA & MEG$", 12
@@ -3470,7 +3470,7 @@ gTrainers:: @ 8310030
@ ANNA_AND_MEG_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_SR_AND_JR
+ .byte TRAINER_CLASS_SR_AND_JR
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_SR_AND_JR
.string "ANNA & MEG$", 12
@@ -3482,7 +3482,7 @@ gTrainers:: @ 8310030
@ ANNA_AND_MEG_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_SR_AND_JR
+ .byte TRAINER_CLASS_SR_AND_JR
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_SR_AND_JR
.string "ANNA & MEG$", 12
@@ -3494,7 +3494,7 @@ gTrainers:: @ 8310030
@ ANNA_AND_MEG_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_SR_AND_JR
+ .byte TRAINER_CLASS_SR_AND_JR
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_SR_AND_JR
.string "ANNA & MEG$", 12
@@ -3506,7 +3506,7 @@ gTrainers:: @ 8310030
@ VICTOR
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_WINSTRATE
+ .byte TRAINER_CLASS_WINSTRATE
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_M
.string "VICTOR$", 12
@@ -3518,7 +3518,7 @@ gTrainers:: @ 8310030
@ MIGUEL_1
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_M
.string "MIGUEL$", 12
@@ -3530,7 +3530,7 @@ gTrainers:: @ 8310030
@ COLTON
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_M
.string "COLTON$", 12
@@ -3542,7 +3542,7 @@ gTrainers:: @ 8310030
@ MIGUEL_2
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_M
.string "MIGUEL$", 12
@@ -3554,7 +3554,7 @@ gTrainers:: @ 8310030
@ MIGUEL_3
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_M
.string "MIGUEL$", 12
@@ -3566,7 +3566,7 @@ gTrainers:: @ 8310030
@ MIGUEL_4
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_M
.string "MIGUEL$", 12
@@ -3578,7 +3578,7 @@ gTrainers:: @ 8310030
@ MIGUEL_5
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_M
.string "MIGUEL$", 12
@@ -3590,7 +3590,7 @@ gTrainers:: @ 8310030
@ VICTORIA
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_WINSTRATE
+ .byte TRAINER_CLASS_WINSTRATE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "VICTORIA$", 12
@@ -3602,7 +3602,7 @@ gTrainers:: @ 8310030
@ VANESSA
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "VANESSA$", 12
@@ -3614,7 +3614,7 @@ gTrainers:: @ 8310030
@ BETHANY
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "BETHANY$", 12
@@ -3626,7 +3626,7 @@ gTrainers:: @ 8310030
@ ISABEL_1
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "ISABEL$", 12
@@ -3638,7 +3638,7 @@ gTrainers:: @ 8310030
@ ISABEL_2
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "ISABEL$", 12
@@ -3650,7 +3650,7 @@ gTrainers:: @ 8310030
@ ISABEL_3
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "ISABEL$", 12
@@ -3662,7 +3662,7 @@ gTrainers:: @ 8310030
@ ISABEL_4
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "ISABEL$", 12
@@ -3674,7 +3674,7 @@ gTrainers:: @ 8310030
@ ISABEL_5
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "ISABEL$", 12
@@ -3686,7 +3686,7 @@ gTrainers:: @ 8310030
@ TIMOTHY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "TIMOTHY$", 12
@@ -3698,7 +3698,7 @@ gTrainers:: @ 8310030
@ TIMOTHY_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "TIMOTHY$", 12
@@ -3710,7 +3710,7 @@ gTrainers:: @ 8310030
@ TIMOTHY_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "TIMOTHY$", 12
@@ -3722,7 +3722,7 @@ gTrainers:: @ 8310030
@ TIMOTHY_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "TIMOTHY$", 12
@@ -3734,7 +3734,7 @@ gTrainers:: @ 8310030
@ TIMOTHY_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "TIMOTHY$", 12
@@ -3746,7 +3746,7 @@ gTrainers:: @ 8310030
@ VICKY
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_WINSTRATE
+ .byte TRAINER_CLASS_WINSTRATE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_F
.string "VICKY$", 12
@@ -3758,7 +3758,7 @@ gTrainers:: @ 8310030
@ SHELBY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_F
.string "SHELBY$", 12
@@ -3770,7 +3770,7 @@ gTrainers:: @ 8310030
@ SHELBY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_F
.string "SHELBY$", 12
@@ -3782,7 +3782,7 @@ gTrainers:: @ 8310030
@ SHELBY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_F
.string "SHELBY$", 12
@@ -3794,7 +3794,7 @@ gTrainers:: @ 8310030
@ SHELBY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_F
.string "SHELBY$", 12
@@ -3806,7 +3806,7 @@ gTrainers:: @ 8310030
@ SHELBY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_F
.string "SHELBY$", 12
@@ -3818,7 +3818,7 @@ gTrainers:: @ 8310030
@ CALVIN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "CALVIN$", 12
@@ -3830,7 +3830,7 @@ gTrainers:: @ 8310030
@ BILLY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "BILLY$", 12
@@ -3842,7 +3842,7 @@ gTrainers:: @ 8310030
@ JOSH
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "JOSH$", 12
@@ -3854,7 +3854,7 @@ gTrainers:: @ 8310030
@ TOMMY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "TOMMY$", 12
@@ -3866,7 +3866,7 @@ gTrainers:: @ 8310030
@ JOEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "JOEY$", 12
@@ -3878,7 +3878,7 @@ gTrainers:: @ 8310030
@ BEN
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "BEN$", 12
@@ -3890,7 +3890,7 @@ gTrainers:: @ 8310030
@ QUINCY
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "QUINCY$", 12
@@ -3902,7 +3902,7 @@ gTrainers:: @ 8310030
@ KATELYNN
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "KATELYNN$", 12
@@ -3914,7 +3914,7 @@ gTrainers:: @ 8310030
@ JAYLEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "JAYLEN$", 12
@@ -3926,7 +3926,7 @@ gTrainers:: @ 8310030
@ DILLON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "DILLON$", 12
@@ -3938,7 +3938,7 @@ gTrainers:: @ 8310030
@ CALVIN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "CALVIN$", 12
@@ -3950,7 +3950,7 @@ gTrainers:: @ 8310030
@ CALVIN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "CALVIN$", 12
@@ -3962,7 +3962,7 @@ gTrainers:: @ 8310030
@ CALVIN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "CALVIN$", 12
@@ -3974,7 +3974,7 @@ gTrainers:: @ 8310030
@ CALVIN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "CALVIN$", 12
@@ -3986,7 +3986,7 @@ gTrainers:: @ 8310030
@ EDDIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "EDDIE$", 12
@@ -3998,7 +3998,7 @@ gTrainers:: @ 8310030
@ ALLEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "ALLEN$", 12
@@ -4010,7 +4010,7 @@ gTrainers:: @ 8310030
@ TIMMY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "TIMMY$", 12
@@ -4022,7 +4022,7 @@ gTrainers:: @ 8310030
@ WALLACE
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_CHAMPION
+ .byte TRAINER_CLASS_CHAMPION
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CHAMPION_WALLACE
.string "WALLACE$", 12
@@ -4034,7 +4034,7 @@ gTrainers:: @ 8310030
@ ANDREW
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "ANDREW$", 12
@@ -4046,7 +4046,7 @@ gTrainers:: @ 8310030
@ IVAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "IVAN$", 12
@@ -4058,7 +4058,7 @@ gTrainers:: @ 8310030
@ CLAUDE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "CLAUDE$", 12
@@ -4070,7 +4070,7 @@ gTrainers:: @ 8310030
@ ELLIOT_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "ELLIOT$", 12
@@ -4082,7 +4082,7 @@ gTrainers:: @ 8310030
@ NED
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "NED$", 12
@@ -4094,7 +4094,7 @@ gTrainers:: @ 8310030
@ DALE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "DALE$", 12
@@ -4106,7 +4106,7 @@ gTrainers:: @ 8310030
@ NOLAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "NOLAN$", 12
@@ -4118,7 +4118,7 @@ gTrainers:: @ 8310030
@ BARNY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "BARNY$", 12
@@ -4130,7 +4130,7 @@ gTrainers:: @ 8310030
@ WADE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "WADE$", 12
@@ -4142,7 +4142,7 @@ gTrainers:: @ 8310030
@ CARTER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "CARTER$", 12
@@ -4154,7 +4154,7 @@ gTrainers:: @ 8310030
@ ELLIOT_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "ELLIOT$", 12
@@ -4166,7 +4166,7 @@ gTrainers:: @ 8310030
@ ELLIOT_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "ELLIOT$", 12
@@ -4178,7 +4178,7 @@ gTrainers:: @ 8310030
@ ELLIOT_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "ELLIOT$", 12
@@ -4190,7 +4190,7 @@ gTrainers:: @ 8310030
@ ELLIOT_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "ELLIOT$", 12
@@ -4202,7 +4202,7 @@ gTrainers:: @ 8310030
@ RONALD
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "RONALD$", 12
@@ -4214,7 +4214,7 @@ gTrainers:: @ 8310030
@ JACOB
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_M
.string "JACOB$", 12
@@ -4226,7 +4226,7 @@ gTrainers:: @ 8310030
@ ANTHONY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_M
.string "ANTHONY$", 12
@@ -4238,7 +4238,7 @@ gTrainers:: @ 8310030
@ BENJAMIN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_M
.string "BENJAMIN$", 12
@@ -4250,7 +4250,7 @@ gTrainers:: @ 8310030
@ BENJAMIN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_M
.string "BENJAMIN$", 12
@@ -4262,7 +4262,7 @@ gTrainers:: @ 8310030
@ BENJAMIN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_M
.string "BENJAMIN$", 12
@@ -4274,7 +4274,7 @@ gTrainers:: @ 8310030
@ BENJAMIN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_M
.string "BENJAMIN$", 12
@@ -4286,7 +4286,7 @@ gTrainers:: @ 8310030
@ BENJAMIN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_M
.string "BENJAMIN$", 12
@@ -4298,7 +4298,7 @@ gTrainers:: @ 8310030
@ ABIGAIL_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_F
.string "ABIGAIL$", 12
@@ -4310,7 +4310,7 @@ gTrainers:: @ 8310030
@ JASMINE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_F
.string "JASMINE$", 12
@@ -4322,7 +4322,7 @@ gTrainers:: @ 8310030
@ ABIGAIL_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_F
.string "ABIGAIL$", 12
@@ -4334,7 +4334,7 @@ gTrainers:: @ 8310030
@ ABIGAIL_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_F
.string "ABIGAIL$", 12
@@ -4346,7 +4346,7 @@ gTrainers:: @ 8310030
@ ABIGAIL_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_F
.string "ABIGAIL$", 12
@@ -4358,7 +4358,7 @@ gTrainers:: @ 8310030
@ ABIGAIL_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_F
.string "ABIGAIL$", 12
@@ -4370,7 +4370,7 @@ gTrainers:: @ 8310030
@ DYLAN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_M
.string "DYLAN$", 12
@@ -4382,7 +4382,7 @@ gTrainers:: @ 8310030
@ DYLAN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_M
.string "DYLAN$", 12
@@ -4394,7 +4394,7 @@ gTrainers:: @ 8310030
@ DYLAN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_M
.string "DYLAN$", 12
@@ -4406,7 +4406,7 @@ gTrainers:: @ 8310030
@ DYLAN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_M
.string "DYLAN$", 12
@@ -4418,7 +4418,7 @@ gTrainers:: @ 8310030
@ DYLAN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_M
.string "DYLAN$", 12
@@ -4430,7 +4430,7 @@ gTrainers:: @ 8310030
@ MARIA_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_F
.string "MARIA$", 12
@@ -4442,7 +4442,7 @@ gTrainers:: @ 8310030
@ MARIA_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_F
.string "MARIA$", 12
@@ -4454,7 +4454,7 @@ gTrainers:: @ 8310030
@ MARIA_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_F
.string "MARIA$", 12
@@ -4466,7 +4466,7 @@ gTrainers:: @ 8310030
@ MARIA_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_F
.string "MARIA$", 12
@@ -4478,7 +4478,7 @@ gTrainers:: @ 8310030
@ MARIA_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_F
.string "MARIA$", 12
@@ -4490,7 +4490,7 @@ gTrainers:: @ 8310030
@ CAMDEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "CAMDEN$", 12
@@ -4502,7 +4502,7 @@ gTrainers:: @ 8310030
@ DEMETRIUS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "DEMETRIUS$", 12
@@ -4514,7 +4514,7 @@ gTrainers:: @ 8310030
@ ISAIAH_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "ISAIAH$", 12
@@ -4526,7 +4526,7 @@ gTrainers:: @ 8310030
@ PABLO_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "PABLO$", 12
@@ -4538,7 +4538,7 @@ gTrainers:: @ 8310030
@ CHASE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "CHASE$", 12
@@ -4550,7 +4550,7 @@ gTrainers:: @ 8310030
@ ISAIAH_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "ISAIAH$", 12
@@ -4562,7 +4562,7 @@ gTrainers:: @ 8310030
@ ISAIAH_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "ISAIAH$", 12
@@ -4574,7 +4574,7 @@ gTrainers:: @ 8310030
@ ISAIAH_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "ISAIAH$", 12
@@ -4586,7 +4586,7 @@ gTrainers:: @ 8310030
@ ISAIAH_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "ISAIAH$", 12
@@ -4598,7 +4598,7 @@ gTrainers:: @ 8310030
@ ISOBEL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "ISOBEL$", 12
@@ -4610,7 +4610,7 @@ gTrainers:: @ 8310030
@ DONNY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "DONNY$", 12
@@ -4622,7 +4622,7 @@ gTrainers:: @ 8310030
@ TALIA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "TALIA$", 12
@@ -4634,7 +4634,7 @@ gTrainers:: @ 8310030
@ KATELYN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "KATELYN$", 12
@@ -4646,7 +4646,7 @@ gTrainers:: @ 8310030
@ ALLISON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "ALLISON$", 12
@@ -4658,7 +4658,7 @@ gTrainers:: @ 8310030
@ KATELYN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "KATELYN$", 12
@@ -4670,7 +4670,7 @@ gTrainers:: @ 8310030
@ KATELYN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "KATELYN$", 12
@@ -4682,7 +4682,7 @@ gTrainers:: @ 8310030
@ KATELYN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "KATELYN$", 12
@@ -4694,7 +4694,7 @@ gTrainers:: @ 8310030
@ KATELYN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "KATELYN$", 12
@@ -4706,7 +4706,7 @@ gTrainers:: @ 8310030
@ NICOLAS_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_DRAGON_TAMER
+ .byte TRAINER_CLASS_DRAGON_TAMER
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_DRAGON_TAMER
.string "NICOLAS$", 12
@@ -4718,7 +4718,7 @@ gTrainers:: @ 8310030
@ NICOLAS_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_DRAGON_TAMER
+ .byte TRAINER_CLASS_DRAGON_TAMER
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_DRAGON_TAMER
.string "NICOLAS$", 12
@@ -4730,7 +4730,7 @@ gTrainers:: @ 8310030
@ NICOLAS_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_DRAGON_TAMER
+ .byte TRAINER_CLASS_DRAGON_TAMER
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_DRAGON_TAMER
.string "NICOLAS$", 12
@@ -4742,7 +4742,7 @@ gTrainers:: @ 8310030
@ NICOLAS_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_DRAGON_TAMER
+ .byte TRAINER_CLASS_DRAGON_TAMER
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_DRAGON_TAMER
.string "NICOLAS$", 12
@@ -4754,7 +4754,7 @@ gTrainers:: @ 8310030
@ NICOLAS_5
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_DRAGON_TAMER
+ .byte TRAINER_CLASS_DRAGON_TAMER
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_DRAGON_TAMER
.string "NICOLAS$", 12
@@ -4766,7 +4766,7 @@ gTrainers:: @ 8310030
@ AARON
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_DRAGON_TAMER
+ .byte TRAINER_CLASS_DRAGON_TAMER
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_DRAGON_TAMER
.string "AARON$", 12
@@ -4778,7 +4778,7 @@ gTrainers:: @ 8310030
@ PERRY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "PERRY$", 12
@@ -4790,7 +4790,7 @@ gTrainers:: @ 8310030
@ HUGH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "HUGH$", 12
@@ -4802,7 +4802,7 @@ gTrainers:: @ 8310030
@ PHIL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "PHIL$", 12
@@ -4814,7 +4814,7 @@ gTrainers:: @ 8310030
@ JARED
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "JARED$", 12
@@ -4826,7 +4826,7 @@ gTrainers:: @ 8310030
@ HUMBERTO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "HUMBERTO$", 12
@@ -4838,7 +4838,7 @@ gTrainers:: @ 8310030
@ PRESLEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "PRESLEY$", 12
@@ -4850,7 +4850,7 @@ gTrainers:: @ 8310030
@ EDWARDO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "EDWARDO$", 12
@@ -4862,7 +4862,7 @@ gTrainers:: @ 8310030
@ COLIN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "COLIN$", 12
@@ -4874,7 +4874,7 @@ gTrainers:: @ 8310030
@ ROBERT_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "ROBERT$", 12
@@ -4886,7 +4886,7 @@ gTrainers:: @ 8310030
@ BENNY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "BENNY$", 12
@@ -4898,7 +4898,7 @@ gTrainers:: @ 8310030
@ CHESTER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "CHESTER$", 12
@@ -4910,7 +4910,7 @@ gTrainers:: @ 8310030
@ ROBERT_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "ROBERT$", 12
@@ -4922,7 +4922,7 @@ gTrainers:: @ 8310030
@ ROBERT_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "ROBERT$", 12
@@ -4934,7 +4934,7 @@ gTrainers:: @ 8310030
@ ROBERT_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "ROBERT$", 12
@@ -4946,7 +4946,7 @@ gTrainers:: @ 8310030
@ ROBERT_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "ROBERT$", 12
@@ -4958,7 +4958,7 @@ gTrainers:: @ 8310030
@ ALEX
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "ALEX$", 12
@@ -4970,7 +4970,7 @@ gTrainers:: @ 8310030
@ BECK
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "BECK$", 12
@@ -4982,7 +4982,7 @@ gTrainers:: @ 8310030
@ YASU
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "YASU$", 12
@@ -4994,7 +4994,7 @@ gTrainers:: @ 8310030
@ TAKASHI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "TAKASHI$", 12
@@ -5006,7 +5006,7 @@ gTrainers:: @ 8310030
@ DIANNE
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "DIANNE$", 12
@@ -5018,7 +5018,7 @@ gTrainers:: @ 8310030
@ JANI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "JANI$", 12
@@ -5030,7 +5030,7 @@ gTrainers:: @ 8310030
@ LAO_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "LAO$", 12
@@ -5042,7 +5042,7 @@ gTrainers:: @ 8310030
@ LUNG
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "LUNG$", 12
@@ -5054,7 +5054,7 @@ gTrainers:: @ 8310030
@ LAO_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "LAO$", 12
@@ -5066,7 +5066,7 @@ gTrainers:: @ 8310030
@ LAO_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "LAO$", 12
@@ -5078,7 +5078,7 @@ gTrainers:: @ 8310030
@ LAO_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "LAO$", 12
@@ -5090,7 +5090,7 @@ gTrainers:: @ 8310030
@ LAO_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "LAO$", 12
@@ -5102,7 +5102,7 @@ gTrainers:: @ 8310030
@ JOCELYN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "JOCELYN$", 12
@@ -5114,7 +5114,7 @@ gTrainers:: @ 8310030
@ LAURA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "LAURA$", 12
@@ -5126,7 +5126,7 @@ gTrainers:: @ 8310030
@ CYNDY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "CYNDY$", 12
@@ -5138,7 +5138,7 @@ gTrainers:: @ 8310030
@ CORA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "CORA$", 12
@@ -5150,7 +5150,7 @@ gTrainers:: @ 8310030
@ PAULA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "PAULA$", 12
@@ -5162,7 +5162,7 @@ gTrainers:: @ 8310030
@ CYNDY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "CYNDY$", 12
@@ -5174,7 +5174,7 @@ gTrainers:: @ 8310030
@ CYNDY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "CYNDY$", 12
@@ -5186,7 +5186,7 @@ gTrainers:: @ 8310030
@ CYNDY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "CYNDY$", 12
@@ -5198,7 +5198,7 @@ gTrainers:: @ 8310030
@ CYNDY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "CYNDY$", 12
@@ -5210,7 +5210,7 @@ gTrainers:: @ 8310030
@ MADELINE_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "MADELINE$", 12
@@ -5222,7 +5222,7 @@ gTrainers:: @ 8310030
@ CLARISSA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "CLARISSA$", 12
@@ -5234,7 +5234,7 @@ gTrainers:: @ 8310030
@ ANGELICA
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "ANGELICA$", 12
@@ -5246,7 +5246,7 @@ gTrainers:: @ 8310030
@ MADELINE_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "MADELINE$", 12
@@ -5258,7 +5258,7 @@ gTrainers:: @ 8310030
@ MADELINE_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "MADELINE$", 12
@@ -5270,7 +5270,7 @@ gTrainers:: @ 8310030
@ MADELINE_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "MADELINE$", 12
@@ -5282,7 +5282,7 @@ gTrainers:: @ 8310030
@ MADELINE_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "MADELINE$", 12
@@ -5294,7 +5294,7 @@ gTrainers:: @ 8310030
@ BEVERLY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "BEVERLY$", 12
@@ -5306,7 +5306,7 @@ gTrainers:: @ 8310030
@ IMANI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "IMANI$", 12
@@ -5318,7 +5318,7 @@ gTrainers:: @ 8310030
@ KYLA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "KYLA$", 12
@@ -5330,7 +5330,7 @@ gTrainers:: @ 8310030
@ DENISE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "DENISE$", 12
@@ -5342,7 +5342,7 @@ gTrainers:: @ 8310030
@ BETH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "BETH$", 12
@@ -5354,7 +5354,7 @@ gTrainers:: @ 8310030
@ TARA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "TARA$", 12
@@ -5366,7 +5366,7 @@ gTrainers:: @ 8310030
@ MISSY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "MISSY$", 12
@@ -5378,7 +5378,7 @@ gTrainers:: @ 8310030
@ ALICE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "ALICE$", 12
@@ -5390,7 +5390,7 @@ gTrainers:: @ 8310030
@ JENNY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "JENNY$", 12
@@ -5402,7 +5402,7 @@ gTrainers:: @ 8310030
@ GRACE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "GRACE$", 12
@@ -5414,7 +5414,7 @@ gTrainers:: @ 8310030
@ TANYA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "TANYA$", 12
@@ -5426,7 +5426,7 @@ gTrainers:: @ 8310030
@ SHARON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "SHARON$", 12
@@ -5438,7 +5438,7 @@ gTrainers:: @ 8310030
@ NIKKI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "NIKKI$", 12
@@ -5450,7 +5450,7 @@ gTrainers:: @ 8310030
@ BRENDA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "BRENDA$", 12
@@ -5462,7 +5462,7 @@ gTrainers:: @ 8310030
@ KATIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "KATIE$", 12
@@ -5474,7 +5474,7 @@ gTrainers:: @ 8310030
@ SUSIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "SUSIE$", 12
@@ -5486,7 +5486,7 @@ gTrainers:: @ 8310030
@ KARA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "KARA$", 12
@@ -5498,7 +5498,7 @@ gTrainers:: @ 8310030
@ DANA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "DANA$", 12
@@ -5510,7 +5510,7 @@ gTrainers:: @ 8310030
@ SIENNA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "SIENNA$", 12
@@ -5522,7 +5522,7 @@ gTrainers:: @ 8310030
@ DEBRA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "DEBRA$", 12
@@ -5534,7 +5534,7 @@ gTrainers:: @ 8310030
@ LINDA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "LINDA$", 12
@@ -5546,7 +5546,7 @@ gTrainers:: @ 8310030
@ KAYLEE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "KAYLEE$", 12
@@ -5558,7 +5558,7 @@ gTrainers:: @ 8310030
@ LAUREL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "LAUREL$", 12
@@ -5570,7 +5570,7 @@ gTrainers:: @ 8310030
@ CARLEE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "CARLEE$", 12
@@ -5582,7 +5582,7 @@ gTrainers:: @ 8310030
@ JENNY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "JENNY$", 12
@@ -5594,7 +5594,7 @@ gTrainers:: @ 8310030
@ JENNY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "JENNY$", 12
@@ -5606,7 +5606,7 @@ gTrainers:: @ 8310030
@ JENNY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "JENNY$", 12
@@ -5618,7 +5618,7 @@ gTrainers:: @ 8310030
@ JENNY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "JENNY$", 12
@@ -5630,7 +5630,7 @@ gTrainers:: @ 8310030
@ HEIDI
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "HEIDI$", 12
@@ -5642,7 +5642,7 @@ gTrainers:: @ 8310030
@ BECKY
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "BECKY$", 12
@@ -5654,7 +5654,7 @@ gTrainers:: @ 8310030
@ CAROL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "CAROL$", 12
@@ -5666,7 +5666,7 @@ gTrainers:: @ 8310030
@ NANCY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "NANCY$", 12
@@ -5678,7 +5678,7 @@ gTrainers:: @ 8310030
@ MARTHA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "MARTHA$", 12
@@ -5690,7 +5690,7 @@ gTrainers:: @ 8310030
@ DIANA_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "DIANA$", 12
@@ -5702,7 +5702,7 @@ gTrainers:: @ 8310030
@ CEDRIC
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "CEDRIC$", 12
@@ -5714,7 +5714,7 @@ gTrainers:: @ 8310030
@ IRENE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "IRENE$", 12
@@ -5726,7 +5726,7 @@ gTrainers:: @ 8310030
@ DIANA_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "DIANA$", 12
@@ -5738,7 +5738,7 @@ gTrainers:: @ 8310030
@ DIANA_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "DIANA$", 12
@@ -5750,7 +5750,7 @@ gTrainers:: @ 8310030
@ DIANA_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "DIANA$", 12
@@ -5762,7 +5762,7 @@ gTrainers:: @ 8310030
@ DIANA_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "DIANA$", 12
@@ -5774,7 +5774,7 @@ gTrainers:: @ 8310030
@ AMY_AND_LIV_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "AMY & LIV$", 12
@@ -5786,7 +5786,7 @@ gTrainers:: @ 8310030
@ AMY_AND_LIV_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "AMY & LIV$", 12
@@ -5798,7 +5798,7 @@ gTrainers:: @ 8310030
@ GINA_AND_MIA_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "GINA & MIA$", 12
@@ -5810,7 +5810,7 @@ gTrainers:: @ 8310030
@ MIU_AND_YUKI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "MIU & YUKI$", 12
@@ -5822,7 +5822,7 @@ gTrainers:: @ 8310030
@ AMY_AND_LIV_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "AMY & LIV$", 12
@@ -5834,7 +5834,7 @@ gTrainers:: @ 8310030
@ GINA_AND_MIA_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "GINA & MIA$", 12
@@ -5846,7 +5846,7 @@ gTrainers:: @ 8310030
@ AMY_AND_LIV_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "AMY & LIV$", 12
@@ -5858,7 +5858,7 @@ gTrainers:: @ 8310030
@ AMY_AND_LIV_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "AMY & LIV$", 12
@@ -5870,7 +5870,7 @@ gTrainers:: @ 8310030
@ AMY_AND_LIV_6
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "AMY & LIV$", 12
@@ -5882,7 +5882,7 @@ gTrainers:: @ 8310030
@ HUEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "HUEY$", 12
@@ -5894,7 +5894,7 @@ gTrainers:: @ 8310030
@ EDMOND
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "EDMOND$", 12
@@ -5906,7 +5906,7 @@ gTrainers:: @ 8310030
@ ERNEST_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "ERNEST$", 12
@@ -5918,7 +5918,7 @@ gTrainers:: @ 8310030
@ DWAYNE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "DWAYNE$", 12
@@ -5930,7 +5930,7 @@ gTrainers:: @ 8310030
@ PHILLIP
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "PHILLIP$", 12
@@ -5942,7 +5942,7 @@ gTrainers:: @ 8310030
@ LEONARD
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "LEONARD$", 12
@@ -5954,7 +5954,7 @@ gTrainers:: @ 8310030
@ DUNCAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "DUNCAN$", 12
@@ -5966,7 +5966,7 @@ gTrainers:: @ 8310030
@ ERNEST_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "ERNEST$", 12
@@ -5978,7 +5978,7 @@ gTrainers:: @ 8310030
@ ERNEST_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "ERNEST$", 12
@@ -5990,7 +5990,7 @@ gTrainers:: @ 8310030
@ ERNEST_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "ERNEST$", 12
@@ -6002,7 +6002,7 @@ gTrainers:: @ 8310030
@ ERNEST_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "ERNEST$", 12
@@ -6014,7 +6014,7 @@ gTrainers:: @ 8310030
@ ELI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "ELI$", 12
@@ -6026,7 +6026,7 @@ gTrainers:: @ 8310030
@ ANNIKA
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_F
.string "ANNIKA$", 12
@@ -6038,7 +6038,7 @@ gTrainers:: @ 8310030
@ JAZMYN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_2
+ .byte TRAINER_CLASS_COOLTRAINER_2
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "JAZMYN$", 12
@@ -6050,7 +6050,7 @@ gTrainers:: @ 8310030
@ JONAS
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "JONAS$", 12
@@ -6062,7 +6062,7 @@ gTrainers:: @ 8310030
@ KAYLEY
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "KAYLEY$", 12
@@ -6074,7 +6074,7 @@ gTrainers:: @ 8310030
@ AURON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "AURON$", 12
@@ -6086,7 +6086,7 @@ gTrainers:: @ 8310030
@ KELVIN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "KELVIN$", 12
@@ -6098,7 +6098,7 @@ gTrainers:: @ 8310030
@ MARLEY
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "MARLEY$", 12
@@ -6110,7 +6110,7 @@ gTrainers:: @ 8310030
@ REYNA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "REYNA$", 12
@@ -6122,7 +6122,7 @@ gTrainers:: @ 8310030
@ HUDSON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "HUDSON$", 12
@@ -6134,7 +6134,7 @@ gTrainers:: @ 8310030
@ CONOR
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "CONOR$", 12
@@ -6146,7 +6146,7 @@ gTrainers:: @ 8310030
@ EDWIN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COLLECTOR
+ .byte TRAINER_CLASS_COLLECTOR
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_COLLECTOR
.string "EDWIN$", 12
@@ -6158,7 +6158,7 @@ gTrainers:: @ 8310030
@ HECTOR
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COLLECTOR
+ .byte TRAINER_CLASS_COLLECTOR
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_COLLECTOR
.string "HECTOR$", 12
@@ -6170,7 +6170,7 @@ gTrainers:: @ 8310030
@ TABITHA_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_MAGMA_ADMIN
+ .byte TRAINER_CLASS_MAGMA_ADMIN
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_ADMIN
.string "TABITHA$", 12
@@ -6182,7 +6182,7 @@ gTrainers:: @ 8310030
@ EDWIN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COLLECTOR
+ .byte TRAINER_CLASS_COLLECTOR
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_COLLECTOR
.string "EDWIN$", 12
@@ -6194,7 +6194,7 @@ gTrainers:: @ 8310030
@ EDWIN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COLLECTOR
+ .byte TRAINER_CLASS_COLLECTOR
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_COLLECTOR
.string "EDWIN$", 12
@@ -6206,7 +6206,7 @@ gTrainers:: @ 8310030
@ EDWIN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COLLECTOR
+ .byte TRAINER_CLASS_COLLECTOR
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_COLLECTOR
.string "EDWIN$", 12
@@ -6218,7 +6218,7 @@ gTrainers:: @ 8310030
@ EDWIN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COLLECTOR
+ .byte TRAINER_CLASS_COLLECTOR
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_COLLECTOR
.string "EDWIN$", 12
@@ -6230,7 +6230,7 @@ gTrainers:: @ 8310030
@ WALLY_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_WALLY
.string "WALLY$", 12
@@ -6242,7 +6242,7 @@ gTrainers:: @ 8310030
@ BRENDAN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6254,7 +6254,7 @@ gTrainers:: @ 8310030
@ BRENDAN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6266,7 +6266,7 @@ gTrainers:: @ 8310030
@ BRENDAN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6278,7 +6278,7 @@ gTrainers:: @ 8310030
@ BRENDAN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6290,7 +6290,7 @@ gTrainers:: @ 8310030
@ BRENDAN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6302,7 +6302,7 @@ gTrainers:: @ 8310030
@ BRENDAN_6
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6314,7 +6314,7 @@ gTrainers:: @ 8310030
@ BRENDAN_7
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6326,7 +6326,7 @@ gTrainers:: @ 8310030
@ BRENDAN_8
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6338,7 +6338,7 @@ gTrainers:: @ 8310030
@ BRENDAN_9
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -6350,7 +6350,7 @@ gTrainers:: @ 8310030
@ MAY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6362,7 +6362,7 @@ gTrainers:: @ 8310030
@ MAY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6374,7 +6374,7 @@ gTrainers:: @ 8310030
@ MAY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6386,7 +6386,7 @@ gTrainers:: @ 8310030
@ MAY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6398,7 +6398,7 @@ gTrainers:: @ 8310030
@ MAY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6410,7 +6410,7 @@ gTrainers:: @ 8310030
@ MAY_6
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6422,7 +6422,7 @@ gTrainers:: @ 8310030
@ MAY_7
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6434,7 +6434,7 @@ gTrainers:: @ 8310030
@ MAY_8
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6446,7 +6446,7 @@ gTrainers:: @ 8310030
@ MAY_9
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -6458,7 +6458,7 @@ gTrainers:: @ 8310030
@ ISAAC_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_M
.string "ISAAC$", 12
@@ -6470,7 +6470,7 @@ gTrainers:: @ 8310030
@ DAVIS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "DAVIS$", 12
@@ -6482,7 +6482,7 @@ gTrainers:: @ 8310030
@ MITCHELL
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "MITCHELL$", 12
@@ -6494,7 +6494,7 @@ gTrainers:: @ 8310030
@ ISAAC_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_M
.string "ISAAC$", 12
@@ -6506,7 +6506,7 @@ gTrainers:: @ 8310030
@ ISAAC_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_M
.string "ISAAC$", 12
@@ -6518,7 +6518,7 @@ gTrainers:: @ 8310030
@ ISAAC_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_M
.string "ISAAC$", 12
@@ -6530,7 +6530,7 @@ gTrainers:: @ 8310030
@ ISAAC_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_M
.string "ISAAC$", 12
@@ -6542,7 +6542,7 @@ gTrainers:: @ 8310030
@ LYDIA_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "LYDIA$", 12
@@ -6554,7 +6554,7 @@ gTrainers:: @ 8310030
@ HALLE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "HALLE$", 12
@@ -6566,7 +6566,7 @@ gTrainers:: @ 8310030
@ GARRISON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "GARRISON$", 12
@@ -6578,7 +6578,7 @@ gTrainers:: @ 8310030
@ LYDIA_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "LYDIA$", 12
@@ -6590,7 +6590,7 @@ gTrainers:: @ 8310030
@ LYDIA_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "LYDIA$", 12
@@ -6602,7 +6602,7 @@ gTrainers:: @ 8310030
@ LYDIA_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "LYDIA$", 12
@@ -6614,7 +6614,7 @@ gTrainers:: @ 8310030
@ LYDIA_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "LYDIA$", 12
@@ -6626,7 +6626,7 @@ gTrainers:: @ 8310030
@ JACKSON_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_M
.string "JACKSON$", 12
@@ -6638,7 +6638,7 @@ gTrainers:: @ 8310030
@ LORENZO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_M
.string "LORENZO$", 12
@@ -6650,7 +6650,7 @@ gTrainers:: @ 8310030
@ SEBASTIAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_M
.string "SEBASTIAN$", 12
@@ -6662,7 +6662,7 @@ gTrainers:: @ 8310030
@ JACKSON_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_M
.string "JACKSON$", 12
@@ -6674,7 +6674,7 @@ gTrainers:: @ 8310030
@ JACKSON_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_M
.string "JACKSON$", 12
@@ -6686,7 +6686,7 @@ gTrainers:: @ 8310030
@ JACKSON_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_M
.string "JACKSON$", 12
@@ -6698,7 +6698,7 @@ gTrainers:: @ 8310030
@ JACKSON_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_M
.string "JACKSON$", 12
@@ -6710,7 +6710,7 @@ gTrainers:: @ 8310030
@ CATHERINE_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_F
.string "CATHERINE$", 12
@@ -6722,7 +6722,7 @@ gTrainers:: @ 8310030
@ JENNA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_F
.string "JENNA$", 12
@@ -6734,7 +6734,7 @@ gTrainers:: @ 8310030
@ SOPHIA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_F
.string "SOPHIA$", 12
@@ -6746,7 +6746,7 @@ gTrainers:: @ 8310030
@ CATHERINE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_F
.string "CATHERINE$", 12
@@ -6758,7 +6758,7 @@ gTrainers:: @ 8310030
@ CATHERINE_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_F
.string "CATHERINE$", 12
@@ -6770,7 +6770,7 @@ gTrainers:: @ 8310030
@ CATHERINE_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_F
.string "CATHERINE$", 12
@@ -6782,7 +6782,7 @@ gTrainers:: @ 8310030
@ CATHERINE_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_RANGER
+ .byte TRAINER_CLASS_PKMN_RANGER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_RANGER_F
.string "CATHERINE$", 12
@@ -6794,7 +6794,7 @@ gTrainers:: @ 8310030
@ JULIO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_M
.string "JULIO$", 12
@@ -6806,7 +6806,7 @@ gTrainers:: @ 8310030
@ GRUNT_27
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_M
.string "GRUNT$", 12
@@ -6818,7 +6818,7 @@ gTrainers:: @ 8310030
@ GRUNT_28
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_F
.string "GRUNT$", 12
@@ -6830,7 +6830,7 @@ gTrainers:: @ 8310030
@ GRUNT_29
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_F
.string "GRUNT$", 12
@@ -6842,7 +6842,7 @@ gTrainers:: @ 8310030
@ GRUNT_30
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -6854,7 +6854,7 @@ gTrainers:: @ 8310030
@ MARC
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "MARC$", 12
@@ -6866,7 +6866,7 @@ gTrainers:: @ 8310030
@ BRENDEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "BRENDEN$", 12
@@ -6878,7 +6878,7 @@ gTrainers:: @ 8310030
@ LILITH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "LILITH$", 12
@@ -6890,7 +6890,7 @@ gTrainers:: @ 8310030
@ CRISTIAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "CRISTIAN$", 12
@@ -6902,7 +6902,7 @@ gTrainers:: @ 8310030
@ SYLVIA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "SYLVIA$", 12
@@ -6914,7 +6914,7 @@ gTrainers:: @ 8310030
@ LEONARDO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "LEONARDO$", 12
@@ -6926,7 +6926,7 @@ gTrainers:: @ 8310030
@ ATHENA
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "ATHENA$", 12
@@ -6938,7 +6938,7 @@ gTrainers:: @ 8310030
@ HARRISON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "HARRISON$", 12
@@ -6950,7 +6950,7 @@ gTrainers:: @ 8310030
@ GRUNT_31
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -6962,7 +6962,7 @@ gTrainers:: @ 8310030
@ CLARENCE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "CLARENCE$", 12
@@ -6974,7 +6974,7 @@ gTrainers:: @ 8310030
@ TERRY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "TERRY$", 12
@@ -6986,7 +6986,7 @@ gTrainers:: @ 8310030
@ NATE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "NATE$", 12
@@ -6998,7 +6998,7 @@ gTrainers:: @ 8310030
@ KATHLEEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HEX_MANIAC
+ .byte TRAINER_CLASS_HEX_MANIAC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_HEX_MANIAC
.string "KATHLEEN$", 12
@@ -7010,7 +7010,7 @@ gTrainers:: @ 8310030
@ CLIFFORD
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "CLIFFORD$", 12
@@ -7022,7 +7022,7 @@ gTrainers:: @ 8310030
@ NICHOLAS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "NICHOLAS$", 12
@@ -7034,7 +7034,7 @@ gTrainers:: @ 8310030
@ GRUNT_32
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_F
.string "GRUNT$", 12
@@ -7046,7 +7046,7 @@ gTrainers:: @ 8310030
@ GRUNT_33
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -7058,7 +7058,7 @@ gTrainers:: @ 8310030
@ GRUNT_34
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -7070,7 +7070,7 @@ gTrainers:: @ 8310030
@ GRUNT_35
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -7082,7 +7082,7 @@ gTrainers:: @ 8310030
@ GRUNT_36
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -7094,7 +7094,7 @@ gTrainers:: @ 8310030
@ MACEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "MACEY$", 12
@@ -7106,7 +7106,7 @@ gTrainers:: @ 8310030
@ BRENDAN_10
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -7118,7 +7118,7 @@ gTrainers:: @ 8310030
@ BRENDAN_11
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -7130,7 +7130,7 @@ gTrainers:: @ 8310030
@ PAXTON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_M
.string "PAXTON$", 12
@@ -7142,7 +7142,7 @@ gTrainers:: @ 8310030
@ ISABELLA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_F
.string "ISABELLA$", 12
@@ -7154,7 +7154,7 @@ gTrainers:: @ 8310030
@ GRUNT_37
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_AQUA
+ .byte TRAINER_CLASS_TEAM_AQUA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_AQUA @ gender flag and encounter music
.byte TRAINER_PIC_AQUA_GRUNT_F
.string "GRUNT$", 12
@@ -7166,7 +7166,7 @@ gTrainers:: @ 8310030
@ TABITHA_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_MAGMA_ADMIN
+ .byte TRAINER_CLASS_MAGMA_ADMIN
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_ADMIN
.string "TABITHA$", 12
@@ -7178,7 +7178,7 @@ gTrainers:: @ 8310030
@ JONATHAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "JONATHAN$", 12
@@ -7190,7 +7190,7 @@ gTrainers:: @ 8310030
@ BRENDAN_12
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -7202,7 +7202,7 @@ gTrainers:: @ 8310030
@ MAY_10
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -7214,7 +7214,7 @@ gTrainers:: @ 8310030
@ MAXIE_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_MAGMA_LEADER
+ .byte TRAINER_CLASS_MAGMA_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_LEADER_MAXIE
.string "MAXIE$", 12
@@ -7226,7 +7226,7 @@ gTrainers:: @ 8310030
@ MAXIE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_MAGMA_LEADER
+ .byte TRAINER_CLASS_MAGMA_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_LEADER_MAXIE
.string "MAXIE$", 12
@@ -7238,7 +7238,7 @@ gTrainers:: @ 8310030
@ TIANA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "TIANA$", 12
@@ -7250,7 +7250,7 @@ gTrainers:: @ 8310030
@ HALEY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "HALEY$", 12
@@ -7262,7 +7262,7 @@ gTrainers:: @ 8310030
@ JANICE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "JANICE$", 12
@@ -7274,7 +7274,7 @@ gTrainers:: @ 8310030
@ VIVI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_WINSTRATE
+ .byte TRAINER_CLASS_WINSTRATE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "VIVI$", 12
@@ -7286,7 +7286,7 @@ gTrainers:: @ 8310030
@ HALEY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "HALEY$", 12
@@ -7298,7 +7298,7 @@ gTrainers:: @ 8310030
@ HALEY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "HALEY$", 12
@@ -7310,7 +7310,7 @@ gTrainers:: @ 8310030
@ HALEY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "HALEY$", 12
@@ -7322,7 +7322,7 @@ gTrainers:: @ 8310030
@ HALEY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "HALEY$", 12
@@ -7334,7 +7334,7 @@ gTrainers:: @ 8310030
@ SALLY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "SALLY$", 12
@@ -7346,7 +7346,7 @@ gTrainers:: @ 8310030
@ ROBIN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "ROBIN$", 12
@@ -7358,7 +7358,7 @@ gTrainers:: @ 8310030
@ ANDREA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "ANDREA$", 12
@@ -7370,7 +7370,7 @@ gTrainers:: @ 8310030
@ CRISSY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_LASS
+ .byte TRAINER_CLASS_LASS
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LASS
.string "CRISSY$", 12
@@ -7382,7 +7382,7 @@ gTrainers:: @ 8310030
@ RICK
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "RICK$", 12
@@ -7394,7 +7394,7 @@ gTrainers:: @ 8310030
@ LYLE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "LYLE$", 12
@@ -7406,7 +7406,7 @@ gTrainers:: @ 8310030
@ JOSE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "JOSE$", 12
@@ -7418,7 +7418,7 @@ gTrainers:: @ 8310030
@ DOUG
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "DOUG$", 12
@@ -7430,7 +7430,7 @@ gTrainers:: @ 8310030
@ GREG
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "GREG$", 12
@@ -7442,7 +7442,7 @@ gTrainers:: @ 8310030
@ KENT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "KENT$", 12
@@ -7454,7 +7454,7 @@ gTrainers:: @ 8310030
@ JAMES_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "JAMES$", 12
@@ -7466,7 +7466,7 @@ gTrainers:: @ 8310030
@ JAMES_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "JAMES$", 12
@@ -7478,7 +7478,7 @@ gTrainers:: @ 8310030
@ JAMES_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "JAMES$", 12
@@ -7490,7 +7490,7 @@ gTrainers:: @ 8310030
@ JAMES_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "JAMES$", 12
@@ -7502,7 +7502,7 @@ gTrainers:: @ 8310030
@ JAMES_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_CATCHER
+ .byte TRAINER_CLASS_BUG_CATCHER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BUG_CATCHER
.string "JAMES$", 12
@@ -7514,7 +7514,7 @@ gTrainers:: @ 8310030
@ BRICE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "BRICE$", 12
@@ -7526,7 +7526,7 @@ gTrainers:: @ 8310030
@ TRENT_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "TRENT$", 12
@@ -7538,7 +7538,7 @@ gTrainers:: @ 8310030
@ LENNY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "LENNY$", 12
@@ -7550,7 +7550,7 @@ gTrainers:: @ 8310030
@ LUCAS_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "LUCAS$", 12
@@ -7562,7 +7562,7 @@ gTrainers:: @ 8310030
@ ALAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "ALAN$", 12
@@ -7574,7 +7574,7 @@ gTrainers:: @ 8310030
@ CLARK
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "CLARK$", 12
@@ -7586,7 +7586,7 @@ gTrainers:: @ 8310030
@ ERIC
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "ERIC$", 12
@@ -7598,7 +7598,7 @@ gTrainers:: @ 8310030
@ LUCAS_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "LUCAS$", 12
@@ -7610,7 +7610,7 @@ gTrainers:: @ 8310030
@ MIKE_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "MIKE$", 12
@@ -7622,7 +7622,7 @@ gTrainers:: @ 8310030
@ MIKE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "MIKE$", 12
@@ -7634,7 +7634,7 @@ gTrainers:: @ 8310030
@ TRENT_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "TRENT$", 12
@@ -7646,7 +7646,7 @@ gTrainers:: @ 8310030
@ TRENT_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "TRENT$", 12
@@ -7658,7 +7658,7 @@ gTrainers:: @ 8310030
@ TRENT_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "TRENT$", 12
@@ -7670,7 +7670,7 @@ gTrainers:: @ 8310030
@ TRENT_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "TRENT$", 12
@@ -7682,7 +7682,7 @@ gTrainers:: @ 8310030
@ DEZ_AND_LUKE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
+ .byte TRAINER_CLASS_YOUNG_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_YOUNG_COUPLE
.string "DEZ & LUKE$", 12
@@ -7694,7 +7694,7 @@ gTrainers:: @ 8310030
@ LEA_AND_JED
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
+ .byte TRAINER_CLASS_YOUNG_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_YOUNG_COUPLE
.string "LEA & JED$", 12
@@ -7706,7 +7706,7 @@ gTrainers:: @ 8310030
@ KIRA_AND_DAN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
+ .byte TRAINER_CLASS_YOUNG_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_YOUNG_COUPLE
.string "KIRA & DAN$", 12
@@ -7718,7 +7718,7 @@ gTrainers:: @ 8310030
@ KIRA_AND_DAN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
+ .byte TRAINER_CLASS_YOUNG_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_YOUNG_COUPLE
.string "KIRA & DAN$", 12
@@ -7730,7 +7730,7 @@ gTrainers:: @ 8310030
@ KIRA_AND_DAN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
+ .byte TRAINER_CLASS_YOUNG_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_YOUNG_COUPLE
.string "KIRA & DAN$", 12
@@ -7742,7 +7742,7 @@ gTrainers:: @ 8310030
@ KIRA_AND_DAN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
+ .byte TRAINER_CLASS_YOUNG_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_YOUNG_COUPLE
.string "KIRA & DAN$", 12
@@ -7754,7 +7754,7 @@ gTrainers:: @ 8310030
@ KIRA_AND_DAN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
+ .byte TRAINER_CLASS_YOUNG_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_YOUNG_COUPLE
.string "KIRA & DAN$", 12
@@ -7766,7 +7766,7 @@ gTrainers:: @ 8310030
@ JOHANNA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "JOHANNA$", 12
@@ -7778,7 +7778,7 @@ gTrainers:: @ 8310030
@ GERALD
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "GERALD$", 12
@@ -7790,7 +7790,7 @@ gTrainers:: @ 8310030
@ VIVIAN
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "VIVIAN$", 12
@@ -7802,7 +7802,7 @@ gTrainers:: @ 8310030
@ DANIELLE
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "DANIELLE$", 12
@@ -7814,7 +7814,7 @@ gTrainers:: @ 8310030
@ HIDEO
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "HIDEO$", 12
@@ -7826,7 +7826,7 @@ gTrainers:: @ 8310030
@ KEIGO
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "KEIGO$", 12
@@ -7838,7 +7838,7 @@ gTrainers:: @ 8310030
@ RILEY
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "RILEY$", 12
@@ -7850,7 +7850,7 @@ gTrainers:: @ 8310030
@ FLINT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "FLINT$", 12
@@ -7862,7 +7862,7 @@ gTrainers:: @ 8310030
@ ASHLEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "ASHLEY$", 12
@@ -7874,7 +7874,7 @@ gTrainers:: @ 8310030
@ WALLY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_WALLY
.string "WALLY$", 12
@@ -7886,7 +7886,7 @@ gTrainers:: @ 8310030
@ WALLY_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_WALLY
.string "WALLY$", 12
@@ -7898,7 +7898,7 @@ gTrainers:: @ 8310030
@ WALLY_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_WALLY
.string "WALLY$", 12
@@ -7910,7 +7910,7 @@ gTrainers:: @ 8310030
@ WALLY_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_WALLY
.string "WALLY$", 12
@@ -7922,7 +7922,7 @@ gTrainers:: @ 8310030
@ WALLY_6
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_WALLY
.string "WALLY$", 12
@@ -7934,7 +7934,7 @@ gTrainers:: @ 8310030
@ BRENDAN_13
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -7946,7 +7946,7 @@ gTrainers:: @ 8310030
@ BRENDAN_14
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -7958,7 +7958,7 @@ gTrainers:: @ 8310030
@ BRENDAN_15
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_BRENDAN
.string "BRENDAN$", 12
@@ -7970,7 +7970,7 @@ gTrainers:: @ 8310030
@ MAY_11
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -7982,7 +7982,7 @@ gTrainers:: @ 8310030
@ MAY_12
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -7994,7 +7994,7 @@ gTrainers:: @ 8310030
@ MAY_13
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -8006,7 +8006,7 @@ gTrainers:: @ 8310030
@ JONAH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "JONAH$", 12
@@ -8018,7 +8018,7 @@ gTrainers:: @ 8310030
@ HENRY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "HENRY$", 12
@@ -8030,7 +8030,7 @@ gTrainers:: @ 8310030
@ ROGER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "ROGER$", 12
@@ -8042,7 +8042,7 @@ gTrainers:: @ 8310030
@ ALEXA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "ALEXA$", 12
@@ -8054,7 +8054,7 @@ gTrainers:: @ 8310030
@ RUBEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "RUBEN$", 12
@@ -8066,7 +8066,7 @@ gTrainers:: @ 8310030
@ KOJI_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "KOJI$", 12
@@ -8078,7 +8078,7 @@ gTrainers:: @ 8310030
@ WAYNE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "WAYNE$", 12
@@ -8090,7 +8090,7 @@ gTrainers:: @ 8310030
@ AIDAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "AIDAN$", 12
@@ -8102,7 +8102,7 @@ gTrainers:: @ 8310030
@ REED
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "REED$", 12
@@ -8114,7 +8114,7 @@ gTrainers:: @ 8310030
@ TISHA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "TISHA$", 12
@@ -8126,7 +8126,7 @@ gTrainers:: @ 8310030
@ TORI_AND_TIA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TWINS
+ .byte TRAINER_CLASS_TWINS
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_TWINS
.string "TORI & TIA$", 12
@@ -8138,7 +8138,7 @@ gTrainers:: @ 8310030
@ KIM_AND_IRIS
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_SR_AND_JR
+ .byte TRAINER_CLASS_SR_AND_JR
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_SR_AND_JR
.string "KIM & IRIS$", 12
@@ -8150,7 +8150,7 @@ gTrainers:: @ 8310030
@ TYRA_AND_IVY
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_SR_AND_JR
+ .byte TRAINER_CLASS_SR_AND_JR
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_SR_AND_JR
.string "TYRA & IVY$", 12
@@ -8162,7 +8162,7 @@ gTrainers:: @ 8310030
@ MEL_AND_PAUL
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNG_COUPLE
+ .byte TRAINER_CLASS_YOUNG_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_YOUNG_COUPLE
.string "MEL & PAUL$", 12
@@ -8174,7 +8174,7 @@ gTrainers:: @ 8310030
@ JOHN_AND_JAY_1
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_OLD_COUPLE
+ .byte TRAINER_CLASS_OLD_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_OLD_COUPLE
.string "JOHN & JAY$", 12
@@ -8186,7 +8186,7 @@ gTrainers:: @ 8310030
@ JOHN_AND_JAY_2
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_OLD_COUPLE
+ .byte TRAINER_CLASS_OLD_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_OLD_COUPLE
.string "JOHN & JAY$", 12
@@ -8198,7 +8198,7 @@ gTrainers:: @ 8310030
@ JOHN_AND_JAY_3
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_OLD_COUPLE
+ .byte TRAINER_CLASS_OLD_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_OLD_COUPLE
.string "JOHN & JAY$", 12
@@ -8210,7 +8210,7 @@ gTrainers:: @ 8310030
@ JOHN_AND_JAY_4
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_OLD_COUPLE
+ .byte TRAINER_CLASS_OLD_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_OLD_COUPLE
.string "JOHN & JAY$", 12
@@ -8222,7 +8222,7 @@ gTrainers:: @ 8310030
@ JOHN_AND_JAY_5
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_OLD_COUPLE
+ .byte TRAINER_CLASS_OLD_COUPLE
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_OLD_COUPLE
.string "JOHN & JAY$", 12
@@ -8234,7 +8234,7 @@ gTrainers:: @ 8310030
@ RELI_AND_IAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO
+ .byte TRAINER_CLASS_SIS_AND_BRO
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SIS_AND_BRO
.string "RELI & IAN$", 12
@@ -8246,7 +8246,7 @@ gTrainers:: @ 8310030
@ LILA_AND_ROY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO
+ .byte TRAINER_CLASS_SIS_AND_BRO
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SIS_AND_BRO
.string "LILA & ROY$", 12
@@ -8258,7 +8258,7 @@ gTrainers:: @ 8310030
@ LILA_AND_ROY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO
+ .byte TRAINER_CLASS_SIS_AND_BRO
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SIS_AND_BRO
.string "LILA & ROY$", 12
@@ -8270,7 +8270,7 @@ gTrainers:: @ 8310030
@ LILA_AND_ROY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO
+ .byte TRAINER_CLASS_SIS_AND_BRO
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SIS_AND_BRO
.string "LILA & ROY$", 12
@@ -8282,7 +8282,7 @@ gTrainers:: @ 8310030
@ LILA_AND_ROY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO
+ .byte TRAINER_CLASS_SIS_AND_BRO
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SIS_AND_BRO
.string "LILA & ROY$", 12
@@ -8294,7 +8294,7 @@ gTrainers:: @ 8310030
@ LILA_AND_ROY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO
+ .byte TRAINER_CLASS_SIS_AND_BRO
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SIS_AND_BRO
.string "LILA & ROY$", 12
@@ -8306,7 +8306,7 @@ gTrainers:: @ 8310030
@ LISA_AND_RAY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SIS_AND_BRO
+ .byte TRAINER_CLASS_SIS_AND_BRO
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SIS_AND_BRO
.string "LISA & RAY$", 12
@@ -8318,7 +8318,7 @@ gTrainers:: @ 8310030
@ CHRIS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "CHRIS$", 12
@@ -8330,7 +8330,7 @@ gTrainers:: @ 8310030
@ DAWSON
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_RICH_BOY
+ .byte TRAINER_CLASS_RICH_BOY
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_RICH_BOY
.string "DAWSON$", 12
@@ -8342,7 +8342,7 @@ gTrainers:: @ 8310030
@ SARAH
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_LADY
+ .byte TRAINER_CLASS_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LADY
.string "SARAH$", 12
@@ -8354,7 +8354,7 @@ gTrainers:: @ 8310030
@ DARIAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "DARIAN$", 12
@@ -8366,7 +8366,7 @@ gTrainers:: @ 8310030
@ HAILEY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_1
+ .byte TRAINER_CLASS_TUBER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_F
.string "HAILEY$", 12
@@ -8378,7 +8378,7 @@ gTrainers:: @ 8310030
@ CHANDLER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TUBER_2
+ .byte TRAINER_CLASS_TUBER_2
.byte TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_TUBER_M
.string "CHANDLER$", 12
@@ -8390,7 +8390,7 @@ gTrainers:: @ 8310030
@ KALEB
.byte F_TRAINER_PARTY_HELD_ITEM @ party type flags
- .byte TRAINER_CLASS_NAME_POKEFAN
+ .byte TRAINER_CLASS_POKEFAN
.byte TRAINER_ENCOUNTER_MUSIC_TWINS @ gender flag and encounter music
.byte TRAINER_PIC_WINSTRATE_M
.string "KALEB$", 12
@@ -8402,7 +8402,7 @@ gTrainers:: @ 8310030
@ JOSEPH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "JOSEPH$", 12
@@ -8414,7 +8414,7 @@ gTrainers:: @ 8310030
@ ALYSSA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_CYCLING_TRIATHLETE_F
.string "ALYSSA$", 12
@@ -8426,7 +8426,7 @@ gTrainers:: @ 8310030
@ MARCOS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "MARCOS$", 12
@@ -8438,7 +8438,7 @@ gTrainers:: @ 8310030
@ RHETT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "RHETT$", 12
@@ -8450,7 +8450,7 @@ gTrainers:: @ 8310030
@ TYRON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "TYRON$", 12
@@ -8462,7 +8462,7 @@ gTrainers:: @ 8310030
@ CELINA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "CELINA$", 12
@@ -8474,7 +8474,7 @@ gTrainers:: @ 8310030
@ BIANCA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "BIANCA$", 12
@@ -8486,7 +8486,7 @@ gTrainers:: @ 8310030
@ HAYDEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "HAYDEN$", 12
@@ -8498,7 +8498,7 @@ gTrainers:: @ 8310030
@ SOPHIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "SOPHIE$", 12
@@ -8510,7 +8510,7 @@ gTrainers:: @ 8310030
@ COBY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "COBY$", 12
@@ -8522,7 +8522,7 @@ gTrainers:: @ 8310030
@ LAWRENCE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "LAWRENCE$", 12
@@ -8534,7 +8534,7 @@ gTrainers:: @ 8310030
@ WYATT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_POKEMANIAC
+ .byte TRAINER_CLASS_POKEMANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_POKEMANIAC
.string "WYATT$", 12
@@ -8546,7 +8546,7 @@ gTrainers:: @ 8310030
@ ANGELINA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "ANGELINA$", 12
@@ -8558,7 +8558,7 @@ gTrainers:: @ 8310030
@ KAI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FISHERMAN
+ .byte TRAINER_CLASS_FISHERMAN
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_FISHERMAN
.string "KAI$", 12
@@ -8570,7 +8570,7 @@ gTrainers:: @ 8310030
@ CHARLOTTE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "CHARLOTTE$", 12
@@ -8582,7 +8582,7 @@ gTrainers:: @ 8310030
@ DEANDRE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "DEANDRE$", 12
@@ -8594,7 +8594,7 @@ gTrainers:: @ 8310030
@ GRUNT_38
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8606,7 +8606,7 @@ gTrainers:: @ 8310030
@ GRUNT_39
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8618,7 +8618,7 @@ gTrainers:: @ 8310030
@ GRUNT_40
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8630,7 +8630,7 @@ gTrainers:: @ 8310030
@ GRUNT_41
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8642,7 +8642,7 @@ gTrainers:: @ 8310030
@ GRUNT_42
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8654,7 +8654,7 @@ gTrainers:: @ 8310030
@ GRUNT_43
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8666,7 +8666,7 @@ gTrainers:: @ 8310030
@ GRUNT_44
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8678,7 +8678,7 @@ gTrainers:: @ 8310030
@ GRUNT_45
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8690,7 +8690,7 @@ gTrainers:: @ 8310030
@ GRUNT_46
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8702,7 +8702,7 @@ gTrainers:: @ 8310030
@ GRUNT_47
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8714,7 +8714,7 @@ gTrainers:: @ 8310030
@ GRUNT_48
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8726,7 +8726,7 @@ gTrainers:: @ 8310030
@ GRUNT_49
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8738,7 +8738,7 @@ gTrainers:: @ 8310030
@ GRUNT_50
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_M
.string "GRUNT$", 12
@@ -8750,7 +8750,7 @@ gTrainers:: @ 8310030
@ GRUNT_51
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_F
.string "GRUNT$", 12
@@ -8762,7 +8762,7 @@ gTrainers:: @ 8310030
@ GRUNT_52
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_F
.string "GRUNT$", 12
@@ -8774,7 +8774,7 @@ gTrainers:: @ 8310030
@ GRUNT_53
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TEAM_MAGMA
+ .byte TRAINER_CLASS_TEAM_MAGMA
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_GRUNT_F
.string "GRUNT$", 12
@@ -8786,7 +8786,7 @@ gTrainers:: @ 8310030
@ TABITHA_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_MAGMA_ADMIN
+ .byte TRAINER_CLASS_MAGMA_ADMIN
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_ADMIN
.string "TABITHA$", 12
@@ -8798,7 +8798,7 @@ gTrainers:: @ 8310030
@ DARCY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "DARCY$", 12
@@ -8810,7 +8810,7 @@ gTrainers:: @ 8310030
@ MAXIE_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_MAGMA_LEADER
+ .byte TRAINER_CLASS_MAGMA_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MAGMA @ gender flag and encounter music
.byte TRAINER_PIC_MAGMA_LEADER_MAXIE
.string "MAXIE$", 12
@@ -8822,7 +8822,7 @@ gTrainers:: @ 8310030
@ PETE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_M
+ .byte TRAINER_CLASS_SWIMMER_M
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_M
.string "PETE$", 12
@@ -8834,7 +8834,7 @@ gTrainers:: @ 8310030
@ ISABELLE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SWIMMER_F
+ .byte TRAINER_CLASS_SWIMMER_F
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMER_F
.string "ISABELLE$", 12
@@ -8846,7 +8846,7 @@ gTrainers:: @ 8310030
@ ANDRES_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "ANDRES$", 12
@@ -8858,7 +8858,7 @@ gTrainers:: @ 8310030
@ JOSUE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "JOSUE$", 12
@@ -8870,7 +8870,7 @@ gTrainers:: @ 8310030
@ CAMRON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "CAMRON$", 12
@@ -8882,7 +8882,7 @@ gTrainers:: @ 8310030
@ CORY_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "CORY$", 12
@@ -8894,7 +8894,7 @@ gTrainers:: @ 8310030
@ CAROLINA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "CAROLINA$", 12
@@ -8906,7 +8906,7 @@ gTrainers:: @ 8310030
@ ELIJAH
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "ELIJAH$", 12
@@ -8918,7 +8918,7 @@ gTrainers:: @ 8310030
@ CELIA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PICNICKER
+ .byte TRAINER_CLASS_PICNICKER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_GIRL @ gender flag and encounter music
.byte TRAINER_PIC_PICNICKER
.string "CELIA$", 12
@@ -8930,7 +8930,7 @@ gTrainers:: @ 8310030
@ BRYAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "BRYAN$", 12
@@ -8942,7 +8942,7 @@ gTrainers:: @ 8310030
@ BRANDEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_CAMPER
+ .byte TRAINER_CLASS_CAMPER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_CAMPER
.string "BRANDEN$", 12
@@ -8954,7 +8954,7 @@ gTrainers:: @ 8310030
@ BRYANT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "BRYANT$", 12
@@ -8966,7 +8966,7 @@ gTrainers:: @ 8310030
@ SHAYLA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_AROMA_LADY
+ .byte TRAINER_CLASS_AROMA_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_AROMA_LADY
.string "SHAYLA$", 12
@@ -8978,7 +8978,7 @@ gTrainers:: @ 8310030
@ KYRA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_F
.string "KYRA$", 12
@@ -8990,7 +8990,7 @@ gTrainers:: @ 8310030
@ JAIDEN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_NINJA_BOY
+ .byte TRAINER_CLASS_NINJA_BOY
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_NINJA_BOY
.string "JAIDEN$", 12
@@ -9002,7 +9002,7 @@ gTrainers:: @ 8310030
@ ALIX
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "ALIX$", 12
@@ -9014,7 +9014,7 @@ gTrainers:: @ 8310030
@ HELENE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "HELENE$", 12
@@ -9026,7 +9026,7 @@ gTrainers:: @ 8310030
@ MARLENE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "MARLENE$", 12
@@ -9038,7 +9038,7 @@ gTrainers:: @ 8310030
@ DEVAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "DEVAN$", 12
@@ -9050,7 +9050,7 @@ gTrainers:: @ 8310030
@ JOHNSON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_YOUNGSTER
+ .byte TRAINER_CLASS_YOUNGSTER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_YOUNGSTER
.string "JOHNSON$", 12
@@ -9062,7 +9062,7 @@ gTrainers:: @ 8310030
@ MELINA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_RUNNING_TRIATHLETE_F
.string "MELINA$", 12
@@ -9074,7 +9074,7 @@ gTrainers:: @ 8310030
@ BRANDI
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "BRANDI$", 12
@@ -9086,7 +9086,7 @@ gTrainers:: @ 8310030
@ AISHA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "AISHA$", 12
@@ -9098,7 +9098,7 @@ gTrainers:: @ 8310030
@ MAKAYLA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_EXPERT
+ .byte TRAINER_CLASS_EXPERT
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_EXPERT_F
.string "MAKAYLA$", 12
@@ -9110,7 +9110,7 @@ gTrainers:: @ 8310030
@ FABIAN
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "FABIAN$", 12
@@ -9122,7 +9122,7 @@ gTrainers:: @ 8310030
@ DAYTON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_KINDLER
+ .byte TRAINER_CLASS_KINDLER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_KINDLER
.string "DAYTON$", 12
@@ -9134,7 +9134,7 @@ gTrainers:: @ 8310030
@ RACHEL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PARASOL_LADY
+ .byte TRAINER_CLASS_PARASOL_LADY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_PARASOL_LADY
.string "RACHEL$", 12
@@ -9146,7 +9146,7 @@ gTrainers:: @ 8310030
@ LEONEL
.byte F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_M
.string "LEONEL$", 12
@@ -9158,7 +9158,7 @@ gTrainers:: @ 8310030
@ CALLIE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BATTLE_GIRL
+ .byte TRAINER_CLASS_BATTLE_GIRL
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BATTLE_GIRL
.string "CALLIE$", 12
@@ -9170,7 +9170,7 @@ gTrainers:: @ 8310030
@ CALE
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "CALE$", 12
@@ -9182,7 +9182,7 @@ gTrainers:: @ 8310030
@ MYLES
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_M
.string "MYLES$", 12
@@ -9194,7 +9194,7 @@ gTrainers:: @ 8310030
@ PAT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "PAT$", 12
@@ -9206,7 +9206,7 @@ gTrainers:: @ 8310030
@ CRISTIN_1
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "CRISTIN$", 12
@@ -9218,7 +9218,7 @@ gTrainers:: @ 8310030
@ MAY_14
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -9230,7 +9230,7 @@ gTrainers:: @ 8310030
@ MAY_15
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_MAY
.string "MAY$", 12
@@ -9242,7 +9242,7 @@ gTrainers:: @ 8310030
@ ROXANNE_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_ROXANNE
.string "ROXANNE$", 12
@@ -9254,7 +9254,7 @@ gTrainers:: @ 8310030
@ ROXANNE_3
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_ROXANNE
.string "ROXANNE$", 12
@@ -9266,7 +9266,7 @@ gTrainers:: @ 8310030
@ ROXANNE_4
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_ROXANNE
.string "ROXANNE$", 12
@@ -9278,7 +9278,7 @@ gTrainers:: @ 8310030
@ ROXANNE_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_ROXANNE
.string "ROXANNE$", 12
@@ -9290,7 +9290,7 @@ gTrainers:: @ 8310030
@ BRAWLY_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_BRAWLY
.string "BRAWLY$", 12
@@ -9302,7 +9302,7 @@ gTrainers:: @ 8310030
@ BRAWLY_3
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_BRAWLY
.string "BRAWLY$", 12
@@ -9314,7 +9314,7 @@ gTrainers:: @ 8310030
@ BRAWLY_4
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_BRAWLY
.string "BRAWLY$", 12
@@ -9326,7 +9326,7 @@ gTrainers:: @ 8310030
@ BRAWLY_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_BRAWLY
.string "BRAWLY$", 12
@@ -9338,7 +9338,7 @@ gTrainers:: @ 8310030
@ WATTSON_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WATTSON
.string "WATTSON$", 12
@@ -9350,7 +9350,7 @@ gTrainers:: @ 8310030
@ WATTSON_3
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WATTSON
.string "WATTSON$", 12
@@ -9362,7 +9362,7 @@ gTrainers:: @ 8310030
@ WATTSON_4
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WATTSON
.string "WATTSON$", 12
@@ -9374,7 +9374,7 @@ gTrainers:: @ 8310030
@ WATTSON_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WATTSON
.string "WATTSON$", 12
@@ -9386,7 +9386,7 @@ gTrainers:: @ 8310030
@ FLANNERY_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_FLANNERY
.string "FLANNERY$", 12
@@ -9398,7 +9398,7 @@ gTrainers:: @ 8310030
@ FLANNERY_3
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_FLANNERY
.string "FLANNERY$", 12
@@ -9410,7 +9410,7 @@ gTrainers:: @ 8310030
@ FLANNERY_4
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_FLANNERY
.string "FLANNERY$", 12
@@ -9422,7 +9422,7 @@ gTrainers:: @ 8310030
@ FLANNERY_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_FLANNERY
.string "FLANNERY$", 12
@@ -9434,7 +9434,7 @@ gTrainers:: @ 8310030
@ NORMAN_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_NORMAN
.string "NORMAN$", 12
@@ -9446,7 +9446,7 @@ gTrainers:: @ 8310030
@ NORMAN_3
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_NORMAN
.string "NORMAN$", 12
@@ -9458,7 +9458,7 @@ gTrainers:: @ 8310030
@ NORMAN_4
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_NORMAN
.string "NORMAN$", 12
@@ -9470,7 +9470,7 @@ gTrainers:: @ 8310030
@ NORMAN_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_NORMAN
.string "NORMAN$", 12
@@ -9482,7 +9482,7 @@ gTrainers:: @ 8310030
@ WINONA_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WINONA
.string "WINONA$", 12
@@ -9494,7 +9494,7 @@ gTrainers:: @ 8310030
@ WINONA_3
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WINONA
.string "WINONA$", 12
@@ -9506,7 +9506,7 @@ gTrainers:: @ 8310030
@ WINONA_4
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WINONA
.string "WINONA$", 12
@@ -9518,7 +9518,7 @@ gTrainers:: @ 8310030
@ WINONA_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_WINONA
.string "WINONA$", 12
@@ -9530,7 +9530,7 @@ gTrainers:: @ 8310030
@ TATE_AND_LIZA_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_TATE_AND_LIZA
.string "TATE&LIZA$", 12
@@ -9542,7 +9542,7 @@ gTrainers:: @ 8310030
@ TATE_AND_LIZA_3
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_TATE_AND_LIZA
.string "TATE&LIZA$", 12
@@ -9554,7 +9554,7 @@ gTrainers:: @ 8310030
@ TATE_AND_LIZA_4
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_TATE_AND_LIZA
.string "TATE&LIZA$", 12
@@ -9566,7 +9566,7 @@ gTrainers:: @ 8310030
@ TATE_AND_LIZA_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_TATE_AND_LIZA
.string "TATE&LIZA$", 12
@@ -9578,7 +9578,7 @@ gTrainers:: @ 8310030
@ JUAN_2
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_JUAN
.string "JUAN$", 12
@@ -9590,7 +9590,7 @@ gTrainers:: @ 8310030
@ JUAN_3
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_JUAN
.string "JUAN$", 12
@@ -9602,7 +9602,7 @@ gTrainers:: @ 8310030
@ JUAN_4
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_JUAN
.string "JUAN$", 12
@@ -9614,7 +9614,7 @@ gTrainers:: @ 8310030
@ JUAN_5
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_LEADER
+ .byte TRAINER_CLASS_LEADER
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEADER_JUAN
.string "JUAN$", 12
@@ -9626,7 +9626,7 @@ gTrainers:: @ 8310030
@ ANGELO
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_BUG_MANIAC
+ .byte TRAINER_CLASS_BUG_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS @ gender flag and encounter music
.byte TRAINER_PIC_BUG_MANIAC
.string "ANGELO$", 12
@@ -9638,7 +9638,7 @@ gTrainers:: @ 8310030
@ DARIUS
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BIRD_KEEPER
+ .byte TRAINER_CLASS_BIRD_KEEPER
.byte TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_BIRD_KEEPER
.string "DARIUS$", 12
@@ -9650,7 +9650,7 @@ gTrainers:: @ 8310030
@ STEVEN
.byte F_TRAINER_PARTY_HELD_ITEM | F_TRAINER_PARTY_CUSTOM_MOVESET @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_STEVEN
.string "STEVEN$", 12
@@ -9662,7 +9662,7 @@ gTrainers:: @ 8310030
@ ANABEL
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SALON_MAIDEN
+ .byte TRAINER_CLASS_SALON_MAIDEN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SALON_MAIDEN_ANABEL
.string "ANABEL$", 12
@@ -9674,7 +9674,7 @@ gTrainers:: @ 8310030
@ TUCKER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_DOME_ACE
+ .byte TRAINER_CLASS_DOME_ACE
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_DOME_ACE_TUCKER
.string "TUCKER$", 12
@@ -9686,7 +9686,7 @@ gTrainers:: @ 8310030
@ SPENSER
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PALACE_MAVEN
+ .byte TRAINER_CLASS_PALACE_MAVEN
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_PALACE_MAVEN_SPENSER
.string "SPENSER$", 12
@@ -9698,7 +9698,7 @@ gTrainers:: @ 8310030
@ GRETA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_ARENA_TYCOON
+ .byte TRAINER_CLASS_ARENA_TYCOON
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_ARENA_TYCOON_GRETA
.string "GRETA$", 12
@@ -9710,7 +9710,7 @@ gTrainers:: @ 8310030
@ NOLAND
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_FACTORY_HEAD
+ .byte TRAINER_CLASS_FACTORY_HEAD
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_FACTORY_HEAD_NOLAND
.string "NOLAND$", 12
@@ -9722,7 +9722,7 @@ gTrainers:: @ 8310030
@ LUCY
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PIKE_QUEEN
+ .byte TRAINER_CLASS_PIKE_QUEEN
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_PIKE_QUEEN_LUCY
.string "LUCY$", 12
@@ -9734,7 +9734,7 @@ gTrainers:: @ 8310030
@ BRANDON
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PYRAMID_KING
+ .byte TRAINER_CLASS_PYRAMID_KING
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_PYRAMID_KING_BRANDON
.string "BRANDON$", 12
@@ -9746,7 +9746,7 @@ gTrainers:: @ 8310030
@ ANDRES_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "ANDRES$", 12
@@ -9758,7 +9758,7 @@ gTrainers:: @ 8310030
@ ANDRES_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "ANDRES$", 12
@@ -9770,7 +9770,7 @@ gTrainers:: @ 8310030
@ ANDRES_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "ANDRES$", 12
@@ -9782,7 +9782,7 @@ gTrainers:: @ 8310030
@ ANDRES_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_RUIN_MANIAC
+ .byte TRAINER_CLASS_RUIN_MANIAC
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_RUIN_MANIAC
.string "ANDRES$", 12
@@ -9794,7 +9794,7 @@ gTrainers:: @ 8310030
@ CORY_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "CORY$", 12
@@ -9806,7 +9806,7 @@ gTrainers:: @ 8310030
@ CORY_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "CORY$", 12
@@ -9818,7 +9818,7 @@ gTrainers:: @ 8310030
@ CORY_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "CORY$", 12
@@ -9830,7 +9830,7 @@ gTrainers:: @ 8310030
@ CORY_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_SAILOR
+ .byte TRAINER_CLASS_SAILOR
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_SAILOR
.string "CORY$", 12
@@ -9842,7 +9842,7 @@ gTrainers:: @ 8310030
@ PABLO_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "PABLO$", 12
@@ -9854,7 +9854,7 @@ gTrainers:: @ 8310030
@ PABLO_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "PABLO$", 12
@@ -9866,7 +9866,7 @@ gTrainers:: @ 8310030
@ PABLO_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "PABLO$", 12
@@ -9878,7 +9878,7 @@ gTrainers:: @ 8310030
@ PABLO_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_TRIATHLETE
+ .byte TRAINER_CLASS_TRIATHLETE
.byte TRAINER_ENCOUNTER_MUSIC_SWIMMER @ gender flag and encounter music
.byte TRAINER_PIC_SWIMMING_TRIATHLETE_M
.string "PABLO$", 12
@@ -9890,7 +9890,7 @@ gTrainers:: @ 8310030
@ KOJI_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "KOJI$", 12
@@ -9902,7 +9902,7 @@ gTrainers:: @ 8310030
@ KOJI_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "KOJI$", 12
@@ -9914,7 +9914,7 @@ gTrainers:: @ 8310030
@ KOJI_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "KOJI$", 12
@@ -9926,7 +9926,7 @@ gTrainers:: @ 8310030
@ KOJI_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BLACK_BELT
+ .byte TRAINER_CLASS_BLACK_BELT
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_BLACK_BELT
.string "KOJI$", 12
@@ -9938,7 +9938,7 @@ gTrainers:: @ 8310030
@ CRISTIN_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "CRISTIN$", 12
@@ -9950,7 +9950,7 @@ gTrainers:: @ 8310030
@ CRISTIN_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "CRISTIN$", 12
@@ -9962,7 +9962,7 @@ gTrainers:: @ 8310030
@ CRISTIN_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "CRISTIN$", 12
@@ -9974,7 +9974,7 @@ gTrainers:: @ 8310030
@ CRISTIN_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_COOLTRAINER_1
+ .byte TRAINER_CLASS_COOLTRAINER_1
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_COOL @ gender flag and encounter music
.byte TRAINER_PIC_COOL_TRAINER_F
.string "CRISTIN$", 12
@@ -9986,7 +9986,7 @@ gTrainers:: @ 8310030
@ FERNANDO_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "FERNANDO$", 12
@@ -9998,7 +9998,7 @@ gTrainers:: @ 8310030
@ FERNANDO_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "FERNANDO$", 12
@@ -10010,7 +10010,7 @@ gTrainers:: @ 8310030
@ FERNANDO_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "FERNANDO$", 12
@@ -10022,7 +10022,7 @@ gTrainers:: @ 8310030
@ FERNANDO_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GUITARIST
+ .byte TRAINER_CLASS_GUITARIST
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_GUITARIST
.string "FERNANDO$", 12
@@ -10034,7 +10034,7 @@ gTrainers:: @ 8310030
@ SAWYER_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "SAWYER$", 12
@@ -10046,7 +10046,7 @@ gTrainers:: @ 8310030
@ SAWYER_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "SAWYER$", 12
@@ -10058,7 +10058,7 @@ gTrainers:: @ 8310030
@ SAWYER_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "SAWYER$", 12
@@ -10070,7 +10070,7 @@ gTrainers:: @ 8310030
@ SAWYER_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_HIKER
+ .byte TRAINER_CLASS_HIKER
.byte TRAINER_ENCOUNTER_MUSIC_HIKER @ gender flag and encounter music
.byte TRAINER_PIC_HIKER
.string "SAWYER$", 12
@@ -10082,7 +10082,7 @@ gTrainers:: @ 8310030
@ GABRIELLE_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "GABRIELLE$", 12
@@ -10094,7 +10094,7 @@ gTrainers:: @ 8310030
@ GABRIELLE_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "GABRIELLE$", 12
@@ -10106,7 +10106,7 @@ gTrainers:: @ 8310030
@ GABRIELLE_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "GABRIELLE$", 12
@@ -10118,7 +10118,7 @@ gTrainers:: @ 8310030
@ GABRIELLE_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_BREEDER
+ .byte TRAINER_CLASS_PKMN_BREEDER
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_POKEMON_BREEDER_F
.string "GABRIELLE$", 12
@@ -10130,7 +10130,7 @@ gTrainers:: @ 8310030
@ THALIA_2
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "THALIA$", 12
@@ -10142,7 +10142,7 @@ gTrainers:: @ 8310030
@ THALIA_3
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "THALIA$", 12
@@ -10154,7 +10154,7 @@ gTrainers:: @ 8310030
@ THALIA_4
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "THALIA$", 12
@@ -10166,7 +10166,7 @@ gTrainers:: @ 8310030
@ THALIA_5
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_BEAUTY
+ .byte TRAINER_CLASS_BEAUTY
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_FEMALE @ gender flag and encounter music
.byte TRAINER_PIC_BEAUTY
.string "THALIA$", 12
@@ -10178,7 +10178,7 @@ gTrainers:: @ 8310030
@ MARIELA
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_F
.string "MARIELA$", 12
@@ -10190,7 +10190,7 @@ gTrainers:: @ 8310030
@ ALVARO
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PSYCHIC
+ .byte TRAINER_CLASS_PSYCHIC
.byte TRAINER_ENCOUNTER_MUSIC_INTENSE @ gender flag and encounter music
.byte TRAINER_PIC_PSYCHIC_M
.string "ALVARO$", 12
@@ -10202,7 +10202,7 @@ gTrainers:: @ 8310030
@ EVERETT
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_GENTLEMAN
+ .byte TRAINER_CLASS_GENTLEMAN
.byte TRAINER_ENCOUNTER_MUSIC_RICH @ gender flag and encounter music
.byte TRAINER_PIC_GENTLEMAN
.string "EVERETT$", 12
@@ -10214,7 +10214,7 @@ gTrainers:: @ 8310030
@ RED
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_RED
.string "RED$", 12
@@ -10226,7 +10226,7 @@ gTrainers:: @ 8310030
@ LEAF
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3
+ .byte TRAINER_CLASS_PKMN_TRAINER_3
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_LEAF
.string "LEAF$", 12
@@ -10238,7 +10238,7 @@ gTrainers:: @ 8310030
@ BRENDAN_16
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_4
+ .byte TRAINER_CLASS_PKMN_TRAINER_4
.byte TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN
.string "BRENDAN$", 12
@@ -10250,7 +10250,7 @@ gTrainers:: @ 8310030
@ MAY_16
.byte 0 @ party type flags
- .byte TRAINER_CLASS_NAME_PKMN_TRAINER_4
+ .byte TRAINER_CLASS_PKMN_TRAINER_4
.byte F_TRAINER_FEMALE | TRAINER_ENCOUNTER_MUSIC_MALE @ gender flag and encounter music
.byte TRAINER_PIC_RUBY_SAPPHIRE_MAY
.string "MAY$", 12
diff --git a/data/wild_encounter.s b/data/wild_encounter.s
deleted file mode 100644
index 5def2ca70..000000000
--- a/data/wild_encounter.s
+++ /dev/null
@@ -1,295 +0,0 @@
-#include "constants/species.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-@ 85507E4
- .include "data/wild_mons.inc"
-
-gBattlePyramidPlaceholders_1:: @ 55370C
- wild_mon SPECIES_BULBASAUR, 5
- wild_mon SPECIES_BULBASAUR, 5
- wild_mon SPECIES_BULBASAUR, 5
- wild_mon SPECIES_BULBASAUR, 5
- wild_mon SPECIES_IVYSAUR, 5
- wild_mon SPECIES_IVYSAUR, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_CHARMANDER, 5
-
-gBattlePyramidPlaceholders_1Info:: @ 55373C
- .4byte 4
- .4byte gBattlePyramidPlaceholders_1
-
-gBattlePyramidPlaceholders_2:: @ 553744
- wild_mon SPECIES_IVYSAUR, 5
- wild_mon SPECIES_IVYSAUR, 5
- wild_mon SPECIES_IVYSAUR, 5
- wild_mon SPECIES_IVYSAUR, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMANDER, 5
-
-gBattlePyramidPlaceholders_2Info:: @ 553774
- .4byte 4
- .4byte gBattlePyramidPlaceholders_2
-
-gBattlePyramidPlaceholders_3:: @ 55377C
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_VENUSAUR, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARIZARD, 5
-
-gBattlePyramidPlaceholders_3Info:: @ 5537AC
- .4byte 4
- .4byte gBattlePyramidPlaceholders_3
-
-gBattlePyramidPlaceholders_4:: @ 5537B4
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMANDER, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_SQUIRTLE, 5
-
-gBattlePyramidPlaceholders_4Info:: @ 5537E4
- .4byte 4
- .4byte gBattlePyramidPlaceholders_4
-
-gBattlePyramidPlaceholders_5:: @ 5537EC
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
-
-gBattlePyramidPlaceholders_5Info:: @ 55381C
- .4byte 4
- .4byte gBattlePyramidPlaceholders_5
-
-gBattlePyramidPlaceholders_6:: @ 553824
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
-
-gBattlePyramidPlaceholders_6Info:: @ 553854
- .4byte 4
- .4byte gBattlePyramidPlaceholders_6
-
-gBattlePyramidPlaceholders_7:: @ 55385C
- wild_mon SPECIES_WARTORTLE, 5
- wild_mon SPECIES_WARTORTLE, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_SQUIRTLE, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARIZARD, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
- wild_mon SPECIES_CHARMELEON, 5
-
-gBattlePyramidPlaceholders_7Info:: @ 55388C
- .4byte 8
- .4byte gBattlePyramidPlaceholders_7
-
-gBattlePyramidWildMonHeaders:: @ 8553894
- .byte 0, 1
- .2byte 0
- .4byte gBattlePyramidPlaceholders_1Info
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 2
- .2byte 0
- .4byte gBattlePyramidPlaceholders_2Info
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 3
- .2byte 0
- .4byte gBattlePyramidPlaceholders_3Info
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 4
- .2byte 0
- .4byte gBattlePyramidPlaceholders_4Info
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 5
- .2byte 0
- .4byte gBattlePyramidPlaceholders_5Info
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 6
- .2byte 0
- .4byte gBattlePyramidPlaceholders_6Info
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 7
- .2byte 0
- .4byte gBattlePyramidPlaceholders_7Info
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .2byte 0xFFFF
- .2byte 0
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
-gBattlePikeMons_1:: @ 8553934
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
- wild_mon SPECIES_DUSCLOPS, 5
- wild_mon SPECIES_DUSCLOPS, 5
- wild_mon SPECIES_DUSCLOPS, 5
- wild_mon SPECIES_DUSCLOPS, 5
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
- wild_mon SPECIES_DUSCLOPS, 5
- wild_mon SPECIES_DUSCLOPS, 5
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
-
-gBattlePikeMonsInfo_1:: @ 8553964
- .4byte 10
- .4byte gBattlePikeMons_1
-
-gBattlePikeMons_2:: @ 855396C
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
- wild_mon SPECIES_ELECTRODE, 5
- wild_mon SPECIES_ELECTRODE, 5
- wild_mon SPECIES_ELECTRODE, 5
- wild_mon SPECIES_ELECTRODE, 5
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
- wild_mon SPECIES_ELECTRODE, 5
- wild_mon SPECIES_ELECTRODE, 5
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
-
-gBattlePikeMonsInfo_2:: @ 855399C
- .4byte 10
- .4byte gBattlePikeMons_2
-
-gBattlePikeMons_3:: @ 85539A4
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
- wild_mon SPECIES_BRELOOM, 5
- wild_mon SPECIES_BRELOOM, 5
- wild_mon SPECIES_BRELOOM, 5
- wild_mon SPECIES_BRELOOM, 5
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
- wild_mon SPECIES_BRELOOM, 5
- wild_mon SPECIES_BRELOOM, 5
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
-
-gBattlePikeMonsInfo_3:: @ 85539D4
- .4byte 10
- .4byte gBattlePikeMons_3
-
-gBattlePikeMons_4:: @ 85539DC
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
- wild_mon SPECIES_WOBBUFFET, 5
- wild_mon SPECIES_WOBBUFFET, 5
- wild_mon SPECIES_WOBBUFFET, 5
- wild_mon SPECIES_WOBBUFFET, 5
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
- wild_mon SPECIES_WOBBUFFET, 5
- wild_mon SPECIES_WOBBUFFET, 5
- wild_mon SPECIES_SEVIPER, 5
- wild_mon SPECIES_MILOTIC, 5
-
-gBattlePikeMonsInfo_4:: @ 8553A0C
- .4byte 10
- .4byte gBattlePikeMons_4
-
-gBattlePikeWildMonHeaders:: @ 8553A14
- .byte 0, 1
- .2byte 0
- .4byte gBattlePikeMonsInfo_1
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 2
- .2byte 0
- .4byte gBattlePikeMonsInfo_2
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 3
- .2byte 0
- .4byte gBattlePikeMonsInfo_3
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .byte 0, 4
- .2byte 0
- .4byte gBattlePikeMonsInfo_4
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .2byte 0xFFFF
- .2byte 0
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
-gWildFeebasRoute119Data:: @ 8553A78
- wild_mon SPECIES_FEEBAS, 20, 25
-
-gRoute119WaterTileData:: @ 8553A7C
- .2byte 0, 0x2D, 0, 0x2E, 0x5B, 0x83, 0x5C, 0x8B, 0x12A, 0
diff --git a/data/wild_mons.inc b/data/wild_mons.inc
deleted file mode 100644
index 83b73bc81..000000000
--- a/data/wild_mons.inc
+++ /dev/null
@@ -1,4524 +0,0 @@
- .align 2
-gRoute101_LandMons:: @ 85507E4
- wild_mon SPECIES_WURMPLE, 2
- wild_mon SPECIES_POOCHYENA, 2
- wild_mon SPECIES_WURMPLE, 2
- wild_mon SPECIES_WURMPLE, 3
- wild_mon SPECIES_POOCHYENA, 3
- wild_mon SPECIES_POOCHYENA, 3
- wild_mon SPECIES_WURMPLE, 3
- wild_mon SPECIES_POOCHYENA, 3
- wild_mon SPECIES_ZIGZAGOON, 2
- wild_mon SPECIES_ZIGZAGOON, 2
- wild_mon SPECIES_ZIGZAGOON, 3
- wild_mon SPECIES_ZIGZAGOON, 3
-
- .align 2
-gRoute101_LandMonsInfo:: @ 8550814
- .4byte 20 @ encounter rate
- .4byte gRoute101_LandMons
-
- .align 2
-gRoute102_LandMons:: @ 855081C
- wild_mon SPECIES_POOCHYENA, 3
- wild_mon SPECIES_WURMPLE, 3
- wild_mon SPECIES_POOCHYENA, 4
- wild_mon SPECIES_WURMPLE, 4
- wild_mon SPECIES_LOTAD, 3
- wild_mon SPECIES_LOTAD, 4
- wild_mon SPECIES_ZIGZAGOON, 3
- wild_mon SPECIES_ZIGZAGOON, 3
- wild_mon SPECIES_ZIGZAGOON, 4
- wild_mon SPECIES_RALTS, 4
- wild_mon SPECIES_ZIGZAGOON, 4
- wild_mon SPECIES_SEEDOT, 3
-
- .align 2
-gRoute102_LandMonsInfo:: @ 855084C
- .4byte 20 @ encounter rate
- .4byte gRoute102_LandMons
-
- .align 2
-gRoute102_WaterMons:: @ 8550854
- wild_mon SPECIES_MARILL, 20, 30
- wild_mon SPECIES_MARILL, 10, 20
- wild_mon SPECIES_MARILL, 30, 35
- wild_mon SPECIES_MARILL, 5, 10
- wild_mon SPECIES_GOLDEEN, 20, 30
-
- .align 2
-gRoute102_WaterMonsInfo:: @ 8550868
- .4byte 4 @ encounter rate
- .4byte gRoute102_WaterMons
-
- .align 2
-gRoute102_FishingMons:: @ 8550870
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_CORPHISH, 10, 30
- wild_mon SPECIES_CORPHISH, 25, 30
- wild_mon SPECIES_CORPHISH, 30, 35
- wild_mon SPECIES_CORPHISH, 20, 25
- wild_mon SPECIES_CORPHISH, 35, 40
- wild_mon SPECIES_CORPHISH, 40, 45
-
- .align 2
-gRoute102_FishingMonsInfo:: @ 8550898
- .4byte 30 @ encounter rate
- .4byte gRoute102_FishingMons
-
- .align 2
-gRoute103_LandMons:: @ 85508A0
- wild_mon SPECIES_POOCHYENA, 2
- wild_mon SPECIES_POOCHYENA, 3
- wild_mon SPECIES_POOCHYENA, 3
- wild_mon SPECIES_POOCHYENA, 4
- wild_mon SPECIES_WINGULL, 2
- wild_mon SPECIES_ZIGZAGOON, 3
- wild_mon SPECIES_ZIGZAGOON, 3
- wild_mon SPECIES_ZIGZAGOON, 4
- wild_mon SPECIES_WINGULL, 3
- wild_mon SPECIES_WINGULL, 3
- wild_mon SPECIES_WINGULL, 2
- wild_mon SPECIES_WINGULL, 4
-
- .align 2
-gRoute103_LandMonsInfo:: @ 85508D0
- .4byte 20 @ encounter rate
- .4byte gRoute103_LandMons
-
- .align 2
-gRoute103_WaterMons:: @ 85508D8
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute103_WaterMonsInfo:: @ 85508EC
- .4byte 4 @ encounter rate
- .4byte gRoute103_WaterMons
-
- .align 2
-gRoute103_FishingMons:: @ 85508F4
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute103_FishingMonsInfo:: @ 855091C
- .4byte 30 @ encounter rate
- .4byte gRoute103_FishingMons
-
- .align 2
-gRoute104_LandMons:: @ 8550924
- wild_mon SPECIES_POOCHYENA, 4
- wild_mon SPECIES_WURMPLE, 4
- wild_mon SPECIES_POOCHYENA, 5
- wild_mon SPECIES_MARILL, 5
- wild_mon SPECIES_MARILL, 4
- wild_mon SPECIES_POOCHYENA, 5
- wild_mon SPECIES_TAILLOW, 4
- wild_mon SPECIES_TAILLOW, 5
- wild_mon SPECIES_WINGULL, 4
- wild_mon SPECIES_WINGULL, 4
- wild_mon SPECIES_WINGULL, 3
- wild_mon SPECIES_WINGULL, 5
-
- .align 2
-gRoute104_LandMonsInfo:: @ 8550954
- .4byte 20 @ encounter rate
- .4byte gRoute104_LandMons
-
- .align 2
-gRoute104_WaterMons:: @ 855095C
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute104_WaterMonsInfo:: @ 8550970
- .4byte 4 @ encounter rate
- .4byte gRoute104_WaterMons
-
- .align 2
-gRoute104_FishingMons:: @ 8550978
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_MAGIKARP, 25, 30
- wild_mon SPECIES_MAGIKARP, 30, 35
- wild_mon SPECIES_MAGIKARP, 20, 25
- wild_mon SPECIES_MAGIKARP, 35, 40
- wild_mon SPECIES_MAGIKARP, 40, 45
-
- .align 2
-gRoute104_FishingMonsInfo:: @ 85509A0
- .4byte 30 @ encounter rate
- .4byte gRoute104_FishingMons
-
- .align 2
-gRoute105_WaterMons:: @ 85509A8
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute105_WaterMonsInfo:: @ 85509BC
- .4byte 4 @ encounter rate
- .4byte gRoute105_WaterMons
-
- .align 2
-gRoute105_FishingMons:: @ 85509C4
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute105_FishingMonsInfo:: @ 85509EC
- .4byte 30 @ encounter rate
- .4byte gRoute105_FishingMons
-
- .align 2
-gRoute110_LandMons:: @ 85509F4
- wild_mon SPECIES_POOCHYENA, 12
- wild_mon SPECIES_ELECTRIKE, 12
- wild_mon SPECIES_GULPIN, 12
- wild_mon SPECIES_ELECTRIKE, 13
- wild_mon SPECIES_MINUN, 13
- wild_mon SPECIES_ODDISH, 13
- wild_mon SPECIES_MINUN, 13
- wild_mon SPECIES_GULPIN, 13
- wild_mon SPECIES_WINGULL, 12
- wild_mon SPECIES_WINGULL, 12
- wild_mon SPECIES_PLUSLE, 12
- wild_mon SPECIES_PLUSLE, 13
-
- .align 2
-gRoute110_LandMonsInfo:: @ 8550A24
- .4byte 20 @ encounter rate
- .4byte gRoute110_LandMons
-
- .align 2
-gRoute110_WaterMons:: @ 8550A2C
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute110_WaterMonsInfo:: @ 8550A40
- .4byte 4 @ encounter rate
- .4byte gRoute110_WaterMons
-
- .align 2
-gRoute110_FishingMons:: @ 8550A48
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute110_FishingMonsInfo:: @ 8550A70
- .4byte 30 @ encounter rate
- .4byte gRoute110_FishingMons
-
- .align 2
-gRoute111_LandMons:: @ 8550A78
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 21
- wild_mon SPECIES_TRAPINCH, 21
- wild_mon SPECIES_BALTOY, 19
- wild_mon SPECIES_BALTOY, 21
- wild_mon SPECIES_SANDSHREW, 19
- wild_mon SPECIES_TRAPINCH, 19
- wild_mon SPECIES_BALTOY, 20
- wild_mon SPECIES_CACNEA, 20
- wild_mon SPECIES_CACNEA, 22
- wild_mon SPECIES_CACNEA, 22
-
- .align 2
-gRoute111_LandMonsInfo:: @ 8550AA8
- .4byte 10 @ encounter rate
- .4byte gRoute111_LandMons
-
- .align 2
-gRoute111_WaterMons:: @ 8550AB0
- wild_mon SPECIES_MARILL, 20, 30
- wild_mon SPECIES_MARILL, 10, 20
- wild_mon SPECIES_MARILL, 30, 35
- wild_mon SPECIES_MARILL, 5, 10
- wild_mon SPECIES_GOLDEEN, 20, 30
-
- .align 2
-gRoute111_WaterMonsInfo:: @ 8550AC4
- .4byte 4 @ encounter rate
- .4byte gRoute111_WaterMons
-
- .align 2
-gRoute111_RockSmashMons:: @ 8550ACC
- wild_mon SPECIES_GEODUDE, 10, 15
- wild_mon SPECIES_GEODUDE, 5, 10
- wild_mon SPECIES_GEODUDE, 15, 20
- wild_mon SPECIES_GEODUDE, 15, 20
- wild_mon SPECIES_GEODUDE, 15, 20
-
- .align 2
-gRoute111_RockSmashMonsInfo:: @ 8550AE0
- .4byte 20 @ encounter rate
- .4byte gRoute111_RockSmashMons
-
- .align 2
-gRoute111_FishingMons:: @ 8550AE8
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_BARBOACH, 10, 30
- wild_mon SPECIES_BARBOACH, 25, 30
- wild_mon SPECIES_BARBOACH, 30, 35
- wild_mon SPECIES_BARBOACH, 20, 25
- wild_mon SPECIES_BARBOACH, 35, 40
- wild_mon SPECIES_BARBOACH, 40, 45
-
- .align 2
-gRoute111_FishingMonsInfo:: @ 8550B10
- .4byte 30 @ encounter rate
- .4byte gRoute111_FishingMons
-
- .align 2
-gRoute112_LandMons:: @ 8550B18
- wild_mon SPECIES_NUMEL, 15
- wild_mon SPECIES_NUMEL, 15
- wild_mon SPECIES_MARILL, 15
- wild_mon SPECIES_NUMEL, 14
- wild_mon SPECIES_NUMEL, 14
- wild_mon SPECIES_MARILL, 14
- wild_mon SPECIES_NUMEL, 16
- wild_mon SPECIES_MARILL, 16
- wild_mon SPECIES_NUMEL, 16
- wild_mon SPECIES_NUMEL, 16
- wild_mon SPECIES_NUMEL, 16
- wild_mon SPECIES_NUMEL, 16
-
- .align 2
-gRoute112_LandMonsInfo:: @ 8550B48
- .4byte 20 @ encounter rate
- .4byte gRoute112_LandMons
-
- .align 2
-gRoute113_LandMons:: @ 8550B50
- wild_mon SPECIES_SPINDA, 15
- wild_mon SPECIES_SPINDA, 15
- wild_mon SPECIES_SLUGMA, 15
- wild_mon SPECIES_SPINDA, 14
- wild_mon SPECIES_SPINDA, 14
- wild_mon SPECIES_SLUGMA, 14
- wild_mon SPECIES_SPINDA, 16
- wild_mon SPECIES_SLUGMA, 16
- wild_mon SPECIES_SPINDA, 16
- wild_mon SPECIES_SKARMORY, 16
- wild_mon SPECIES_SPINDA, 16
- wild_mon SPECIES_SKARMORY, 16
-
- .align 2
-gRoute113_LandMonsInfo:: @ 8550B80
- .4byte 20 @ encounter rate
- .4byte gRoute113_LandMons
-
- .align 2
-gRoute114_LandMons:: @ 8550B88
- wild_mon SPECIES_SWABLU, 16
- wild_mon SPECIES_LOTAD, 16
- wild_mon SPECIES_SWABLU, 17
- wild_mon SPECIES_SWABLU, 15
- wild_mon SPECIES_LOTAD, 15
- wild_mon SPECIES_LOMBRE, 16
- wild_mon SPECIES_LOMBRE, 16
- wild_mon SPECIES_LOMBRE, 18
- wild_mon SPECIES_SEVIPER, 17
- wild_mon SPECIES_SEVIPER, 15
- wild_mon SPECIES_SEVIPER, 17
- wild_mon SPECIES_NUZLEAF, 15
-
- .align 2
-gRoute114_LandMonsInfo:: @ 8550BB8
- .4byte 20 @ encounter rate
- .4byte gRoute114_LandMons
-
- .align 2
-gRoute114_WaterMons:: @ 8550BC0
- wild_mon SPECIES_MARILL, 20, 30
- wild_mon SPECIES_MARILL, 10, 20
- wild_mon SPECIES_MARILL, 30, 35
- wild_mon SPECIES_MARILL, 5, 10
- wild_mon SPECIES_GOLDEEN, 20, 30
-
- .align 2
-gRoute114_WaterMonsInfo:: @ 8550BD4
- .4byte 4 @ encounter rate
- .4byte gRoute114_WaterMons
-
- .align 2
-gRoute114_RockSmashMons:: @ 8550BDC
- wild_mon SPECIES_GEODUDE, 10, 15
- wild_mon SPECIES_GEODUDE, 5, 10
- wild_mon SPECIES_GEODUDE, 15, 20
- wild_mon SPECIES_GEODUDE, 15, 20
- wild_mon SPECIES_GEODUDE, 15, 20
-
- .align 2
-gRoute114_RockSmashMonsInfo:: @ 8550BF0
- .4byte 20 @ encounter rate
- .4byte gRoute114_RockSmashMons
-
- .align 2
-gRoute114_FishingMons:: @ 8550BF8
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_BARBOACH, 10, 30
- wild_mon SPECIES_BARBOACH, 25, 30
- wild_mon SPECIES_BARBOACH, 30, 35
- wild_mon SPECIES_BARBOACH, 20, 25
- wild_mon SPECIES_BARBOACH, 35, 40
- wild_mon SPECIES_BARBOACH, 40, 45
-
- .align 2
-gRoute114_FishingMonsInfo:: @ 8550C20
- .4byte 30 @ encounter rate
- .4byte gRoute114_FishingMons
-
- .align 2
-gRoute116_LandMons:: @ 8550C28
- wild_mon SPECIES_POOCHYENA, 6
- wild_mon SPECIES_WHISMUR, 6
- wild_mon SPECIES_NINCADA, 6
- wild_mon SPECIES_ABRA, 7
- wild_mon SPECIES_NINCADA, 7
- wild_mon SPECIES_TAILLOW, 6
- wild_mon SPECIES_TAILLOW, 7
- wild_mon SPECIES_TAILLOW, 8
- wild_mon SPECIES_POOCHYENA, 7
- wild_mon SPECIES_POOCHYENA, 8
- wild_mon SPECIES_SKITTY, 7
- wild_mon SPECIES_SKITTY, 8
-
- .align 2
-gRoute116_LandMonsInfo:: @ 8550C58
- .4byte 20 @ encounter rate
- .4byte gRoute116_LandMons
-
- .align 2
-gRoute117_LandMons:: @ 8550C60
- wild_mon SPECIES_POOCHYENA, 13
- wild_mon SPECIES_ODDISH, 13
- wild_mon SPECIES_POOCHYENA, 14
- wild_mon SPECIES_ODDISH, 14
- wild_mon SPECIES_MARILL, 13
- wild_mon SPECIES_ODDISH, 13
- wild_mon SPECIES_ILLUMISE, 13
- wild_mon SPECIES_ILLUMISE, 13
- wild_mon SPECIES_ILLUMISE, 14
- wild_mon SPECIES_ILLUMISE, 14
- wild_mon SPECIES_VOLBEAT, 13
- wild_mon SPECIES_SEEDOT, 13
-
- .align 2
-gRoute117_LandMonsInfo:: @ 8550C90
- .4byte 20 @ encounter rate
- .4byte gRoute117_LandMons
-
- .align 2
-gRoute117_WaterMons:: @ 8550C98
- wild_mon SPECIES_MARILL, 20, 30
- wild_mon SPECIES_MARILL, 10, 20
- wild_mon SPECIES_MARILL, 30, 35
- wild_mon SPECIES_MARILL, 5, 10
- wild_mon SPECIES_GOLDEEN, 20, 30
-
- .align 2
-gRoute117_WaterMonsInfo:: @ 8550CAC
- .4byte 4 @ encounter rate
- .4byte gRoute117_WaterMons
-
- .align 2
-gRoute117_FishingMons:: @ 8550CB4
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_CORPHISH, 10, 30
- wild_mon SPECIES_CORPHISH, 25, 30
- wild_mon SPECIES_CORPHISH, 30, 35
- wild_mon SPECIES_CORPHISH, 20, 25
- wild_mon SPECIES_CORPHISH, 35, 40
- wild_mon SPECIES_CORPHISH, 40, 45
-
- .align 2
-gRoute117_FishingMonsInfo:: @ 8550CDC
- .4byte 30 @ encounter rate
- .4byte gRoute117_FishingMons
-
- .align 2
-gRoute118_LandMons:: @ 8550CE4
- wild_mon SPECIES_ZIGZAGOON, 24
- wild_mon SPECIES_ELECTRIKE, 24
- wild_mon SPECIES_ZIGZAGOON, 26
- wild_mon SPECIES_ELECTRIKE, 26
- wild_mon SPECIES_LINOONE, 26
- wild_mon SPECIES_MANECTRIC, 26
- wild_mon SPECIES_WINGULL, 25
- wild_mon SPECIES_WINGULL, 25
- wild_mon SPECIES_WINGULL, 26
- wild_mon SPECIES_WINGULL, 26
- wild_mon SPECIES_WINGULL, 27
- wild_mon SPECIES_KECLEON, 25
-
- .align 2
-gRoute118_LandMonsInfo:: @ 8550D14
- .4byte 20 @ encounter rate
- .4byte gRoute118_LandMons
-
- .align 2
-gRoute118_WaterMons:: @ 8550D1C
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute118_WaterMonsInfo:: @ 8550D30
- .4byte 4 @ encounter rate
- .4byte gRoute118_WaterMons
-
- .align 2
-gRoute118_FishingMons:: @ 8550D38
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_CARVANHA, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_CARVANHA, 30, 35
- wild_mon SPECIES_CARVANHA, 20, 25
- wild_mon SPECIES_CARVANHA, 35, 40
- wild_mon SPECIES_CARVANHA, 40, 45
-
- .align 2
-gRoute118_FishingMonsInfo:: @ 8550D60
- .4byte 30 @ encounter rate
- .4byte gRoute118_FishingMons
-
- .align 2
-gRoute124_WaterMons:: @ 8550D68
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute124_WaterMonsInfo:: @ 8550D7C
- .4byte 4 @ encounter rate
- .4byte gRoute124_WaterMons
-
- .align 2
-gRoute124_FishingMons:: @ 8550D84
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute124_FishingMonsInfo:: @ 8550DAC
- .4byte 30 @ encounter rate
- .4byte gRoute124_FishingMons
-
- .align 2
-gPetalburgWoods_LandMons:: @ 8550DB4
- wild_mon SPECIES_POOCHYENA, 5
- wild_mon SPECIES_WURMPLE, 5
- wild_mon SPECIES_SHROOMISH, 5
- wild_mon SPECIES_POOCHYENA, 6
- wild_mon SPECIES_SILCOON, 5
- wild_mon SPECIES_CASCOON, 5
- wild_mon SPECIES_WURMPLE, 6
- wild_mon SPECIES_SHROOMISH, 6
- wild_mon SPECIES_TAILLOW, 5
- wild_mon SPECIES_SLAKOTH, 5
- wild_mon SPECIES_TAILLOW, 6
- wild_mon SPECIES_SLAKOTH, 6
-
- .align 2
-gPetalburgWoods_LandMonsInfo:: @ 8550DE4
- .4byte 20 @ encounter rate
- .4byte gPetalburgWoods_LandMons
-
- .align 2
-gRusturfTunnel_LandMons:: @ 8550DEC
- wild_mon SPECIES_WHISMUR, 6
- wild_mon SPECIES_WHISMUR, 7
- wild_mon SPECIES_WHISMUR, 6
- wild_mon SPECIES_WHISMUR, 6
- wild_mon SPECIES_WHISMUR, 7
- wild_mon SPECIES_WHISMUR, 7
- wild_mon SPECIES_WHISMUR, 5
- wild_mon SPECIES_WHISMUR, 8
- wild_mon SPECIES_WHISMUR, 5
- wild_mon SPECIES_WHISMUR, 8
- wild_mon SPECIES_WHISMUR, 5
- wild_mon SPECIES_WHISMUR, 8
-
- .align 2
-gRusturfTunnel_LandMonsInfo:: @ 8550E1C
- .4byte 10 @ encounter rate
- .4byte gRusturfTunnel_LandMons
-
- .align 2
-gGraniteCave_1F_LandMons:: @ 8550E24
- wild_mon SPECIES_ZUBAT, 7
- wild_mon SPECIES_MAKUHITA, 8
- wild_mon SPECIES_MAKUHITA, 7
- wild_mon SPECIES_ZUBAT, 8
- wild_mon SPECIES_MAKUHITA, 9
- wild_mon SPECIES_ABRA, 8
- wild_mon SPECIES_MAKUHITA, 10
- wild_mon SPECIES_MAKUHITA, 6
- wild_mon SPECIES_GEODUDE, 7
- wild_mon SPECIES_GEODUDE, 8
- wild_mon SPECIES_GEODUDE, 6
- wild_mon SPECIES_GEODUDE, 9
-
- .align 2
-gGraniteCave_1F_LandMonsInfo:: @ 8550E54
- .4byte 10 @ encounter rate
- .4byte gGraniteCave_1F_LandMons
-
- .align 2
-gGraniteCave_B1F_LandMons:: @ 8550E5C
- wild_mon SPECIES_ZUBAT, 9
- wild_mon SPECIES_ARON, 10
- wild_mon SPECIES_ARON, 9
- wild_mon SPECIES_ARON, 11
- wild_mon SPECIES_ZUBAT, 10
- wild_mon SPECIES_ABRA, 9
- wild_mon SPECIES_MAKUHITA, 10
- wild_mon SPECIES_MAKUHITA, 11
- wild_mon SPECIES_SABLEYE, 10
- wild_mon SPECIES_SABLEYE, 10
- wild_mon SPECIES_SABLEYE, 9
- wild_mon SPECIES_SABLEYE, 11
-
- .align 2
-gGraniteCave_B1F_LandMonsInfo:: @ 8550E8C
- .4byte 10 @ encounter rate
- .4byte gGraniteCave_B1F_LandMons
-
- .align 2
-gMtPyre_1F_LandMons:: @ 8550E94
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_SHUPPET, 25
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 23
- wild_mon SPECIES_SHUPPET, 22
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
-
- .align 2
-gMtPyre_1F_LandMonsInfo:: @ 8550EC4
- .4byte 10 @ encounter rate
- .4byte gMtPyre_1F_LandMons
-
- .align 2
-gVictoryRoad_1F_LandMons:: @ 8550ECC
- wild_mon SPECIES_GOLBAT, 40
- wild_mon SPECIES_HARIYAMA, 40
- wild_mon SPECIES_LAIRON, 40
- wild_mon SPECIES_LOUDRED, 40
- wild_mon SPECIES_ZUBAT, 36
- wild_mon SPECIES_MAKUHITA, 36
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_HARIYAMA, 38
- wild_mon SPECIES_ARON, 36
- wild_mon SPECIES_WHISMUR, 36
- wild_mon SPECIES_ARON, 36
- wild_mon SPECIES_WHISMUR, 36
-
- .align 2
-gVictoryRoad_1F_LandMonsInfo:: @ 8550EFC
- .4byte 10 @ encounter rate
- .4byte gVictoryRoad_1F_LandMons
-
- .align 2
-gSafariZone_South_LandMons:: @ 8550F04
- wild_mon SPECIES_ODDISH, 25
- wild_mon SPECIES_ODDISH, 27
- wild_mon SPECIES_GIRAFARIG, 25
- wild_mon SPECIES_GIRAFARIG, 27
- wild_mon SPECIES_NATU, 25
- wild_mon SPECIES_DODUO, 25
- wild_mon SPECIES_GLOOM, 25
- wild_mon SPECIES_WOBBUFFET, 27
- wild_mon SPECIES_PIKACHU, 25
- wild_mon SPECIES_WOBBUFFET, 27
- wild_mon SPECIES_PIKACHU, 27
- wild_mon SPECIES_WOBBUFFET, 29
-
- .align 2
-gSafariZone_South_LandMonsInfo:: @ 8550F34
- .4byte 25 @ encounter rate
- .4byte gSafariZone_South_LandMons
-
- .align 2
-gUnderwater2_WaterMons:: @ 8550F3C
- wild_mon SPECIES_CLAMPERL, 20, 30
- wild_mon SPECIES_CHINCHOU, 20, 30
- wild_mon SPECIES_CLAMPERL, 30, 35
- wild_mon SPECIES_RELICANTH, 30, 35
- wild_mon SPECIES_RELICANTH, 30, 35
-
- .align 2
-gUnderwater2_WaterMonsInfo:: @ 8550F50
- .4byte 4 @ encounter rate
- .4byte gUnderwater2_WaterMons
-
- .align 2
-gAbandonedShip_Rooms_B1F_WaterMons:: @ 8550F58
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_TENTACRUEL, 30, 35
-
- .align 2
-gAbandonedShip_Rooms_B1F_WaterMonsInfo:: @ 8550F6C
- .4byte 4 @ encounter rate
- .4byte gAbandonedShip_Rooms_B1F_WaterMons
-
- .align 2
-gAbandonedShip_Rooms_B1F_FishingMons:: @ 8550F74
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_TENTACOOL, 25, 30
- wild_mon SPECIES_TENTACOOL, 30, 35
- wild_mon SPECIES_TENTACRUEL, 30, 35
- wild_mon SPECIES_TENTACRUEL, 25, 30
- wild_mon SPECIES_TENTACRUEL, 20, 25
-
- .align 2
-gAbandonedShip_Rooms_B1F_FishingMonsInfo:: @ 8550F9C
- .4byte 20 @ encounter rate
- .4byte gAbandonedShip_Rooms_B1F_FishingMons
-
- .align 2
-gGraniteCave_B2F_LandMons:: @ 8550FA4
- wild_mon SPECIES_ZUBAT, 10
- wild_mon SPECIES_ARON, 11
- wild_mon SPECIES_ARON, 10
- wild_mon SPECIES_ZUBAT, 11
- wild_mon SPECIES_ARON, 12
- wild_mon SPECIES_ABRA, 10
- wild_mon SPECIES_SABLEYE, 10
- wild_mon SPECIES_SABLEYE, 11
- wild_mon SPECIES_SABLEYE, 12
- wild_mon SPECIES_SABLEYE, 10
- wild_mon SPECIES_SABLEYE, 12
- wild_mon SPECIES_SABLEYE, 10
-
- .align 2
-gGraniteCave_B2F_LandMonsInfo:: @ 8550FD4
- .4byte 10 @ encounter rate
- .4byte gGraniteCave_B2F_LandMons
-
- .align 2
-gGraniteCave_B2F_RockSmashMons:: @ 8550FDC
- wild_mon SPECIES_GEODUDE, 10, 15
- wild_mon SPECIES_NOSEPASS, 10, 20
- wild_mon SPECIES_GEODUDE, 5, 10
- wild_mon SPECIES_GEODUDE, 15, 20
- wild_mon SPECIES_GEODUDE, 15, 20
-
- .align 2
-gGraniteCave_B2F_RockSmashMonsInfo:: @ 8550FF0
- .4byte 20 @ encounter rate
- .4byte gGraniteCave_B2F_RockSmashMons
-
- .align 2
-gFieryPath_LandMons:: @ 8550FF8
- wild_mon SPECIES_NUMEL, 15
- wild_mon SPECIES_KOFFING, 15
- wild_mon SPECIES_NUMEL, 16
- wild_mon SPECIES_MACHOP, 15
- wild_mon SPECIES_TORKOAL, 15
- wild_mon SPECIES_SLUGMA, 15
- wild_mon SPECIES_KOFFING, 16
- wild_mon SPECIES_MACHOP, 16
- wild_mon SPECIES_TORKOAL, 14
- wild_mon SPECIES_TORKOAL, 16
- wild_mon SPECIES_GRIMER, 14
- wild_mon SPECIES_GRIMER, 14
-
- .align 2
-gFieryPath_LandMonsInfo:: @ 8551028
- .4byte 10 @ encounter rate
- .4byte gFieryPath_LandMons
-
- .align 2
-gMeteorFalls_B1F_2R_LandMons:: @ 8551030
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_BAGON, 30
- wild_mon SPECIES_SOLROCK, 35
- wild_mon SPECIES_BAGON, 35
- wild_mon SPECIES_SOLROCK, 37
- wild_mon SPECIES_BAGON, 25
- wild_mon SPECIES_SOLROCK, 39
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_GOLBAT, 40
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_GOLBAT, 40
-
- .align 2
-gMeteorFalls_B1F_2R_LandMonsInfo:: @ 8551060
- .4byte 10 @ encounter rate
- .4byte gMeteorFalls_B1F_2R_LandMons
-
- .align 2
-gMeteorFalls_B1F_2R_WaterMons:: @ 8551068
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_SOLROCK, 25, 35
- wild_mon SPECIES_SOLROCK, 15, 25
- wild_mon SPECIES_SOLROCK, 5, 15
-
- .align 2
-gMeteorFalls_B1F_2R_WaterMonsInfo:: @ 855107C
- .4byte 4 @ encounter rate
- .4byte gMeteorFalls_B1F_2R_WaterMons
-
- .align 2
-gMeteorFalls_B1F_2R_FishingMons:: @ 8551084
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_BARBOACH, 10, 30
- wild_mon SPECIES_BARBOACH, 25, 30
- wild_mon SPECIES_BARBOACH, 30, 35
- wild_mon SPECIES_WHISCASH, 30, 35
- wild_mon SPECIES_WHISCASH, 35, 40
- wild_mon SPECIES_WHISCASH, 40, 45
-
- .align 2
-gMeteorFalls_B1F_2R_FishingMonsInfo:: @ 85510AC
- .4byte 30 @ encounter rate
- .4byte gMeteorFalls_B1F_2R_FishingMons
-
- .align 2
-gJaggedPass_LandMons:: @ 85510B4
- wild_mon SPECIES_NUMEL, 21
- wild_mon SPECIES_NUMEL, 21
- wild_mon SPECIES_MACHOP, 21
- wild_mon SPECIES_NUMEL, 20
- wild_mon SPECIES_SPOINK, 20
- wild_mon SPECIES_MACHOP, 20
- wild_mon SPECIES_SPOINK, 21
- wild_mon SPECIES_MACHOP, 22
- wild_mon SPECIES_NUMEL, 22
- wild_mon SPECIES_SPOINK, 22
- wild_mon SPECIES_NUMEL, 22
- wild_mon SPECIES_SPOINK, 22
-
- .align 2
-gJaggedPass_LandMonsInfo:: @ 85510E4
- .4byte 20 @ encounter rate
- .4byte gJaggedPass_LandMons
-
- .align 2
-gRoute106_WaterMons:: @ 85510EC
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute106_WaterMonsInfo:: @ 8551100
- .4byte 4 @ encounter rate
- .4byte gRoute106_WaterMons
-
- .align 2
-gRoute106_FishingMons:: @ 8551108
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute106_FishingMonsInfo:: @ 8551130
- .4byte 30 @ encounter rate
- .4byte gRoute106_FishingMons
-
- .align 2
-gRoute107_WaterMons:: @ 8551138
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute107_WaterMonsInfo:: @ 855114C
- .4byte 4 @ encounter rate
- .4byte gRoute107_WaterMons
-
- .align 2
-gRoute107_FishingMons:: @ 8551154
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute107_FishingMonsInfo:: @ 855117C
- .4byte 30 @ encounter rate
- .4byte gRoute107_FishingMons
-
- .align 2
-gRoute108_WaterMons:: @ 8551184
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute108_WaterMonsInfo:: @ 8551198
- .4byte 4 @ encounter rate
- .4byte gRoute108_WaterMons
-
- .align 2
-gRoute108_FishingMons:: @ 85511A0
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute108_FishingMonsInfo:: @ 85511C8
- .4byte 30 @ encounter rate
- .4byte gRoute108_FishingMons
-
- .align 2
-gRoute109_WaterMons:: @ 85511D0
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute109_WaterMonsInfo:: @ 85511E4
- .4byte 4 @ encounter rate
- .4byte gRoute109_WaterMons
-
- .align 2
-gRoute109_FishingMons:: @ 85511EC
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute109_FishingMonsInfo:: @ 8551214
- .4byte 30 @ encounter rate
- .4byte gRoute109_FishingMons
-
- .align 2
-gRoute115_LandMons:: @ 855121C
- wild_mon SPECIES_SWABLU, 23
- wild_mon SPECIES_TAILLOW, 23
- wild_mon SPECIES_SWABLU, 25
- wild_mon SPECIES_TAILLOW, 24
- wild_mon SPECIES_TAILLOW, 25
- wild_mon SPECIES_SWELLOW, 25
- wild_mon SPECIES_JIGGLYPUFF, 24
- wild_mon SPECIES_JIGGLYPUFF, 25
- wild_mon SPECIES_WINGULL, 24
- wild_mon SPECIES_WINGULL, 24
- wild_mon SPECIES_WINGULL, 26
- wild_mon SPECIES_WINGULL, 25
-
- .align 2
-gRoute115_LandMonsInfo:: @ 855124C
- .4byte 20 @ encounter rate
- .4byte gRoute115_LandMons
-
- .align 2
-gRoute115_WaterMons:: @ 8551254
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute115_WaterMonsInfo:: @ 8551268
- .4byte 4 @ encounter rate
- .4byte gRoute115_WaterMons
-
- .align 2
-gRoute115_FishingMons:: @ 8551270
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute115_FishingMonsInfo:: @ 8551298
- .4byte 30 @ encounter rate
- .4byte gRoute115_FishingMons
-
- .align 2
-gNewMauville_Inside_LandMons:: @ 85512A0
- wild_mon SPECIES_VOLTORB, 24
- wild_mon SPECIES_MAGNEMITE, 24
- wild_mon SPECIES_VOLTORB, 25
- wild_mon SPECIES_MAGNEMITE, 25
- wild_mon SPECIES_VOLTORB, 23
- wild_mon SPECIES_MAGNEMITE, 23
- wild_mon SPECIES_VOLTORB, 26
- wild_mon SPECIES_MAGNEMITE, 26
- wild_mon SPECIES_VOLTORB, 22
- wild_mon SPECIES_MAGNEMITE, 22
- wild_mon SPECIES_ELECTRODE, 26
- wild_mon SPECIES_MAGNETON, 26
-
- .align 2
-gNewMauville_Inside_LandMonsInfo:: @ 85512D0
- .4byte 10 @ encounter rate
- .4byte gNewMauville_Inside_LandMons
-
- .align 2
-gRoute119_LandMons:: @ 85512D8
- wild_mon SPECIES_ZIGZAGOON, 25
- wild_mon SPECIES_LINOONE, 25
- wild_mon SPECIES_ZIGZAGOON, 27
- wild_mon SPECIES_ODDISH, 25
- wild_mon SPECIES_LINOONE, 27
- wild_mon SPECIES_ODDISH, 26
- wild_mon SPECIES_ODDISH, 27
- wild_mon SPECIES_ODDISH, 24
- wild_mon SPECIES_TROPIUS, 25
- wild_mon SPECIES_TROPIUS, 26
- wild_mon SPECIES_TROPIUS, 27
- wild_mon SPECIES_KECLEON, 25
-
- .align 2
-gRoute119_LandMonsInfo:: @ 8551308
- .4byte 15 @ encounter rate
- .4byte gRoute119_LandMons
-
- .align 2
-gRoute119_WaterMons:: @ 8551310
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute119_WaterMonsInfo:: @ 8551324
- .4byte 4 @ encounter rate
- .4byte gRoute119_WaterMons
-
- .align 2
-gRoute119_FishingMons:: @ 855132C
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_CARVANHA, 10, 30
- wild_mon SPECIES_CARVANHA, 25, 30
- wild_mon SPECIES_CARVANHA, 30, 35
- wild_mon SPECIES_CARVANHA, 20, 25
- wild_mon SPECIES_CARVANHA, 35, 40
- wild_mon SPECIES_CARVANHA, 40, 45
-
- .align 2
-gRoute119_FishingMonsInfo:: @ 8551354
- .4byte 30 @ encounter rate
- .4byte gRoute119_FishingMons
-
- .align 2
-gRoute120_LandMons:: @ 855135C
- wild_mon SPECIES_POOCHYENA, 25
- wild_mon SPECIES_MIGHTYENA, 25
- wild_mon SPECIES_MIGHTYENA, 27
- wild_mon SPECIES_ODDISH, 25
- wild_mon SPECIES_MARILL, 25
- wild_mon SPECIES_ODDISH, 26
- wild_mon SPECIES_ODDISH, 27
- wild_mon SPECIES_MARILL, 27
- wild_mon SPECIES_ABSOL, 25
- wild_mon SPECIES_ABSOL, 27
- wild_mon SPECIES_KECLEON, 25
- wild_mon SPECIES_SEEDOT, 25
-
- .align 2
-gRoute120_LandMonsInfo:: @ 855138C
- .4byte 20 @ encounter rate
- .4byte gRoute120_LandMons
-
- .align 2
-gRoute120_WaterMons:: @ 8551394
- wild_mon SPECIES_MARILL, 20, 30
- wild_mon SPECIES_MARILL, 10, 20
- wild_mon SPECIES_MARILL, 30, 35
- wild_mon SPECIES_MARILL, 5, 10
- wild_mon SPECIES_GOLDEEN, 20, 30
-
- .align 2
-gRoute120_WaterMonsInfo:: @ 85513A8
- .4byte 4 @ encounter rate
- .4byte gRoute120_WaterMons
-
- .align 2
-gRoute120_FishingMons:: @ 85513B0
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_BARBOACH, 10, 30
- wild_mon SPECIES_BARBOACH, 25, 30
- wild_mon SPECIES_BARBOACH, 30, 35
- wild_mon SPECIES_BARBOACH, 20, 25
- wild_mon SPECIES_BARBOACH, 35, 40
- wild_mon SPECIES_BARBOACH, 40, 45
-
- .align 2
-gRoute120_FishingMonsInfo:: @ 85513D8
- .4byte 30 @ encounter rate
- .4byte gRoute120_FishingMons
-
- .align 2
-gRoute121_LandMons:: @ 85513E0
- wild_mon SPECIES_POOCHYENA, 26
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_MIGHTYENA, 26
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_MIGHTYENA, 28
- wild_mon SPECIES_ODDISH, 26
- wild_mon SPECIES_ODDISH, 28
- wild_mon SPECIES_GLOOM, 28
- wild_mon SPECIES_WINGULL, 26
- wild_mon SPECIES_WINGULL, 27
- wild_mon SPECIES_WINGULL, 28
- wild_mon SPECIES_KECLEON, 25
-
- .align 2
-gRoute121_LandMonsInfo:: @ 8551410
- .4byte 20 @ encounter rate
- .4byte gRoute121_LandMons
-
- .align 2
-gRoute121_WaterMons:: @ 8551418
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute121_WaterMonsInfo:: @ 855142C
- .4byte 4 @ encounter rate
- .4byte gRoute121_WaterMons
-
- .align 2
-gRoute121_FishingMons:: @ 8551434
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute121_FishingMonsInfo:: @ 855145C
- .4byte 30 @ encounter rate
- .4byte gRoute121_FishingMons
-
- .align 2
-gRoute122_WaterMons:: @ 8551464
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute122_WaterMonsInfo:: @ 8551478
- .4byte 4 @ encounter rate
- .4byte gRoute122_WaterMons
-
- .align 2
-gRoute122_FishingMons:: @ 8551480
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute122_FishingMonsInfo:: @ 85514A8
- .4byte 30 @ encounter rate
- .4byte gRoute122_FishingMons
-
- .align 2
-gRoute123_LandMons:: @ 85514B0
- wild_mon SPECIES_POOCHYENA, 26
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_MIGHTYENA, 26
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_MIGHTYENA, 28
- wild_mon SPECIES_ODDISH, 26
- wild_mon SPECIES_ODDISH, 28
- wild_mon SPECIES_GLOOM, 28
- wild_mon SPECIES_WINGULL, 26
- wild_mon SPECIES_WINGULL, 27
- wild_mon SPECIES_WINGULL, 28
- wild_mon SPECIES_KECLEON, 25
-
- .align 2
-gRoute123_LandMonsInfo:: @ 85514E0
- .4byte 20 @ encounter rate
- .4byte gRoute123_LandMons
-
- .align 2
-gRoute123_WaterMons:: @ 85514E8
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute123_WaterMonsInfo:: @ 85514FC
- .4byte 4 @ encounter rate
- .4byte gRoute123_WaterMons
-
- .align 2
-gRoute123_FishingMons:: @ 8551504
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute123_FishingMonsInfo:: @ 855152C
- .4byte 30 @ encounter rate
- .4byte gRoute123_FishingMons
-
- .align 2
-gMtPyre_2F_LandMons:: @ 8551534
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_SHUPPET, 25
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 23
- wild_mon SPECIES_SHUPPET, 22
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
-
- .align 2
-gMtPyre_2F_LandMonsInfo:: @ 8551564
- .4byte 10 @ encounter rate
- .4byte gMtPyre_2F_LandMons
-
- .align 2
-gMtPyre_3F_LandMons:: @ 855156C
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_SHUPPET, 25
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 23
- wild_mon SPECIES_SHUPPET, 22
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
-
- .align 2
-gMtPyre_3F_LandMonsInfo:: @ 855159C
- .4byte 10 @ encounter rate
- .4byte gMtPyre_3F_LandMons
-
- .align 2
-gMtPyre_4F_LandMons:: @ 85515A4
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_SHUPPET, 25
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 23
- wild_mon SPECIES_SHUPPET, 22
- wild_mon SPECIES_DUSKULL, 27
- wild_mon SPECIES_DUSKULL, 27
- wild_mon SPECIES_DUSKULL, 25
- wild_mon SPECIES_DUSKULL, 29
-
- .align 2
-gMtPyre_4F_LandMonsInfo:: @ 85515D4
- .4byte 10 @ encounter rate
- .4byte gMtPyre_4F_LandMons
-
- .align 2
-gMtPyre_5F_LandMons:: @ 85515DC
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_SHUPPET, 25
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 23
- wild_mon SPECIES_SHUPPET, 22
- wild_mon SPECIES_DUSKULL, 27
- wild_mon SPECIES_DUSKULL, 27
- wild_mon SPECIES_DUSKULL, 25
- wild_mon SPECIES_DUSKULL, 29
-
- .align 2
-gMtPyre_5F_LandMonsInfo:: @ 855160C
- .4byte 10 @ encounter rate
- .4byte gMtPyre_5F_LandMons
-
- .align 2
-gMtPyre_6F_LandMons:: @ 8551614
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_SHUPPET, 25
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_SHUPPET, 23
- wild_mon SPECIES_SHUPPET, 22
- wild_mon SPECIES_DUSKULL, 27
- wild_mon SPECIES_DUSKULL, 27
- wild_mon SPECIES_DUSKULL, 25
- wild_mon SPECIES_DUSKULL, 29
-
- .align 2
-gMtPyre_6F_LandMonsInfo:: @ 8551644
- .4byte 10 @ encounter rate
- .4byte gMtPyre_6F_LandMons
-
- .align 2
-gMtPyre_Exterior_LandMons:: @ 855164C
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_VULPIX, 29
- wild_mon SPECIES_VULPIX, 27
- wild_mon SPECIES_VULPIX, 29
- wild_mon SPECIES_VULPIX, 25
- wild_mon SPECIES_WINGULL, 27
- wild_mon SPECIES_WINGULL, 27
- wild_mon SPECIES_WINGULL, 26
- wild_mon SPECIES_WINGULL, 28
-
- .align 2
-gMtPyre_Exterior_LandMonsInfo:: @ 855167C
- .4byte 10 @ encounter rate
- .4byte gMtPyre_Exterior_LandMons
-
- .align 2
-gMtPyre_Summit_LandMons:: @ 8551684
- wild_mon SPECIES_SHUPPET, 28
- wild_mon SPECIES_SHUPPET, 29
- wild_mon SPECIES_SHUPPET, 27
- wild_mon SPECIES_SHUPPET, 26
- wild_mon SPECIES_SHUPPET, 30
- wild_mon SPECIES_SHUPPET, 25
- wild_mon SPECIES_SHUPPET, 24
- wild_mon SPECIES_DUSKULL, 28
- wild_mon SPECIES_DUSKULL, 26
- wild_mon SPECIES_DUSKULL, 30
- wild_mon SPECIES_CHIMECHO, 28
- wild_mon SPECIES_CHIMECHO, 28
-
- .align 2
-gMtPyre_Summit_LandMonsInfo:: @ 85516B4
- .4byte 10 @ encounter rate
- .4byte gMtPyre_Summit_LandMons
-
- .align 2
-gGraniteCave_StevensRoom_LandMons:: @ 85516BC
- wild_mon SPECIES_ZUBAT, 7
- wild_mon SPECIES_MAKUHITA, 8
- wild_mon SPECIES_MAKUHITA, 7
- wild_mon SPECIES_ZUBAT, 8
- wild_mon SPECIES_MAKUHITA, 9
- wild_mon SPECIES_ABRA, 8
- wild_mon SPECIES_MAKUHITA, 10
- wild_mon SPECIES_MAKUHITA, 6
- wild_mon SPECIES_ARON, 7
- wild_mon SPECIES_ARON, 8
- wild_mon SPECIES_ARON, 7
- wild_mon SPECIES_ARON, 8
-
- .align 2
-gGraniteCave_StevensRoom_LandMonsInfo:: @ 85516EC
- .4byte 10 @ encounter rate
- .4byte gGraniteCave_StevensRoom_LandMons
-
- .align 2
-gRoute125_WaterMons:: @ 85516F4
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute125_WaterMonsInfo:: @ 8551708
- .4byte 4 @ encounter rate
- .4byte gRoute125_WaterMons
-
- .align 2
-gRoute125_FishingMons:: @ 8551710
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute125_FishingMonsInfo:: @ 8551738
- .4byte 30 @ encounter rate
- .4byte gRoute125_FishingMons
-
- .align 2
-gRoute126_WaterMons:: @ 8551740
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute126_WaterMonsInfo:: @ 8551754
- .4byte 4 @ encounter rate
- .4byte gRoute126_WaterMons
-
- .align 2
-gRoute126_FishingMons:: @ 855175C
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute126_FishingMonsInfo:: @ 8551784
- .4byte 30 @ encounter rate
- .4byte gRoute126_FishingMons
-
- .align 2
-gRoute127_WaterMons:: @ 855178C
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute127_WaterMonsInfo:: @ 85517A0
- .4byte 4 @ encounter rate
- .4byte gRoute127_WaterMons
-
- .align 2
-gRoute127_FishingMons:: @ 85517A8
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute127_FishingMonsInfo:: @ 85517D0
- .4byte 30 @ encounter rate
- .4byte gRoute127_FishingMons
-
- .align 2
-gRoute128_WaterMons:: @ 85517D8
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute128_WaterMonsInfo:: @ 85517EC
- .4byte 4 @ encounter rate
- .4byte gRoute128_WaterMons
-
- .align 2
-gRoute128_FishingMons:: @ 85517F4
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_LUVDISC, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_LUVDISC, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_CORSOLA, 30, 35
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute128_FishingMonsInfo:: @ 855181C
- .4byte 30 @ encounter rate
- .4byte gRoute128_FishingMons
-
- .align 2
-gRoute129_WaterMons:: @ 8551824
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_WAILORD, 25, 30
-
- .align 2
-gRoute129_WaterMonsInfo:: @ 8551838
- .4byte 4 @ encounter rate
- .4byte gRoute129_WaterMons
-
- .align 2
-gRoute129_FishingMons:: @ 8551840
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute129_FishingMonsInfo:: @ 8551868
- .4byte 30 @ encounter rate
- .4byte gRoute129_FishingMons
-
- .align 2
-gRoute130_LandMons:: @ 8551870
- wild_mon SPECIES_WYNAUT, 30
- wild_mon SPECIES_WYNAUT, 35
- wild_mon SPECIES_WYNAUT, 25
- wild_mon SPECIES_WYNAUT, 40
- wild_mon SPECIES_WYNAUT, 20
- wild_mon SPECIES_WYNAUT, 45
- wild_mon SPECIES_WYNAUT, 15
- wild_mon SPECIES_WYNAUT, 50
- wild_mon SPECIES_WYNAUT, 10
- wild_mon SPECIES_WYNAUT, 5
- wild_mon SPECIES_WYNAUT, 10
- wild_mon SPECIES_WYNAUT, 5
-
- .align 2
-gRoute130_LandMonsInfo:: @ 85518A0
- .4byte 20 @ encounter rate
- .4byte gRoute130_LandMons
-
- .align 2
-gRoute130_WaterMons:: @ 85518A8
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute130_WaterMonsInfo:: @ 85518BC
- .4byte 4 @ encounter rate
- .4byte gRoute130_WaterMons
-
- .align 2
-gRoute130_FishingMons:: @ 85518C4
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute130_FishingMonsInfo:: @ 85518EC
- .4byte 30 @ encounter rate
- .4byte gRoute130_FishingMons
-
- .align 2
-gRoute131_WaterMons:: @ 85518F4
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute131_WaterMonsInfo:: @ 8551908
- .4byte 4 @ encounter rate
- .4byte gRoute131_WaterMons
-
- .align 2
-gRoute131_FishingMons:: @ 8551910
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute131_FishingMonsInfo:: @ 8551938
- .4byte 30 @ encounter rate
- .4byte gRoute131_FishingMons
-
- .align 2
-gRoute132_WaterMons:: @ 8551940
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute132_WaterMonsInfo:: @ 8551954
- .4byte 4 @ encounter rate
- .4byte gRoute132_WaterMons
-
- .align 2
-gRoute132_FishingMons:: @ 855195C
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_HORSEA, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute132_FishingMonsInfo:: @ 8551984
- .4byte 30 @ encounter rate
- .4byte gRoute132_FishingMons
-
- .align 2
-gRoute133_WaterMons:: @ 855198C
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute133_WaterMonsInfo:: @ 85519A0
- .4byte 4 @ encounter rate
- .4byte gRoute133_WaterMons
-
- .align 2
-gRoute133_FishingMons:: @ 85519A8
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_HORSEA, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute133_FishingMonsInfo:: @ 85519D0
- .4byte 30 @ encounter rate
- .4byte gRoute133_FishingMons
-
- .align 2
-gRoute134_WaterMons:: @ 85519D8
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gRoute134_WaterMonsInfo:: @ 85519EC
- .4byte 4 @ encounter rate
- .4byte gRoute134_WaterMons
-
- .align 2
-gRoute134_FishingMons:: @ 85519F4
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_HORSEA, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gRoute134_FishingMonsInfo:: @ 8551A1C
- .4byte 30 @ encounter rate
- .4byte gRoute134_FishingMons
-
- .align 2
-gAbandonedShip_HiddenFloorCorridors_WaterMons:: @ 8551A24
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_TENTACRUEL, 30, 35
-
- .align 2
-gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo:: @ 8551A38
- .4byte 4 @ encounter rate
- .4byte gAbandonedShip_HiddenFloorCorridors_WaterMons
-
- .align 2
-gAbandonedShip_HiddenFloorCorridors_FishingMons:: @ 8551A40
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_TENTACOOL, 25, 30
- wild_mon SPECIES_TENTACOOL, 30, 35
- wild_mon SPECIES_TENTACRUEL, 30, 35
- wild_mon SPECIES_TENTACRUEL, 25, 30
- wild_mon SPECIES_TENTACRUEL, 20, 25
-
- .align 2
-gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo:: @ 8551A68
- .4byte 20 @ encounter rate
- .4byte gAbandonedShip_HiddenFloorCorridors_FishingMons
-
- .align 2
-gSeafloorCavern_Room1_LandMons:: @ 8551A70
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gSeafloorCavern_Room1_LandMonsInfo:: @ 8551AA0
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room1_LandMons
-
- .align 2
-gSeafloorCavern_Room2_LandMons:: @ 8551AA8
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gSeafloorCavern_Room2_LandMonsInfo:: @ 8551AD8
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room2_LandMons
-
- .align 2
-gSeafloorCavern_Room3_LandMons:: @ 8551AE0
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gSeafloorCavern_Room3_LandMonsInfo:: @ 8551B10
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room3_LandMons
-
- .align 2
-gSeafloorCavern_Room4_LandMons:: @ 8551B18
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gSeafloorCavern_Room4_LandMonsInfo:: @ 8551B48
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room4_LandMons
-
- .align 2
-gSeafloorCavern_Room5_LandMons:: @ 8551B50
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gSeafloorCavern_Room5_LandMonsInfo:: @ 8551B80
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room5_LandMons
-
- .align 2
-gSeafloorCavern_Room6_LandMons:: @ 8551B88
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gSeafloorCavern_Room6_LandMonsInfo:: @ 8551BB8
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room6_LandMons
-
- .align 2
-gSeafloorCavern_Room6_WaterMons:: @ 8551BC0
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_ZUBAT, 5, 35
- wild_mon SPECIES_ZUBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
-
- .align 2
-gSeafloorCavern_Room6_WaterMonsInfo:: @ 8551BD4
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room6_WaterMons
-
- .align 2
-gSeafloorCavern_Room6_FishingMons:: @ 8551BDC
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gSeafloorCavern_Room6_FishingMonsInfo:: @ 8551C04
- .4byte 10 @ encounter rate
- .4byte gSeafloorCavern_Room6_FishingMons
-
- .align 2
-gSeafloorCavern_Room7_LandMons:: @ 8551C0C
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gSeafloorCavern_Room7_LandMonsInfo:: @ 8551C3C
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room7_LandMons
-
- .align 2
-gSeafloorCavern_Room7_WaterMons:: @ 8551C44
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_ZUBAT, 5, 35
- wild_mon SPECIES_ZUBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
-
- .align 2
-gSeafloorCavern_Room7_WaterMonsInfo:: @ 8551C58
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room7_WaterMons
-
- .align 2
-gSeafloorCavern_Room7_FishingMons:: @ 8551C60
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gSeafloorCavern_Room7_FishingMonsInfo:: @ 8551C88
- .4byte 10 @ encounter rate
- .4byte gSeafloorCavern_Room7_FishingMons
-
- .align 2
-gSeafloorCavern_Room8_LandMons:: @ 8551C90
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gSeafloorCavern_Room8_LandMonsInfo:: @ 8551CC0
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Room8_LandMons
-
- .align 2
-gSeafloorCavern_Entrance_WaterMons:: @ 8551CC8
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_ZUBAT, 5, 35
- wild_mon SPECIES_ZUBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
-
- .align 2
-gSeafloorCavern_Entrance_WaterMonsInfo:: @ 8551CDC
- .4byte 4 @ encounter rate
- .4byte gSeafloorCavern_Entrance_WaterMons
-
- .align 2
-gSeafloorCavern_Entrance_FishingMons:: @ 8551CE4
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gSeafloorCavern_Entrance_FishingMonsInfo:: @ 8551D0C
- .4byte 10 @ encounter rate
- .4byte gSeafloorCavern_Entrance_FishingMons
-
- .align 2
-gCaveOfOrigin_Entrance_LandMons:: @ 8551D14
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_ZUBAT, 29
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_ZUBAT, 35
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gCaveOfOrigin_Entrance_LandMonsInfo:: @ 8551D44
- .4byte 4 @ encounter rate
- .4byte gCaveOfOrigin_Entrance_LandMons
-
- .align 2
-gCaveOfOrigin_1F_LandMons:: @ 8551D4C
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_SABLEYE, 30
- wild_mon SPECIES_SABLEYE, 32
- wild_mon SPECIES_SABLEYE, 34
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gCaveOfOrigin_1F_LandMonsInfo:: @ 8551D7C
- .4byte 4 @ encounter rate
- .4byte gCaveOfOrigin_1F_LandMons
-
- .align 2
-gCaveOfOrigin_UnusedRubySapphireMap1_LandMons:: @ 8551D84
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_SABLEYE, 30
- wild_mon SPECIES_SABLEYE, 32
- wild_mon SPECIES_SABLEYE, 34
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo:: @ 8551DB4
- .4byte 4 @ encounter rate
- .4byte gCaveOfOrigin_UnusedRubySapphireMap1_LandMons
-
- .align 2
-gCaveOfOrigin_UnusedRubySapphireMap2_LandMons:: @ 8551DBC
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_SABLEYE, 30
- wild_mon SPECIES_SABLEYE, 32
- wild_mon SPECIES_SABLEYE, 34
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo:: @ 8551DEC
- .4byte 4 @ encounter rate
- .4byte gCaveOfOrigin_UnusedRubySapphireMap2_LandMons
-
- .align 2
-gCaveOfOrigin_UnusedRubySapphireMap3_LandMons:: @ 8551DF4
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_ZUBAT, 31
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_SABLEYE, 30
- wild_mon SPECIES_SABLEYE, 32
- wild_mon SPECIES_SABLEYE, 34
- wild_mon SPECIES_ZUBAT, 33
- wild_mon SPECIES_ZUBAT, 34
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 36
-
- .align 2
-gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo:: @ 8551E24
- .4byte 4 @ encounter rate
- .4byte gCaveOfOrigin_UnusedRubySapphireMap3_LandMons
-
- .align 2
-gNewMauville_Entrance_LandMons:: @ 8551E2C
- wild_mon SPECIES_VOLTORB, 24
- wild_mon SPECIES_MAGNEMITE, 24
- wild_mon SPECIES_VOLTORB, 25
- wild_mon SPECIES_MAGNEMITE, 25
- wild_mon SPECIES_VOLTORB, 23
- wild_mon SPECIES_MAGNEMITE, 23
- wild_mon SPECIES_VOLTORB, 26
- wild_mon SPECIES_MAGNEMITE, 26
- wild_mon SPECIES_VOLTORB, 22
- wild_mon SPECIES_MAGNEMITE, 22
- wild_mon SPECIES_VOLTORB, 22
- wild_mon SPECIES_MAGNEMITE, 22
-
- .align 2
-gNewMauville_Entrance_LandMonsInfo:: @ 8551E5C
- .4byte 10 @ encounter rate
- .4byte gNewMauville_Entrance_LandMons
-
- .align 2
-gSafariZone_Southwest_LandMons:: @ 8551E64
- wild_mon SPECIES_ODDISH, 25
- wild_mon SPECIES_ODDISH, 27
- wild_mon SPECIES_GIRAFARIG, 25
- wild_mon SPECIES_GIRAFARIG, 27
- wild_mon SPECIES_NATU, 25
- wild_mon SPECIES_DODUO, 27
- wild_mon SPECIES_GLOOM, 25
- wild_mon SPECIES_WOBBUFFET, 27
- wild_mon SPECIES_PIKACHU, 25
- wild_mon SPECIES_WOBBUFFET, 27
- wild_mon SPECIES_PIKACHU, 27
- wild_mon SPECIES_WOBBUFFET, 29
-
- .align 2
-gSafariZone_Southwest_LandMonsInfo:: @ 8551E94
- .4byte 25 @ encounter rate
- .4byte gSafariZone_Southwest_LandMons
-
- .align 2
-gSafariZone_Southwest_WaterMons:: @ 8551E9C
- wild_mon SPECIES_PSYDUCK, 20, 30
- wild_mon SPECIES_PSYDUCK, 20, 30
- wild_mon SPECIES_PSYDUCK, 30, 35
- wild_mon SPECIES_PSYDUCK, 30, 35
- wild_mon SPECIES_PSYDUCK, 30, 35
-
- .align 2
-gSafariZone_Southwest_WaterMonsInfo:: @ 8551EB0
- .4byte 9 @ encounter rate
- .4byte gSafariZone_Southwest_WaterMons
-
- .align 2
-gSafariZone_Southwest_FishingMons:: @ 8551EB8
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 25
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_GOLDEEN, 25, 30
- wild_mon SPECIES_GOLDEEN, 30, 35
- wild_mon SPECIES_SEAKING, 30, 35
- wild_mon SPECIES_SEAKING, 35, 40
- wild_mon SPECIES_SEAKING, 25, 30
-
- .align 2
-gSafariZone_Southwest_FishingMonsInfo:: @ 8551EE0
- .4byte 35 @ encounter rate
- .4byte gSafariZone_Southwest_FishingMons
-
- .align 2
-gSafariZone_North_LandMons:: @ 8551EE8
- wild_mon SPECIES_PHANPY, 27
- wild_mon SPECIES_ODDISH, 27
- wild_mon SPECIES_PHANPY, 29
- wild_mon SPECIES_ODDISH, 29
- wild_mon SPECIES_NATU, 27
- wild_mon SPECIES_GLOOM, 29
- wild_mon SPECIES_GLOOM, 31
- wild_mon SPECIES_NATU, 29
- wild_mon SPECIES_XATU, 29
- wild_mon SPECIES_HERACROSS, 27
- wild_mon SPECIES_XATU, 31
- wild_mon SPECIES_HERACROSS, 29
-
- .align 2
-gSafariZone_North_LandMonsInfo:: @ 8551F18
- .4byte 25 @ encounter rate
- .4byte gSafariZone_North_LandMons
-
- .align 2
-gSafariZone_North_RockSmashMons:: @ 8551F20
- wild_mon SPECIES_GEODUDE, 10, 15
- wild_mon SPECIES_GEODUDE, 5, 10
- wild_mon SPECIES_GEODUDE, 15, 20
- wild_mon SPECIES_GEODUDE, 20, 25
- wild_mon SPECIES_GEODUDE, 25, 30
-
- .align 2
-gSafariZone_North_RockSmashMonsInfo:: @ 8551F34
- .4byte 25 @ encounter rate
- .4byte gSafariZone_North_RockSmashMons
-
- .align 2
-gSafariZone_Northwest_LandMons:: @ 8551F3C
- wild_mon SPECIES_RHYHORN, 27
- wild_mon SPECIES_ODDISH, 27
- wild_mon SPECIES_RHYHORN, 29
- wild_mon SPECIES_ODDISH, 29
- wild_mon SPECIES_DODUO, 27
- wild_mon SPECIES_GLOOM, 29
- wild_mon SPECIES_GLOOM, 31
- wild_mon SPECIES_DODUO, 29
- wild_mon SPECIES_DODRIO, 29
- wild_mon SPECIES_PINSIR, 27
- wild_mon SPECIES_DODRIO, 31
- wild_mon SPECIES_PINSIR, 29
-
- .align 2
-gSafariZone_Northwest_LandMonsInfo:: @ 8551F6C
- .4byte 25 @ encounter rate
- .4byte gSafariZone_Northwest_LandMons
-
- .align 2
-gSafariZone_Northwest_WaterMons:: @ 8551F74
- wild_mon SPECIES_PSYDUCK, 20, 30
- wild_mon SPECIES_PSYDUCK, 20, 30
- wild_mon SPECIES_PSYDUCK, 30, 35
- wild_mon SPECIES_GOLDUCK, 30, 35
- wild_mon SPECIES_GOLDUCK, 25, 40
-
- .align 2
-gSafariZone_Northwest_WaterMonsInfo:: @ 8551F88
- .4byte 9 @ encounter rate
- .4byte gSafariZone_Northwest_WaterMons
-
- .align 2
-gSafariZone_Northwest_FishingMons:: @ 8551F90
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 25
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_GOLDEEN, 25, 30
- wild_mon SPECIES_GOLDEEN, 30, 35
- wild_mon SPECIES_SEAKING, 30, 35
- wild_mon SPECIES_SEAKING, 35, 40
- wild_mon SPECIES_SEAKING, 25, 30
-
- .align 2
-gSafariZone_Northwest_FishingMonsInfo:: @ 8551FB8
- .4byte 35 @ encounter rate
- .4byte gSafariZone_Northwest_FishingMons
-
- .align 2
-gVictoryRoad_B1F_LandMons:: @ 8551FC0
- wild_mon SPECIES_GOLBAT, 40
- wild_mon SPECIES_HARIYAMA, 40
- wild_mon SPECIES_LAIRON, 40
- wild_mon SPECIES_LAIRON, 40
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_HARIYAMA, 38
- wild_mon SPECIES_GOLBAT, 42
- wild_mon SPECIES_HARIYAMA, 42
- wild_mon SPECIES_LAIRON, 42
- wild_mon SPECIES_MAWILE, 38
- wild_mon SPECIES_LAIRON, 42
- wild_mon SPECIES_MAWILE, 38
-
- .align 2
-gVictoryRoad_B1F_LandMonsInfo:: @ 8551FF0
- .4byte 10 @ encounter rate
- .4byte gVictoryRoad_B1F_LandMons
-
- .align 2
-gVictoryRoad_B1F_RockSmashMons:: @ 8551FF8
- wild_mon SPECIES_GRAVELER, 30, 40
- wild_mon SPECIES_GEODUDE, 30, 40
- wild_mon SPECIES_GRAVELER, 35, 40
- wild_mon SPECIES_GRAVELER, 35, 40
- wild_mon SPECIES_GRAVELER, 35, 40
-
- .align 2
-gVictoryRoad_B1F_RockSmashMonsInfo:: @ 855200C
- .4byte 20 @ encounter rate
- .4byte gVictoryRoad_B1F_RockSmashMons
-
- .align 2
-gVictoryRoad_B2F_LandMons:: @ 8552014
- wild_mon SPECIES_GOLBAT, 40
- wild_mon SPECIES_SABLEYE, 40
- wild_mon SPECIES_LAIRON, 40
- wild_mon SPECIES_LAIRON, 40
- wild_mon SPECIES_GOLBAT, 42
- wild_mon SPECIES_SABLEYE, 42
- wild_mon SPECIES_GOLBAT, 44
- wild_mon SPECIES_SABLEYE, 44
- wild_mon SPECIES_LAIRON, 42
- wild_mon SPECIES_MAWILE, 42
- wild_mon SPECIES_LAIRON, 44
- wild_mon SPECIES_MAWILE, 44
-
- .align 2
-gVictoryRoad_B2F_LandMonsInfo:: @ 8552044
- .4byte 10 @ encounter rate
- .4byte gVictoryRoad_B2F_LandMons
-
- .align 2
-gVictoryRoad_B2F_WaterMons:: @ 855204C
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 25, 30
- wild_mon SPECIES_GOLBAT, 35, 40
- wild_mon SPECIES_GOLBAT, 35, 40
- wild_mon SPECIES_GOLBAT, 35, 40
-
- .align 2
-gVictoryRoad_B2F_WaterMonsInfo:: @ 8552060
- .4byte 4 @ encounter rate
- .4byte gVictoryRoad_B2F_WaterMons
-
- .align 2
-gVictoryRoad_B2F_FishingMons:: @ 8552068
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_BARBOACH, 10, 30
- wild_mon SPECIES_BARBOACH, 25, 30
- wild_mon SPECIES_BARBOACH, 30, 35
- wild_mon SPECIES_WHISCASH, 30, 35
- wild_mon SPECIES_WHISCASH, 35, 40
- wild_mon SPECIES_WHISCASH, 40, 45
-
- .align 2
-gVictoryRoad_B2F_FishingMonsInfo:: @ 8552090
- .4byte 30 @ encounter rate
- .4byte gVictoryRoad_B2F_FishingMons
-
- .align 2
-gMeteorFalls_1F_1R_LandMons:: @ 8552098
- wild_mon SPECIES_ZUBAT, 16
- wild_mon SPECIES_ZUBAT, 17
- wild_mon SPECIES_ZUBAT, 18
- wild_mon SPECIES_ZUBAT, 15
- wild_mon SPECIES_ZUBAT, 14
- wild_mon SPECIES_SOLROCK, 16
- wild_mon SPECIES_SOLROCK, 18
- wild_mon SPECIES_SOLROCK, 14
- wild_mon SPECIES_ZUBAT, 19
- wild_mon SPECIES_ZUBAT, 20
- wild_mon SPECIES_ZUBAT, 19
- wild_mon SPECIES_ZUBAT, 20
-
- .align 2
-gMeteorFalls_1F_1R_LandMonsInfo:: @ 85520C8
- .4byte 10 @ encounter rate
- .4byte gMeteorFalls_1F_1R_LandMons
-
- .align 2
-gMeteorFalls_1F_1R_WaterMons:: @ 85520D0
- wild_mon SPECIES_ZUBAT, 5, 35
- wild_mon SPECIES_ZUBAT, 30, 35
- wild_mon SPECIES_SOLROCK, 25, 35
- wild_mon SPECIES_SOLROCK, 15, 25
- wild_mon SPECIES_SOLROCK, 5, 15
-
- .align 2
-gMeteorFalls_1F_1R_WaterMonsInfo:: @ 85520E4
- .4byte 4 @ encounter rate
- .4byte gMeteorFalls_1F_1R_WaterMons
-
- .align 2
-gMeteorFalls_1F_1R_FishingMons:: @ 85520EC
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_BARBOACH, 10, 30
- wild_mon SPECIES_BARBOACH, 25, 30
- wild_mon SPECIES_BARBOACH, 30, 35
- wild_mon SPECIES_BARBOACH, 20, 25
- wild_mon SPECIES_BARBOACH, 35, 40
- wild_mon SPECIES_BARBOACH, 40, 45
-
- .align 2
-gMeteorFalls_1F_1R_FishingMonsInfo:: @ 8552114
- .4byte 30 @ encounter rate
- .4byte gMeteorFalls_1F_1R_FishingMons
-
- .align 2
-gMeteorFalls_1F_2R_LandMons:: @ 855211C
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_SOLROCK, 35
- wild_mon SPECIES_SOLROCK, 33
- wild_mon SPECIES_SOLROCK, 37
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_SOLROCK, 39
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_GOLBAT, 40
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_GOLBAT, 40
-
- .align 2
-gMeteorFalls_1F_2R_LandMonsInfo:: @ 855214C
- .4byte 10 @ encounter rate
- .4byte gMeteorFalls_1F_2R_LandMons
-
- .align 2
-gMeteorFalls_1F_2R_WaterMons:: @ 8552154
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_SOLROCK, 25, 35
- wild_mon SPECIES_SOLROCK, 15, 25
- wild_mon SPECIES_SOLROCK, 5, 15
-
- .align 2
-gMeteorFalls_1F_2R_WaterMonsInfo:: @ 8552168
- .4byte 4 @ encounter rate
- .4byte gMeteorFalls_1F_2R_WaterMons
-
- .align 2
-gMeteorFalls_1F_2R_FishingMons:: @ 8552170
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_BARBOACH, 10, 30
- wild_mon SPECIES_BARBOACH, 25, 30
- wild_mon SPECIES_BARBOACH, 30, 35
- wild_mon SPECIES_WHISCASH, 30, 35
- wild_mon SPECIES_WHISCASH, 35, 40
- wild_mon SPECIES_WHISCASH, 40, 45
-
- .align 2
-gMeteorFalls_1F_2R_FishingMonsInfo:: @ 8552198
- .4byte 30 @ encounter rate
- .4byte gMeteorFalls_1F_2R_FishingMons
-
- .align 2
-gMeteorFalls_B1F_1R_LandMons:: @ 85521A0
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_SOLROCK, 35
- wild_mon SPECIES_SOLROCK, 33
- wild_mon SPECIES_SOLROCK, 37
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_SOLROCK, 39
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_GOLBAT, 40
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_GOLBAT, 40
-
- .align 2
-gMeteorFalls_B1F_1R_LandMonsInfo:: @ 85521D0
- .4byte 10 @ encounter rate
- .4byte gMeteorFalls_B1F_1R_LandMons
-
- .align 2
-gMeteorFalls_B1F_1R_WaterMons:: @ 85521D8
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_GOLBAT, 30, 35
- wild_mon SPECIES_SOLROCK, 25, 35
- wild_mon SPECIES_SOLROCK, 15, 25
- wild_mon SPECIES_SOLROCK, 5, 15
-
- .align 2
-gMeteorFalls_B1F_1R_WaterMonsInfo:: @ 85521EC
- .4byte 4 @ encounter rate
- .4byte gMeteorFalls_B1F_1R_WaterMons
-
- .align 2
-gMeteorFalls_B1F_1R_FishingMons:: @ 85521F4
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_BARBOACH, 10, 30
- wild_mon SPECIES_BARBOACH, 25, 30
- wild_mon SPECIES_BARBOACH, 30, 35
- wild_mon SPECIES_WHISCASH, 30, 35
- wild_mon SPECIES_WHISCASH, 35, 40
- wild_mon SPECIES_WHISCASH, 40, 45
-
- .align 2
-gMeteorFalls_B1F_1R_FishingMonsInfo:: @ 855221C
- .4byte 30 @ encounter rate
- .4byte gMeteorFalls_B1F_1R_FishingMons
-
- .align 2
-gShoalCave_LowTideStairsRoom_LandMons:: @ 8552224
- wild_mon SPECIES_ZUBAT, 26
- wild_mon SPECIES_SPHEAL, 26
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_SPHEAL, 28
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_SPHEAL, 30
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SPHEAL, 32
-
- .align 2
-gShoalCave_LowTideStairsRoom_LandMonsInfo:: @ 8552254
- .4byte 10 @ encounter rate
- .4byte gShoalCave_LowTideStairsRoom_LandMons
-
- .align 2
-gShoalCave_LowTideLowerRoom_LandMons:: @ 855225C
- wild_mon SPECIES_ZUBAT, 26
- wild_mon SPECIES_SPHEAL, 26
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_SPHEAL, 28
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_SPHEAL, 30
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SPHEAL, 32
-
- .align 2
-gShoalCave_LowTideLowerRoom_LandMonsInfo:: @ 855228C
- .4byte 10 @ encounter rate
- .4byte gShoalCave_LowTideLowerRoom_LandMons
-
- .align 2
-gShoalCave_LowTideInnerRoom_LandMons:: @ 8552294
- wild_mon SPECIES_ZUBAT, 26
- wild_mon SPECIES_SPHEAL, 26
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_SPHEAL, 28
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_SPHEAL, 30
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SPHEAL, 32
-
- .align 2
-gShoalCave_LowTideInnerRoom_LandMonsInfo:: @ 85522C4
- .4byte 10 @ encounter rate
- .4byte gShoalCave_LowTideInnerRoom_LandMons
-
- .align 2
-gShoalCave_LowTideInnerRoom_WaterMons:: @ 85522CC
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_ZUBAT, 5, 35
- wild_mon SPECIES_SPHEAL, 25, 30
- wild_mon SPECIES_SPHEAL, 25, 30
- wild_mon SPECIES_SPHEAL, 25, 35
-
- .align 2
-gShoalCave_LowTideInnerRoom_WaterMonsInfo:: @ 85522E0
- .4byte 4 @ encounter rate
- .4byte gShoalCave_LowTideInnerRoom_WaterMons
-
- .align 2
-gShoalCave_LowTideInnerRoom_FishingMons:: @ 85522E8
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gShoalCave_LowTideInnerRoom_FishingMonsInfo:: @ 8552310
- .4byte 10 @ encounter rate
- .4byte gShoalCave_LowTideInnerRoom_FishingMons
-
- .align 2
-gShoalCave_LowTideEntranceRoom_LandMons:: @ 8552318
- wild_mon SPECIES_ZUBAT, 26
- wild_mon SPECIES_SPHEAL, 26
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_SPHEAL, 28
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_SPHEAL, 30
- wild_mon SPECIES_ZUBAT, 32
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SPHEAL, 32
-
- .align 2
-gShoalCave_LowTideEntranceRoom_LandMonsInfo:: @ 8552348
- .4byte 10 @ encounter rate
- .4byte gShoalCave_LowTideEntranceRoom_LandMons
-
- .align 2
-gShoalCave_LowTideEntranceRoom_WaterMons:: @ 8552350
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_ZUBAT, 5, 35
- wild_mon SPECIES_SPHEAL, 25, 30
- wild_mon SPECIES_SPHEAL, 25, 30
- wild_mon SPECIES_SPHEAL, 25, 35
-
- .align 2
-gShoalCave_LowTideEntranceRoom_WaterMonsInfo:: @ 8552364
- .4byte 4 @ encounter rate
- .4byte gShoalCave_LowTideEntranceRoom_WaterMons
-
- .align 2
-gShoalCave_LowTideEntranceRoom_FishingMons:: @ 855236C
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gShoalCave_LowTideEntranceRoom_FishingMonsInfo:: @ 8552394
- .4byte 10 @ encounter rate
- .4byte gShoalCave_LowTideEntranceRoom_FishingMons
-
- .align 2
-gLilycoveCity_WaterMons:: @ 855239C
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gLilycoveCity_WaterMonsInfo:: @ 85523B0
- .4byte 4 @ encounter rate
- .4byte gLilycoveCity_WaterMons
-
- .align 2
-gLilycoveCity_FishingMons:: @ 85523B8
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_STARYU, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gLilycoveCity_FishingMonsInfo:: @ 85523E0
- .4byte 10 @ encounter rate
- .4byte gLilycoveCity_FishingMons
-
- .align 2
-gDewfordTown_WaterMons:: @ 85523E8
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gDewfordTown_WaterMonsInfo:: @ 85523FC
- .4byte 4 @ encounter rate
- .4byte gDewfordTown_WaterMons
-
- .align 2
-gDewfordTown_FishingMons:: @ 8552404
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gDewfordTown_FishingMonsInfo:: @ 855242C
- .4byte 10 @ encounter rate
- .4byte gDewfordTown_FishingMons
-
- .align 2
-gSlateportCity_WaterMons:: @ 8552434
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gSlateportCity_WaterMonsInfo:: @ 8552448
- .4byte 4 @ encounter rate
- .4byte gSlateportCity_WaterMons
-
- .align 2
-gSlateportCity_FishingMons:: @ 8552450
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 20, 25
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gSlateportCity_FishingMonsInfo:: @ 8552478
- .4byte 10 @ encounter rate
- .4byte gSlateportCity_FishingMons
-
- .align 2
-gMossdeepCity_WaterMons:: @ 8552480
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gMossdeepCity_WaterMonsInfo:: @ 8552494
- .4byte 4 @ encounter rate
- .4byte gMossdeepCity_WaterMons
-
- .align 2
-gMossdeepCity_FishingMons:: @ 855249C
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gMossdeepCity_FishingMonsInfo:: @ 85524C4
- .4byte 10 @ encounter rate
- .4byte gMossdeepCity_FishingMons
-
- .align 2
-gPacifidlogTown_WaterMons:: @ 85524CC
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gPacifidlogTown_WaterMonsInfo:: @ 85524E0
- .4byte 4 @ encounter rate
- .4byte gPacifidlogTown_WaterMons
-
- .align 2
-gPacifidlogTown_FishingMons:: @ 85524E8
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_TENTACOOL, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_SHARPEDO, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_WAILMER, 25, 30
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gPacifidlogTown_FishingMonsInfo:: @ 8552510
- .4byte 10 @ encounter rate
- .4byte gPacifidlogTown_FishingMons
-
- .align 2
-gEverGrandeCity_WaterMons:: @ 8552518
- wild_mon SPECIES_TENTACOOL, 5, 35
- wild_mon SPECIES_WINGULL, 10, 30
- wild_mon SPECIES_WINGULL, 15, 25
- wild_mon SPECIES_PELIPPER, 25, 30
- wild_mon SPECIES_PELIPPER, 25, 30
-
- .align 2
-gEverGrandeCity_WaterMonsInfo:: @ 855252C
- .4byte 4 @ encounter rate
- .4byte gEverGrandeCity_WaterMons
-
- .align 2
-gEverGrandeCity_FishingMons:: @ 8552534
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_LUVDISC, 10, 30
- wild_mon SPECIES_WAILMER, 10, 30
- wild_mon SPECIES_LUVDISC, 30, 35
- wild_mon SPECIES_WAILMER, 30, 35
- wild_mon SPECIES_CORSOLA, 30, 35
- wild_mon SPECIES_WAILMER, 35, 40
- wild_mon SPECIES_WAILMER, 40, 45
-
- .align 2
-gEverGrandeCity_FishingMonsInfo:: @ 855255C
- .4byte 10 @ encounter rate
- .4byte gEverGrandeCity_FishingMons
-
- .align 2
-gPetalburgCity_WaterMons:: @ 8552564
- wild_mon SPECIES_MARILL, 20, 30
- wild_mon SPECIES_MARILL, 10, 20
- wild_mon SPECIES_MARILL, 30, 35
- wild_mon SPECIES_MARILL, 5, 10
- wild_mon SPECIES_MARILL, 5, 10
-
- .align 2
-gPetalburgCity_WaterMonsInfo:: @ 8552578
- .4byte 1 @ encounter rate
- .4byte gPetalburgCity_WaterMons
-
- .align 2
-gPetalburgCity_FishingMons:: @ 8552580
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_GOLDEEN, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_GOLDEEN, 10, 30
- wild_mon SPECIES_CORPHISH, 10, 30
- wild_mon SPECIES_CORPHISH, 25, 30
- wild_mon SPECIES_CORPHISH, 30, 35
- wild_mon SPECIES_CORPHISH, 20, 25
- wild_mon SPECIES_CORPHISH, 35, 40
- wild_mon SPECIES_CORPHISH, 40, 45
-
- .align 2
-gPetalburgCity_FishingMonsInfo:: @ 85525A8
- .4byte 10 @ encounter rate
- .4byte gPetalburgCity_FishingMons
-
- .align 2
-gUnderwater1_WaterMons:: @ 85525B0
- wild_mon SPECIES_CLAMPERL, 20, 30
- wild_mon SPECIES_CHINCHOU, 20, 30
- wild_mon SPECIES_CLAMPERL, 30, 35
- wild_mon SPECIES_RELICANTH, 30, 35
- wild_mon SPECIES_RELICANTH, 30, 35
-
- .align 2
-gUnderwater1_WaterMonsInfo:: @ 85525C4
- .4byte 4 @ encounter rate
- .4byte gUnderwater1_WaterMons
-
- .align 2
-gShoalCave_LowTideIceRoom_LandMons:: @ 85525CC
- wild_mon SPECIES_ZUBAT, 26
- wild_mon SPECIES_SPHEAL, 26
- wild_mon SPECIES_ZUBAT, 28
- wild_mon SPECIES_SPHEAL, 28
- wild_mon SPECIES_ZUBAT, 30
- wild_mon SPECIES_SPHEAL, 30
- wild_mon SPECIES_SNORUNT, 26
- wild_mon SPECIES_SPHEAL, 32
- wild_mon SPECIES_GOLBAT, 30
- wild_mon SPECIES_SNORUNT, 28
- wild_mon SPECIES_GOLBAT, 32
- wild_mon SPECIES_SNORUNT, 30
-
- .align 2
-gShoalCave_LowTideIceRoom_LandMonsInfo:: @ 85525FC
- .4byte 10 @ encounter rate
- .4byte gShoalCave_LowTideIceRoom_LandMons
-
- .align 2
-gSkyPillar_1F_LandMons:: @ 8552604
- wild_mon SPECIES_SABLEYE, 33
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_SABLEYE, 34
- wild_mon SPECIES_CLAYDOL, 36
- wild_mon SPECIES_BANETTE, 37
- wild_mon SPECIES_BANETTE, 38
- wild_mon SPECIES_CLAYDOL, 36
- wild_mon SPECIES_CLAYDOL, 37
- wild_mon SPECIES_CLAYDOL, 38
- wild_mon SPECIES_CLAYDOL, 37
- wild_mon SPECIES_CLAYDOL, 38
-
- .align 2
-gSkyPillar_1F_LandMonsInfo:: @ 8552634
- .4byte 10 @ encounter rate
- .4byte gSkyPillar_1F_LandMons
-
- .align 2
-gSootopolisCity_WaterMons:: @ 855263C
- wild_mon SPECIES_MAGIKARP, 5, 35
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_MAGIKARP, 15, 25
- wild_mon SPECIES_MAGIKARP, 25, 30
- wild_mon SPECIES_MAGIKARP, 25, 30
-
- .align 2
-gSootopolisCity_WaterMonsInfo:: @ 8552650
- .4byte 1 @ encounter rate
- .4byte gSootopolisCity_WaterMons
-
- .align 2
-gSootopolisCity_FishingMons:: @ 8552658
- wild_mon SPECIES_MAGIKARP, 5, 10
- wild_mon SPECIES_TENTACOOL, 5, 10
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_MAGIKARP, 10, 30
- wild_mon SPECIES_MAGIKARP, 30, 35
- wild_mon SPECIES_MAGIKARP, 30, 35
- wild_mon SPECIES_GYARADOS, 35, 40
- wild_mon SPECIES_GYARADOS, 35, 45
- wild_mon SPECIES_GYARADOS, 5, 45
-
- .align 2
-gSootopolisCity_FishingMonsInfo:: @ 8552680
- .4byte 10 @ encounter rate
- .4byte gSootopolisCity_FishingMons
-
- .align 2
-gSkyPillar_3F_LandMons:: @ 8552688
- wild_mon SPECIES_SABLEYE, 33
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_SABLEYE, 34
- wild_mon SPECIES_CLAYDOL, 36
- wild_mon SPECIES_BANETTE, 37
- wild_mon SPECIES_BANETTE, 38
- wild_mon SPECIES_CLAYDOL, 36
- wild_mon SPECIES_CLAYDOL, 37
- wild_mon SPECIES_CLAYDOL, 38
- wild_mon SPECIES_CLAYDOL, 37
- wild_mon SPECIES_CLAYDOL, 38
-
- .align 2
-gSkyPillar_3F_LandMonsInfo:: @ 85526B8
- .4byte 10 @ encounter rate
- .4byte gSkyPillar_3F_LandMons
-
- .align 2
-gSkyPillar_5F_LandMons:: @ 85526C0
- wild_mon SPECIES_SABLEYE, 33
- wild_mon SPECIES_GOLBAT, 34
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_SABLEYE, 34
- wild_mon SPECIES_CLAYDOL, 36
- wild_mon SPECIES_BANETTE, 37
- wild_mon SPECIES_BANETTE, 38
- wild_mon SPECIES_CLAYDOL, 36
- wild_mon SPECIES_CLAYDOL, 37
- wild_mon SPECIES_ALTARIA, 38
- wild_mon SPECIES_ALTARIA, 39
- wild_mon SPECIES_ALTARIA, 39
-
- .align 2
-gSkyPillar_5F_LandMonsInfo:: @ 85526F0
- .4byte 10 @ encounter rate
- .4byte gSkyPillar_5F_LandMons
-
- .align 2
-gSafariZone_Southeast_LandMons:: @ 85526F8
- wild_mon SPECIES_SUNKERN, 33
- wild_mon SPECIES_MAREEP, 34
- wild_mon SPECIES_SUNKERN, 35
- wild_mon SPECIES_MAREEP, 36
- wild_mon SPECIES_AIPOM, 34
- wild_mon SPECIES_SPINARAK, 33
- wild_mon SPECIES_HOOTHOOT, 35
- wild_mon SPECIES_SNUBBULL, 34
- wild_mon SPECIES_STANTLER, 36
- wild_mon SPECIES_GLIGAR, 37
- wild_mon SPECIES_STANTLER, 39
- wild_mon SPECIES_GLIGAR, 40
-
- .align 2
-gSafariZone_Southeast_LandMonsInfo:: @ 8552728
- .4byte 25 @ encounter rate
- .4byte gSafariZone_Southeast_LandMons
-
- .align 2
-gSafariZone_Southeast_WaterMons:: @ 8552730
- wild_mon SPECIES_WOOPER, 25, 30
- wild_mon SPECIES_MARILL, 25, 30
- wild_mon SPECIES_MARILL, 25, 30
- wild_mon SPECIES_MARILL, 30, 35
- wild_mon SPECIES_QUAGSIRE, 35, 40
-
- .align 2
-gSafariZone_Southeast_WaterMonsInfo:: @ 8552744
- .4byte 9 @ encounter rate
- .4byte gSafariZone_Southeast_WaterMons
-
- .align 2
-gSafariZone_Southeast_FishingMons:: @ 855274C
- wild_mon SPECIES_MAGIKARP, 25, 30
- wild_mon SPECIES_GOLDEEN, 25, 30
- wild_mon SPECIES_MAGIKARP, 25, 30
- wild_mon SPECIES_GOLDEEN, 25, 30
- wild_mon SPECIES_REMORAID, 30, 35
- wild_mon SPECIES_GOLDEEN, 25, 30
- wild_mon SPECIES_REMORAID, 25, 30
- wild_mon SPECIES_REMORAID, 30, 35
- wild_mon SPECIES_REMORAID, 30, 35
- wild_mon SPECIES_OCTILLERY, 35, 40
-
- .align 2
-gSafariZone_Southeast_FishingMonsInfo:: @ 8552774
- .4byte 35 @ encounter rate
- .4byte gSafariZone_Southeast_FishingMons
-
- .align 2
-gSafariZone_Northeast_LandMons:: @ 855277C
- wild_mon SPECIES_AIPOM, 33
- wild_mon SPECIES_TEDDIURSA, 34
- wild_mon SPECIES_AIPOM, 35
- wild_mon SPECIES_TEDDIURSA, 36
- wild_mon SPECIES_SUNKERN, 34
- wild_mon SPECIES_LEDYBA, 33
- wild_mon SPECIES_HOOTHOOT, 35
- wild_mon SPECIES_PINECO, 34
- wild_mon SPECIES_HOUNDOUR, 36
- wild_mon SPECIES_MILTANK, 37
- wild_mon SPECIES_HOUNDOUR, 39
- wild_mon SPECIES_MILTANK, 40
-
- .align 2
-gSafariZone_Northeast_LandMonsInfo:: @ 85527AC
- .4byte 25 @ encounter rate
- .4byte gSafariZone_Northeast_LandMons
-
- .align 2
-gSafariZone_Northeast_RockSmashMons:: @ 85527B4
- wild_mon SPECIES_SHUCKLE, 25, 30
- wild_mon SPECIES_SHUCKLE, 20, 25
- wild_mon SPECIES_SHUCKLE, 30, 35
- wild_mon SPECIES_SHUCKLE, 30, 35
- wild_mon SPECIES_SHUCKLE, 35, 40
-
- .align 2
-gSafariZone_Northeast_RockSmashMonsInfo:: @ 85527C8
- .4byte 25 @ encounter rate
- .4byte gSafariZone_Northeast_RockSmashMons
-
- .align 2
-gMagmaHideout_1F_LandMons:: @ 85527D0
- wild_mon SPECIES_GEODUDE, 27
- wild_mon SPECIES_TORKOAL, 28
- wild_mon SPECIES_GEODUDE, 28
- wild_mon SPECIES_TORKOAL, 30
- wild_mon SPECIES_GEODUDE, 29
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 31
- wild_mon SPECIES_GRAVELER, 32
- wild_mon SPECIES_GRAVELER, 33
-
- .align 2
-gMagmaHideout_1F_LandMonsInfo:: @ 8552800
- .4byte 10 @ encounter rate
- .4byte gMagmaHideout_1F_LandMons
-
- .align 2
-gMagmaHideout_2F_1R_LandMons:: @ 8552808
- wild_mon SPECIES_GEODUDE, 27
- wild_mon SPECIES_TORKOAL, 28
- wild_mon SPECIES_GEODUDE, 28
- wild_mon SPECIES_TORKOAL, 30
- wild_mon SPECIES_GEODUDE, 29
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 31
- wild_mon SPECIES_GRAVELER, 32
- wild_mon SPECIES_GRAVELER, 33
-
- .align 2
-gMagmaHideout_2F_1R_LandMonsInfo:: @ 8552838
- .4byte 10 @ encounter rate
- .4byte gMagmaHideout_2F_1R_LandMons
-
- .align 2
-gMagmaHideout_2F_2R_LandMons:: @ 8552840
- wild_mon SPECIES_GEODUDE, 27
- wild_mon SPECIES_TORKOAL, 28
- wild_mon SPECIES_GEODUDE, 28
- wild_mon SPECIES_TORKOAL, 30
- wild_mon SPECIES_GEODUDE, 29
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 31
- wild_mon SPECIES_GRAVELER, 32
- wild_mon SPECIES_GRAVELER, 33
-
- .align 2
-gMagmaHideout_2F_2R_LandMonsInfo:: @ 8552870
- .4byte 10 @ encounter rate
- .4byte gMagmaHideout_2F_2R_LandMons
-
- .align 2
-gMagmaHideout_3F_1R_LandMons:: @ 8552878
- wild_mon SPECIES_GEODUDE, 27
- wild_mon SPECIES_TORKOAL, 28
- wild_mon SPECIES_GEODUDE, 28
- wild_mon SPECIES_TORKOAL, 30
- wild_mon SPECIES_GEODUDE, 29
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 31
- wild_mon SPECIES_GRAVELER, 32
- wild_mon SPECIES_GRAVELER, 33
-
- .align 2
-gMagmaHideout_3F_1R_LandMonsInfo:: @ 85528A8
- .4byte 10 @ encounter rate
- .4byte gMagmaHideout_3F_1R_LandMons
-
- .align 2
-gMagmaHideout_3F_2R_LandMons:: @ 85528B0
- wild_mon SPECIES_GEODUDE, 27
- wild_mon SPECIES_TORKOAL, 28
- wild_mon SPECIES_GEODUDE, 28
- wild_mon SPECIES_TORKOAL, 30
- wild_mon SPECIES_GEODUDE, 29
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 31
- wild_mon SPECIES_GRAVELER, 32
- wild_mon SPECIES_GRAVELER, 33
-
- .align 2
-gMagmaHideout_3F_2R_LandMonsInfo:: @ 85528E0
- .4byte 10 @ encounter rate
- .4byte gMagmaHideout_3F_2R_LandMons
-
- .align 2
-gMagmaHideout_4F_LandMons:: @ 85528E8
- wild_mon SPECIES_GEODUDE, 27
- wild_mon SPECIES_TORKOAL, 28
- wild_mon SPECIES_GEODUDE, 28
- wild_mon SPECIES_TORKOAL, 30
- wild_mon SPECIES_GEODUDE, 29
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 31
- wild_mon SPECIES_GRAVELER, 32
- wild_mon SPECIES_GRAVELER, 33
-
- .align 2
-gMagmaHideout_4F_LandMonsInfo:: @ 8552918
- .4byte 10 @ encounter rate
- .4byte gMagmaHideout_4F_LandMons
-
- .align 2
-gMagmaHideout_3F_3R_LandMons:: @ 8552920
- wild_mon SPECIES_GEODUDE, 27
- wild_mon SPECIES_TORKOAL, 28
- wild_mon SPECIES_GEODUDE, 28
- wild_mon SPECIES_TORKOAL, 30
- wild_mon SPECIES_GEODUDE, 29
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 31
- wild_mon SPECIES_GRAVELER, 32
- wild_mon SPECIES_GRAVELER, 33
-
- .align 2
-gMagmaHideout_3F_3R_LandMonsInfo:: @ 8552950
- .4byte 10 @ encounter rate
- .4byte gMagmaHideout_3F_3R_LandMons
-
- .align 2
-gMagmaHideout_2F_3R_LandMons:: @ 8552958
- wild_mon SPECIES_GEODUDE, 27
- wild_mon SPECIES_TORKOAL, 28
- wild_mon SPECIES_GEODUDE, 28
- wild_mon SPECIES_TORKOAL, 30
- wild_mon SPECIES_GEODUDE, 29
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GEODUDE, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 30
- wild_mon SPECIES_GRAVELER, 31
- wild_mon SPECIES_GRAVELER, 32
- wild_mon SPECIES_GRAVELER, 33
-
- .align 2
-gMagmaHideout_2F_3R_LandMonsInfo:: @ 8552988
- .4byte 10 @ encounter rate
- .4byte gMagmaHideout_2F_3R_LandMons
-
- .align 2
-gMirageTower_1F_LandMons:: @ 8552990
- wild_mon SPECIES_SANDSHREW, 21
- wild_mon SPECIES_TRAPINCH, 21
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 22
- wild_mon SPECIES_TRAPINCH, 22
- wild_mon SPECIES_SANDSHREW, 23
- wild_mon SPECIES_TRAPINCH, 23
- wild_mon SPECIES_SANDSHREW, 24
- wild_mon SPECIES_TRAPINCH, 24
-
- .align 2
-gMirageTower_1F_LandMonsInfo:: @ 85529C0
- .4byte 10 @ encounter rate
- .4byte gMirageTower_1F_LandMons
-
- .align 2
-gMirageTower_2F_LandMons:: @ 85529C8
- wild_mon SPECIES_SANDSHREW, 21
- wild_mon SPECIES_TRAPINCH, 21
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 22
- wild_mon SPECIES_TRAPINCH, 22
- wild_mon SPECIES_SANDSHREW, 23
- wild_mon SPECIES_TRAPINCH, 23
- wild_mon SPECIES_SANDSHREW, 24
- wild_mon SPECIES_TRAPINCH, 24
-
- .align 2
-gMirageTower_2F_LandMonsInfo:: @ 85529F8
- .4byte 10 @ encounter rate
- .4byte gMirageTower_2F_LandMons
-
- .align 2
-gMirageTower_3F_LandMons:: @ 8552A00
- wild_mon SPECIES_SANDSHREW, 21
- wild_mon SPECIES_TRAPINCH, 21
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 22
- wild_mon SPECIES_TRAPINCH, 22
- wild_mon SPECIES_SANDSHREW, 23
- wild_mon SPECIES_TRAPINCH, 23
- wild_mon SPECIES_SANDSHREW, 24
- wild_mon SPECIES_TRAPINCH, 24
-
- .align 2
-gMirageTower_3F_LandMonsInfo:: @ 8552A30
- .4byte 10 @ encounter rate
- .4byte gMirageTower_3F_LandMons
-
- .align 2
-gMirageTower_4F_LandMons:: @ 8552A38
- wild_mon SPECIES_SANDSHREW, 21
- wild_mon SPECIES_TRAPINCH, 21
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 20
- wild_mon SPECIES_TRAPINCH, 20
- wild_mon SPECIES_SANDSHREW, 22
- wild_mon SPECIES_TRAPINCH, 22
- wild_mon SPECIES_SANDSHREW, 23
- wild_mon SPECIES_TRAPINCH, 23
- wild_mon SPECIES_SANDSHREW, 24
- wild_mon SPECIES_TRAPINCH, 24
-
- .align 2
-gMirageTower_4F_LandMonsInfo:: @ 8552A68
- .4byte 10 @ encounter rate
- .4byte gMirageTower_4F_LandMons
-
- .align 2
-gDesertUnderpass_LandMons:: @ 8552A70
- wild_mon SPECIES_DITTO, 38
- wild_mon SPECIES_WHISMUR, 35
- wild_mon SPECIES_DITTO, 40
- wild_mon SPECIES_LOUDRED, 40
- wild_mon SPECIES_DITTO, 41
- wild_mon SPECIES_WHISMUR, 36
- wild_mon SPECIES_LOUDRED, 38
- wild_mon SPECIES_DITTO, 42
- wild_mon SPECIES_WHISMUR, 38
- wild_mon SPECIES_DITTO, 43
- wild_mon SPECIES_LOUDRED, 44
- wild_mon SPECIES_DITTO, 45
-
- .align 2
-gDesertUnderpass_LandMonsInfo:: @ 8552AA0
- .4byte 10 @ encounter rate
- .4byte gDesertUnderpass_LandMons
-
- .align 2
-gArtisanCave_B1F_LandMons:: @ 8552AA8
- wild_mon SPECIES_SMEARGLE, 40
- wild_mon SPECIES_SMEARGLE, 41
- wild_mon SPECIES_SMEARGLE, 42
- wild_mon SPECIES_SMEARGLE, 43
- wild_mon SPECIES_SMEARGLE, 44
- wild_mon SPECIES_SMEARGLE, 45
- wild_mon SPECIES_SMEARGLE, 46
- wild_mon SPECIES_SMEARGLE, 47
- wild_mon SPECIES_SMEARGLE, 48
- wild_mon SPECIES_SMEARGLE, 49
- wild_mon SPECIES_SMEARGLE, 50
- wild_mon SPECIES_SMEARGLE, 50
-
- .align 2
-gArtisanCave_B1F_LandMonsInfo:: @ 8552AD8
- .4byte 10 @ encounter rate
- .4byte gArtisanCave_B1F_LandMons
-
- .align 2
-gArtisanCave_1F_LandMons:: @ 8552AE0
- wild_mon SPECIES_SMEARGLE, 40
- wild_mon SPECIES_SMEARGLE, 41
- wild_mon SPECIES_SMEARGLE, 42
- wild_mon SPECIES_SMEARGLE, 43
- wild_mon SPECIES_SMEARGLE, 44
- wild_mon SPECIES_SMEARGLE, 45
- wild_mon SPECIES_SMEARGLE, 46
- wild_mon SPECIES_SMEARGLE, 47
- wild_mon SPECIES_SMEARGLE, 48
- wild_mon SPECIES_SMEARGLE, 49
- wild_mon SPECIES_SMEARGLE, 50
- wild_mon SPECIES_SMEARGLE, 50
-
- .align 2
-gArtisanCave_1F_LandMonsInfo:: @ 8552B10
- .4byte 10 @ encounter rate
- .4byte gArtisanCave_1F_LandMons
-
- .align 2
-gAlteringCave1_LandMons:: @ 8552B18
- wild_mon SPECIES_ZUBAT, 10
- wild_mon SPECIES_ZUBAT, 12
- wild_mon SPECIES_ZUBAT, 8
- wild_mon SPECIES_ZUBAT, 14
- wild_mon SPECIES_ZUBAT, 10
- wild_mon SPECIES_ZUBAT, 12
- wild_mon SPECIES_ZUBAT, 16
- wild_mon SPECIES_ZUBAT, 6
- wild_mon SPECIES_ZUBAT, 8
- wild_mon SPECIES_ZUBAT, 14
- wild_mon SPECIES_ZUBAT, 8
- wild_mon SPECIES_ZUBAT, 14
-
- .align 2
-gAlteringCave1_LandMonsInfo:: @ 8552B48
- .4byte 7 @ encounter rate
- .4byte gAlteringCave1_LandMons
-
- .align 2
-gAlteringCave2_LandMons:: @ 8552B50
- wild_mon SPECIES_MAREEP, 7
- wild_mon SPECIES_MAREEP, 9
- wild_mon SPECIES_MAREEP, 5
- wild_mon SPECIES_MAREEP, 11
- wild_mon SPECIES_MAREEP, 7
- wild_mon SPECIES_MAREEP, 9
- wild_mon SPECIES_MAREEP, 13
- wild_mon SPECIES_MAREEP, 3
- wild_mon SPECIES_MAREEP, 5
- wild_mon SPECIES_MAREEP, 11
- wild_mon SPECIES_MAREEP, 5
- wild_mon SPECIES_MAREEP, 11
-
- .align 2
-gAlteringCave2_LandMonsInfo:: @ 8552B80
- .4byte 7 @ encounter rate
- .4byte gAlteringCave2_LandMons
-
- .align 2
-gAlteringCave3_LandMons:: @ 8552B88
- wild_mon SPECIES_PINECO, 23
- wild_mon SPECIES_PINECO, 25
- wild_mon SPECIES_PINECO, 22
- wild_mon SPECIES_PINECO, 27
- wild_mon SPECIES_PINECO, 23
- wild_mon SPECIES_PINECO, 25
- wild_mon SPECIES_PINECO, 29
- wild_mon SPECIES_PINECO, 19
- wild_mon SPECIES_PINECO, 21
- wild_mon SPECIES_PINECO, 27
- wild_mon SPECIES_PINECO, 21
- wild_mon SPECIES_PINECO, 27
-
- .align 2
-gAlteringCave3_LandMonsInfo:: @ 8552BB8
- .4byte 7 @ encounter rate
- .4byte gAlteringCave3_LandMons
-
- .align 2
-gAlteringCave4_LandMons:: @ 8552BC0
- wild_mon SPECIES_HOUNDOUR, 16
- wild_mon SPECIES_HOUNDOUR, 18
- wild_mon SPECIES_HOUNDOUR, 14
- wild_mon SPECIES_HOUNDOUR, 20
- wild_mon SPECIES_HOUNDOUR, 16
- wild_mon SPECIES_HOUNDOUR, 18
- wild_mon SPECIES_HOUNDOUR, 22
- wild_mon SPECIES_HOUNDOUR, 12
- wild_mon SPECIES_HOUNDOUR, 14
- wild_mon SPECIES_HOUNDOUR, 20
- wild_mon SPECIES_HOUNDOUR, 14
- wild_mon SPECIES_HOUNDOUR, 20
-
- .align 2
-gAlteringCave4_LandMonsInfo:: @ 8552BF0
- .4byte 7 @ encounter rate
- .4byte gAlteringCave4_LandMons
-
- .align 2
-gAlteringCave5_LandMons:: @ 8552BF8
- wild_mon SPECIES_TEDDIURSA, 10
- wild_mon SPECIES_TEDDIURSA, 12
- wild_mon SPECIES_TEDDIURSA, 8
- wild_mon SPECIES_TEDDIURSA, 14
- wild_mon SPECIES_TEDDIURSA, 10
- wild_mon SPECIES_TEDDIURSA, 12
- wild_mon SPECIES_TEDDIURSA, 16
- wild_mon SPECIES_TEDDIURSA, 6
- wild_mon SPECIES_TEDDIURSA, 8
- wild_mon SPECIES_TEDDIURSA, 14
- wild_mon SPECIES_TEDDIURSA, 8
- wild_mon SPECIES_TEDDIURSA, 14
-
- .align 2
-gAlteringCave5_LandMonsInfo:: @ 8552C28
- .4byte 7 @ encounter rate
- .4byte gAlteringCave5_LandMons
-
- .align 2
-gAlteringCave6_LandMons:: @ 8552C30
- wild_mon SPECIES_AIPOM, 22
- wild_mon SPECIES_AIPOM, 24
- wild_mon SPECIES_AIPOM, 20
- wild_mon SPECIES_AIPOM, 26
- wild_mon SPECIES_AIPOM, 22
- wild_mon SPECIES_AIPOM, 24
- wild_mon SPECIES_AIPOM, 28
- wild_mon SPECIES_AIPOM, 18
- wild_mon SPECIES_AIPOM, 20
- wild_mon SPECIES_AIPOM, 26
- wild_mon SPECIES_AIPOM, 20
- wild_mon SPECIES_AIPOM, 26
-
- .align 2
-gAlteringCave6_LandMonsInfo:: @ 8552C60
- .4byte 7 @ encounter rate
- .4byte gAlteringCave6_LandMons
-
- .align 2
-gAlteringCave7_LandMons:: @ 8552C68
- wild_mon SPECIES_SHUCKLE, 22
- wild_mon SPECIES_SHUCKLE, 24
- wild_mon SPECIES_SHUCKLE, 20
- wild_mon SPECIES_SHUCKLE, 26
- wild_mon SPECIES_SHUCKLE, 22
- wild_mon SPECIES_SHUCKLE, 24
- wild_mon SPECIES_SHUCKLE, 28
- wild_mon SPECIES_SHUCKLE, 18
- wild_mon SPECIES_SHUCKLE, 20
- wild_mon SPECIES_SHUCKLE, 26
- wild_mon SPECIES_SHUCKLE, 20
- wild_mon SPECIES_SHUCKLE, 26
-
- .align 2
-gAlteringCave7_LandMonsInfo:: @ 8552C98
- .4byte 7 @ encounter rate
- .4byte gAlteringCave7_LandMons
-
- .align 2
-gAlteringCave8_LandMons:: @ 8552CA0
- wild_mon SPECIES_STANTLER, 22
- wild_mon SPECIES_STANTLER, 24
- wild_mon SPECIES_STANTLER, 20
- wild_mon SPECIES_STANTLER, 26
- wild_mon SPECIES_STANTLER, 22
- wild_mon SPECIES_STANTLER, 24
- wild_mon SPECIES_STANTLER, 28
- wild_mon SPECIES_STANTLER, 18
- wild_mon SPECIES_STANTLER, 20
- wild_mon SPECIES_STANTLER, 26
- wild_mon SPECIES_STANTLER, 20
- wild_mon SPECIES_STANTLER, 26
-
- .align 2
-gAlteringCave8_LandMonsInfo:: @ 8552CD0
- .4byte 7 @ encounter rate
- .4byte gAlteringCave8_LandMons
-
- .align 2
-gAlteringCave9_LandMons:: @ 8552CD8
- wild_mon SPECIES_SMEARGLE, 22
- wild_mon SPECIES_SMEARGLE, 24
- wild_mon SPECIES_SMEARGLE, 20
- wild_mon SPECIES_SMEARGLE, 26
- wild_mon SPECIES_SMEARGLE, 22
- wild_mon SPECIES_SMEARGLE, 24
- wild_mon SPECIES_SMEARGLE, 28
- wild_mon SPECIES_SMEARGLE, 18
- wild_mon SPECIES_SMEARGLE, 20
- wild_mon SPECIES_SMEARGLE, 26
- wild_mon SPECIES_SMEARGLE, 20
- wild_mon SPECIES_SMEARGLE, 26
-
- .align 2
-gAlteringCave9_LandMonsInfo:: @ 8552D08
- .4byte 7 @ encounter rate
- .4byte gAlteringCave9_LandMons
-
- .align 2
-gMeteorFalls_StevensCave_LandMons:: @ 8552D10
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_GOLBAT, 33
- wild_mon SPECIES_SOLROCK, 35
- wild_mon SPECIES_SOLROCK, 33
- wild_mon SPECIES_SOLROCK, 37
- wild_mon SPECIES_GOLBAT, 35
- wild_mon SPECIES_SOLROCK, 39
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_GOLBAT, 40
- wild_mon SPECIES_GOLBAT, 38
- wild_mon SPECIES_GOLBAT, 40
-
- .align 2
-gMeteorFalls_StevensCave_LandMonsInfo:: @ 8552D40
- .4byte 10 @ encounter rate
- .4byte gMeteorFalls_StevensCave_LandMons
-
- .align 2
-gWildMonHeaders:: @ 8552D48
- map ROUTE_101
- .2byte 0 @ padding
- .4byte gRoute101_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ROUTE_102
- .2byte 0 @ padding
- .4byte gRoute102_LandMonsInfo
- .4byte gRoute102_WaterMonsInfo
- .4byte NULL
- .4byte gRoute102_FishingMonsInfo
-
- map ROUTE_103
- .2byte 0 @ padding
- .4byte gRoute103_LandMonsInfo
- .4byte gRoute103_WaterMonsInfo
- .4byte NULL
- .4byte gRoute103_FishingMonsInfo
-
- map ROUTE_104
- .2byte 0 @ padding
- .4byte gRoute104_LandMonsInfo
- .4byte gRoute104_WaterMonsInfo
- .4byte NULL
- .4byte gRoute104_FishingMonsInfo
-
- map ROUTE_105
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute105_WaterMonsInfo
- .4byte NULL
- .4byte gRoute105_FishingMonsInfo
-
- map ROUTE_110
- .2byte 0 @ padding
- .4byte gRoute110_LandMonsInfo
- .4byte gRoute110_WaterMonsInfo
- .4byte NULL
- .4byte gRoute110_FishingMonsInfo
-
- map ROUTE_111
- .2byte 0 @ padding
- .4byte gRoute111_LandMonsInfo
- .4byte gRoute111_WaterMonsInfo
- .4byte gRoute111_RockSmashMonsInfo
- .4byte gRoute111_FishingMonsInfo
-
- map ROUTE_112
- .2byte 0 @ padding
- .4byte gRoute112_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ROUTE_113
- .2byte 0 @ padding
- .4byte gRoute113_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ROUTE_114
- .2byte 0 @ padding
- .4byte gRoute114_LandMonsInfo
- .4byte gRoute114_WaterMonsInfo
- .4byte gRoute114_RockSmashMonsInfo
- .4byte gRoute114_FishingMonsInfo
-
- map ROUTE_116
- .2byte 0 @ padding
- .4byte gRoute116_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ROUTE_117
- .2byte 0 @ padding
- .4byte gRoute117_LandMonsInfo
- .4byte gRoute117_WaterMonsInfo
- .4byte NULL
- .4byte gRoute117_FishingMonsInfo
-
- map ROUTE_118
- .2byte 0 @ padding
- .4byte gRoute118_LandMonsInfo
- .4byte gRoute118_WaterMonsInfo
- .4byte NULL
- .4byte gRoute118_FishingMonsInfo
-
- map ROUTE_124
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute124_WaterMonsInfo
- .4byte NULL
- .4byte gRoute124_FishingMonsInfo
-
- map PETALBURG_WOODS
- .2byte 0 @ padding
- .4byte gPetalburgWoods_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map RUSTURF_TUNNEL
- .2byte 0 @ padding
- .4byte gRusturfTunnel_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map GRANITE_CAVE_1F
- .2byte 0 @ padding
- .4byte gGraniteCave_1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map GRANITE_CAVE_B1F
- .2byte 0 @ padding
- .4byte gGraniteCave_B1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MT_PYRE_1F
- .2byte 0 @ padding
- .4byte gMtPyre_1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map VICTORY_ROAD_1F
- .2byte 0 @ padding
- .4byte gVictoryRoad_1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SAFARI_ZONE_SOUTH
- .2byte 0 @ padding
- .4byte gSafariZone_South_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map UNDERWATER_2
- .2byte 0 @ padding
- .4byte NULL
- .4byte gUnderwater2_WaterMonsInfo
- .4byte NULL
- .4byte NULL
-
- map ABANDONED_SHIP_ROOMS_B1F
- .2byte 0 @ padding
- .4byte NULL
- .4byte gAbandonedShip_Rooms_B1F_WaterMonsInfo
- .4byte NULL
- .4byte gAbandonedShip_Rooms_B1F_FishingMonsInfo
-
- map GRANITE_CAVE_B2F
- .2byte 0 @ padding
- .4byte gGraniteCave_B2F_LandMonsInfo
- .4byte NULL
- .4byte gGraniteCave_B2F_RockSmashMonsInfo
- .4byte NULL
-
- map FIERY_PATH
- .2byte 0 @ padding
- .4byte gFieryPath_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map METEOR_FALLS_B1F_2R
- .2byte 0 @ padding
- .4byte gMeteorFalls_B1F_2R_LandMonsInfo
- .4byte gMeteorFalls_B1F_2R_WaterMonsInfo
- .4byte NULL
- .4byte gMeteorFalls_B1F_2R_FishingMonsInfo
-
- map JAGGED_PASS
- .2byte 0 @ padding
- .4byte gJaggedPass_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ROUTE_106
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute106_WaterMonsInfo
- .4byte NULL
- .4byte gRoute106_FishingMonsInfo
-
- map ROUTE_107
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute107_WaterMonsInfo
- .4byte NULL
- .4byte gRoute107_FishingMonsInfo
-
- map ROUTE_108
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute108_WaterMonsInfo
- .4byte NULL
- .4byte gRoute108_FishingMonsInfo
-
- map ROUTE_109
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute109_WaterMonsInfo
- .4byte NULL
- .4byte gRoute109_FishingMonsInfo
-
- map ROUTE_115
- .2byte 0 @ padding
- .4byte gRoute115_LandMonsInfo
- .4byte gRoute115_WaterMonsInfo
- .4byte NULL
- .4byte gRoute115_FishingMonsInfo
-
- map NEW_MAUVILLE_INSIDE
- .2byte 0 @ padding
- .4byte gNewMauville_Inside_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ROUTE_119
- .2byte 0 @ padding
- .4byte gRoute119_LandMonsInfo
- .4byte gRoute119_WaterMonsInfo
- .4byte NULL
- .4byte gRoute119_FishingMonsInfo
-
- map ROUTE_120
- .2byte 0 @ padding
- .4byte gRoute120_LandMonsInfo
- .4byte gRoute120_WaterMonsInfo
- .4byte NULL
- .4byte gRoute120_FishingMonsInfo
-
- map ROUTE_121
- .2byte 0 @ padding
- .4byte gRoute121_LandMonsInfo
- .4byte gRoute121_WaterMonsInfo
- .4byte NULL
- .4byte gRoute121_FishingMonsInfo
-
- map ROUTE_122
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute122_WaterMonsInfo
- .4byte NULL
- .4byte gRoute122_FishingMonsInfo
-
- map ROUTE_123
- .2byte 0 @ padding
- .4byte gRoute123_LandMonsInfo
- .4byte gRoute123_WaterMonsInfo
- .4byte NULL
- .4byte gRoute123_FishingMonsInfo
-
- map MT_PYRE_2F
- .2byte 0 @ padding
- .4byte gMtPyre_2F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MT_PYRE_3F
- .2byte 0 @ padding
- .4byte gMtPyre_3F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MT_PYRE_4F
- .2byte 0 @ padding
- .4byte gMtPyre_4F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MT_PYRE_5F
- .2byte 0 @ padding
- .4byte gMtPyre_5F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MT_PYRE_6F
- .2byte 0 @ padding
- .4byte gMtPyre_6F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MT_PYRE_EXTERIOR
- .2byte 0 @ padding
- .4byte gMtPyre_Exterior_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MT_PYRE_SUMMIT
- .2byte 0 @ padding
- .4byte gMtPyre_Summit_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map GRANITE_CAVE_STEVENS_ROOM
- .2byte 0 @ padding
- .4byte gGraniteCave_StevensRoom_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ROUTE_125
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute125_WaterMonsInfo
- .4byte NULL
- .4byte gRoute125_FishingMonsInfo
-
- map ROUTE_126
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute126_WaterMonsInfo
- .4byte NULL
- .4byte gRoute126_FishingMonsInfo
-
- map ROUTE_127
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute127_WaterMonsInfo
- .4byte NULL
- .4byte gRoute127_FishingMonsInfo
-
- map ROUTE_128
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute128_WaterMonsInfo
- .4byte NULL
- .4byte gRoute128_FishingMonsInfo
-
- map ROUTE_129
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute129_WaterMonsInfo
- .4byte NULL
- .4byte gRoute129_FishingMonsInfo
-
- map ROUTE_130
- .2byte 0 @ padding
- .4byte gRoute130_LandMonsInfo
- .4byte gRoute130_WaterMonsInfo
- .4byte NULL
- .4byte gRoute130_FishingMonsInfo
-
- map ROUTE_131
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute131_WaterMonsInfo
- .4byte NULL
- .4byte gRoute131_FishingMonsInfo
-
- map ROUTE_132
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute132_WaterMonsInfo
- .4byte NULL
- .4byte gRoute132_FishingMonsInfo
-
- map ROUTE_133
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute133_WaterMonsInfo
- .4byte NULL
- .4byte gRoute133_FishingMonsInfo
-
- map ROUTE_134
- .2byte 0 @ padding
- .4byte NULL
- .4byte gRoute134_WaterMonsInfo
- .4byte NULL
- .4byte gRoute134_FishingMonsInfo
-
- map ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS
- .2byte 0 @ padding
- .4byte NULL
- .4byte gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo
- .4byte NULL
- .4byte gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo
-
- map SEAFLOOR_CAVERN_ROOM_1
- .2byte 0 @ padding
- .4byte gSeafloorCavern_Room1_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SEAFLOOR_CAVERN_ROOM_2
- .2byte 0 @ padding
- .4byte gSeafloorCavern_Room2_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SEAFLOOR_CAVERN_ROOM_3
- .2byte 0 @ padding
- .4byte gSeafloorCavern_Room3_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SEAFLOOR_CAVERN_ROOM_4
- .2byte 0 @ padding
- .4byte gSeafloorCavern_Room4_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SEAFLOOR_CAVERN_ROOM_5
- .2byte 0 @ padding
- .4byte gSeafloorCavern_Room5_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SEAFLOOR_CAVERN_ROOM_6
- .2byte 0 @ padding
- .4byte gSeafloorCavern_Room6_LandMonsInfo
- .4byte gSeafloorCavern_Room6_WaterMonsInfo
- .4byte NULL
- .4byte gSeafloorCavern_Room6_FishingMonsInfo
-
- map SEAFLOOR_CAVERN_ROOM_7
- .2byte 0 @ padding
- .4byte gSeafloorCavern_Room7_LandMonsInfo
- .4byte gSeafloorCavern_Room7_WaterMonsInfo
- .4byte NULL
- .4byte gSeafloorCavern_Room7_FishingMonsInfo
-
- map SEAFLOOR_CAVERN_ROOM_8
- .2byte 0 @ padding
- .4byte gSeafloorCavern_Room8_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SEAFLOOR_CAVERN_ENTRANCE
- .2byte 0 @ padding
- .4byte NULL
- .4byte gSeafloorCavern_Entrance_WaterMonsInfo
- .4byte NULL
- .4byte gSeafloorCavern_Entrance_FishingMonsInfo
-
- map CAVE_OF_ORIGIN_ENTRANCE
- .2byte 0 @ padding
- .4byte gCaveOfOrigin_Entrance_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map CAVE_OF_ORIGIN_1F
- .2byte 0 @ padding
- .4byte gCaveOfOrigin_1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP_1
- .2byte 0 @ padding
- .4byte gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP_2
- .2byte 0 @ padding
- .4byte gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP_3
- .2byte 0 @ padding
- .4byte gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map NEW_MAUVILLE_ENTRANCE
- .2byte 0 @ padding
- .4byte gNewMauville_Entrance_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SAFARI_ZONE_SOUTHWEST
- .2byte 0 @ padding
- .4byte gSafariZone_Southwest_LandMonsInfo
- .4byte gSafariZone_Southwest_WaterMonsInfo
- .4byte NULL
- .4byte gSafariZone_Southwest_FishingMonsInfo
-
- map SAFARI_ZONE_NORTH
- .2byte 0 @ padding
- .4byte gSafariZone_North_LandMonsInfo
- .4byte NULL
- .4byte gSafariZone_North_RockSmashMonsInfo
- .4byte NULL
-
- map SAFARI_ZONE_NORTHWEST
- .2byte 0 @ padding
- .4byte gSafariZone_Northwest_LandMonsInfo
- .4byte gSafariZone_Northwest_WaterMonsInfo
- .4byte NULL
- .4byte gSafariZone_Northwest_FishingMonsInfo
-
- map VICTORY_ROAD_B1F
- .2byte 0 @ padding
- .4byte gVictoryRoad_B1F_LandMonsInfo
- .4byte NULL
- .4byte gVictoryRoad_B1F_RockSmashMonsInfo
- .4byte NULL
-
- map VICTORY_ROAD_B2F
- .2byte 0 @ padding
- .4byte gVictoryRoad_B2F_LandMonsInfo
- .4byte gVictoryRoad_B2F_WaterMonsInfo
- .4byte NULL
- .4byte gVictoryRoad_B2F_FishingMonsInfo
-
- map METEOR_FALLS_1F_1R
- .2byte 0 @ padding
- .4byte gMeteorFalls_1F_1R_LandMonsInfo
- .4byte gMeteorFalls_1F_1R_WaterMonsInfo
- .4byte NULL
- .4byte gMeteorFalls_1F_1R_FishingMonsInfo
-
- map METEOR_FALLS_1F_2R
- .2byte 0 @ padding
- .4byte gMeteorFalls_1F_2R_LandMonsInfo
- .4byte gMeteorFalls_1F_2R_WaterMonsInfo
- .4byte NULL
- .4byte gMeteorFalls_1F_2R_FishingMonsInfo
-
- map METEOR_FALLS_B1F_1R
- .2byte 0 @ padding
- .4byte gMeteorFalls_B1F_1R_LandMonsInfo
- .4byte gMeteorFalls_B1F_1R_WaterMonsInfo
- .4byte NULL
- .4byte gMeteorFalls_B1F_1R_FishingMonsInfo
-
- map SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM
- .2byte 0 @ padding
- .4byte gShoalCave_LowTideStairsRoom_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SHOAL_CAVE_LOW_TIDE_LOWER_ROOM
- .2byte 0 @ padding
- .4byte gShoalCave_LowTideLowerRoom_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SHOAL_CAVE_LOW_TIDE_INNER_ROOM
- .2byte 0 @ padding
- .4byte gShoalCave_LowTideInnerRoom_LandMonsInfo
- .4byte gShoalCave_LowTideInnerRoom_WaterMonsInfo
- .4byte NULL
- .4byte gShoalCave_LowTideInnerRoom_FishingMonsInfo
-
- map SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM
- .2byte 0 @ padding
- .4byte gShoalCave_LowTideEntranceRoom_LandMonsInfo
- .4byte gShoalCave_LowTideEntranceRoom_WaterMonsInfo
- .4byte NULL
- .4byte gShoalCave_LowTideEntranceRoom_FishingMonsInfo
-
- map LILYCOVE_CITY
- .2byte 0 @ padding
- .4byte NULL
- .4byte gLilycoveCity_WaterMonsInfo
- .4byte NULL
- .4byte gLilycoveCity_FishingMonsInfo
-
- map DEWFORD_TOWN
- .2byte 0 @ padding
- .4byte NULL
- .4byte gDewfordTown_WaterMonsInfo
- .4byte NULL
- .4byte gDewfordTown_FishingMonsInfo
-
- map SLATEPORT_CITY
- .2byte 0 @ padding
- .4byte NULL
- .4byte gSlateportCity_WaterMonsInfo
- .4byte NULL
- .4byte gSlateportCity_FishingMonsInfo
-
- map MOSSDEEP_CITY
- .2byte 0 @ padding
- .4byte NULL
- .4byte gMossdeepCity_WaterMonsInfo
- .4byte NULL
- .4byte gMossdeepCity_FishingMonsInfo
-
- map PACIFIDLOG_TOWN
- .2byte 0 @ padding
- .4byte NULL
- .4byte gPacifidlogTown_WaterMonsInfo
- .4byte NULL
- .4byte gPacifidlogTown_FishingMonsInfo
-
- map EVER_GRANDE_CITY
- .2byte 0 @ padding
- .4byte NULL
- .4byte gEverGrandeCity_WaterMonsInfo
- .4byte NULL
- .4byte gEverGrandeCity_FishingMonsInfo
-
- map PETALBURG_CITY
- .2byte 0 @ padding
- .4byte NULL
- .4byte gPetalburgCity_WaterMonsInfo
- .4byte NULL
- .4byte gPetalburgCity_FishingMonsInfo
-
- map UNDERWATER_1
- .2byte 0 @ padding
- .4byte NULL
- .4byte gUnderwater1_WaterMonsInfo
- .4byte NULL
- .4byte NULL
-
- map SHOAL_CAVE_LOW_TIDE_ICE_ROOM
- .2byte 0 @ padding
- .4byte gShoalCave_LowTideIceRoom_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SKY_PILLAR_1F
- .2byte 0 @ padding
- .4byte gSkyPillar_1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SOOTOPOLIS_CITY
- .2byte 0 @ padding
- .4byte NULL
- .4byte gSootopolisCity_WaterMonsInfo
- .4byte NULL
- .4byte gSootopolisCity_FishingMonsInfo
-
- map SKY_PILLAR_3F
- .2byte 0 @ padding
- .4byte gSkyPillar_3F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SKY_PILLAR_5F
- .2byte 0 @ padding
- .4byte gSkyPillar_5F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map SAFARI_ZONE_SOUTHEAST
- .2byte 0 @ padding
- .4byte gSafariZone_Southeast_LandMonsInfo
- .4byte gSafariZone_Southeast_WaterMonsInfo
- .4byte NULL
- .4byte gSafariZone_Southeast_FishingMonsInfo
-
- map SAFARI_ZONE_NORTHEAST
- .2byte 0 @ padding
- .4byte gSafariZone_Northeast_LandMonsInfo
- .4byte NULL
- .4byte gSafariZone_Northeast_RockSmashMonsInfo
- .4byte NULL
-
- map MAGMA_HIDEOUT_1F
- .2byte 0 @ padding
- .4byte gMagmaHideout_1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MAGMA_HIDEOUT_2F_1R
- .2byte 0 @ padding
- .4byte gMagmaHideout_2F_1R_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MAGMA_HIDEOUT_2F_2R
- .2byte 0 @ padding
- .4byte gMagmaHideout_2F_2R_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MAGMA_HIDEOUT_3F_1R
- .2byte 0 @ padding
- .4byte gMagmaHideout_3F_1R_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MAGMA_HIDEOUT_3F_2R
- .2byte 0 @ padding
- .4byte gMagmaHideout_3F_2R_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MAGMA_HIDEOUT_4F
- .2byte 0 @ padding
- .4byte gMagmaHideout_4F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MAGMA_HIDEOUT_3F_3R
- .2byte 0 @ padding
- .4byte gMagmaHideout_3F_3R_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MAGMA_HIDEOUT_2F_3R
- .2byte 0 @ padding
- .4byte gMagmaHideout_2F_3R_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MIRAGE_TOWER_1F
- .2byte 0 @ padding
- .4byte gMirageTower_1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MIRAGE_TOWER_2F
- .2byte 0 @ padding
- .4byte gMirageTower_2F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MIRAGE_TOWER_3F
- .2byte 0 @ padding
- .4byte gMirageTower_3F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map MIRAGE_TOWER_4F
- .2byte 0 @ padding
- .4byte gMirageTower_4F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map DESERT_UNDERPASS
- .2byte 0 @ padding
- .4byte gDesertUnderpass_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ARTISAN_CAVE_B1F
- .2byte 0 @ padding
- .4byte gArtisanCave_B1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ARTISAN_CAVE_1F
- .2byte 0 @ padding
- .4byte gArtisanCave_1F_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave1_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave2_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave3_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave4_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave5_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave6_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave7_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave8_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map ALTERING_CAVE
- .2byte 0 @ padding
- .4byte gAlteringCave9_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- map METEOR_FALLS_STEVENS_CAVE
- .2byte 0 @ padding
- .4byte gMeteorFalls_StevensCave_LandMonsInfo
- .4byte NULL
- .4byte NULL
- .4byte NULL
-
- .byte -1
- .byte -1
- .2byte 0 @ padding
- .4byte NULL
- .4byte NULL
- .4byte NULL
- .4byte NULL
diff --git a/graphics/battle_anims/sprites/smokescreen_impact.pal b/graphics/battle_anims/sprites/smokescreen_impact.pal
deleted file mode 100644
index 64367bdc9..000000000
--- a/graphics/battle_anims/sprites/smokescreen_impact.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 148 49
-57 98 197
-0 0 0
-0 0 0
-0 0 0
-164 156 106
-197 197 148
-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
diff --git a/graphics/battle_interface/ball_display.pal b/graphics/battle_interface/ball_display.pal
deleted file mode 100644
index ea646bb82..000000000
--- a/graphics/battle_interface/ball_display.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-57 57 57
-255 255 255
-213 205 189
-131 131 139
-74 65 90
-82 106 90
-255 180 123
-246 148 115
-222 106 90
-115 255 172
-90 213 131
-255 230 57
-205 172 8
-255 90 57
-172 65 74
diff --git a/graphics/battle_interface/ball_status_bar.pal b/graphics/battle_interface/ball_status_bar.pal
deleted file mode 100644
index bc8e8f2bc..000000000
--- a/graphics/battle_interface/ball_status_bar.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-65 65 65
-255 255 222
-222 213 180
-197 189 115
-123 148 131
-82 106 98
-32 57 0
-57 82 65
-255 230 0
-255 156 148
-65 205 255
-0 0 255
-0 255 0
-255 0 0
-106 148 255
diff --git a/graphics/battle_interface/unk_battlebox.pal b/graphics/battle_interface/unk_battlebox.pal
deleted file mode 100644
index 862165f3f..000000000
--- a/graphics/battle_interface/unk_battlebox.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-255 255 255
-255 255 255
-106 90 115
-0 0 0
-213 230 255
-189 205 238
-238 238 255
-106 172 197
-90 139 180
-123 197 205
-0 0 0
-0 0 0
-123 197 255
-0 0 139
-255 131 131
-164 0 0
diff --git a/graphics/battle_interface/unused_window.pal b/graphics/battle_interface/unused_window.pal
deleted file mode 100644
index a5c40e694..000000000
--- a/graphics/battle_interface/unused_window.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-82 106 98
-180 197 213
-148 139 139
-106 98 90
-255 189 57
-230 148 65
-255 255 255
-115 255 172
-74 205 123
-32 164 82
-0 123 41
-255 255 213
-131 205 238
-213 230 230
-82 139 189
diff --git a/graphics/berries/pics/aguav.png b/graphics/berries/aguav.png
index 0661fe8d3..0661fe8d3 100644
--- a/graphics/berries/pics/aguav.png
+++ b/graphics/berries/aguav.png
Binary files differ
diff --git a/graphics/berries/pics/apicot.png b/graphics/berries/apicot.png
index b7098fc90..b7098fc90 100644
--- a/graphics/berries/pics/apicot.png
+++ b/graphics/berries/apicot.png
Binary files differ
diff --git a/graphics/berries/pics/aspear.png b/graphics/berries/aspear.png
index b5e2c5061..b5e2c5061 100644
--- a/graphics/berries/pics/aspear.png
+++ b/graphics/berries/aspear.png
Binary files differ
diff --git a/graphics/berries/pics/belue.png b/graphics/berries/belue.png
index 81ddaa9bb..81ddaa9bb 100644
--- a/graphics/berries/pics/belue.png
+++ b/graphics/berries/belue.png
Binary files differ
diff --git a/graphics/berries/pics/bluk.png b/graphics/berries/bluk.png
index fc7e6c128..fc7e6c128 100644
--- a/graphics/berries/pics/bluk.png
+++ b/graphics/berries/bluk.png
Binary files differ
diff --git a/graphics/berries/pics/cheri.png b/graphics/berries/cheri.png
index f70a1ad74..f70a1ad74 100644
--- a/graphics/berries/pics/cheri.png
+++ b/graphics/berries/cheri.png
Binary files differ
diff --git a/graphics/berries/pics/chesto.png b/graphics/berries/chesto.png
index db1fe9e73..db1fe9e73 100644
--- a/graphics/berries/pics/chesto.png
+++ b/graphics/berries/chesto.png
Binary files differ
diff --git a/graphics/berries/pics/cornn.png b/graphics/berries/cornn.png
index e124fc599..e124fc599 100644
--- a/graphics/berries/pics/cornn.png
+++ b/graphics/berries/cornn.png
Binary files differ
diff --git a/graphics/berries/pics/durin.png b/graphics/berries/durin.png
index 5bbb97e1f..5bbb97e1f 100644
--- a/graphics/berries/pics/durin.png
+++ b/graphics/berries/durin.png
Binary files differ
diff --git a/graphics/berries/pics/enigma.png b/graphics/berries/enigma.png
index af369550a..af369550a 100644
--- a/graphics/berries/pics/enigma.png
+++ b/graphics/berries/enigma.png
Binary files differ
diff --git a/graphics/berries/pics/figy.png b/graphics/berries/figy.png
index 9ec8425d5..9ec8425d5 100644
--- a/graphics/berries/pics/figy.png
+++ b/graphics/berries/figy.png
Binary files differ
diff --git a/graphics/berries/pics/ganlon.png b/graphics/berries/ganlon.png
index ec5e38319..ec5e38319 100644
--- a/graphics/berries/pics/ganlon.png
+++ b/graphics/berries/ganlon.png
Binary files differ
diff --git a/graphics/berries/pics/grepa.png b/graphics/berries/grepa.png
index 136a86df2..136a86df2 100644
--- a/graphics/berries/pics/grepa.png
+++ b/graphics/berries/grepa.png
Binary files differ
diff --git a/graphics/berries/pics/hondew.png b/graphics/berries/hondew.png
index ab1add813..ab1add813 100644
--- a/graphics/berries/pics/hondew.png
+++ b/graphics/berries/hondew.png
Binary files differ
diff --git a/graphics/berries/pics/iapapa.png b/graphics/berries/iapapa.png
index 243e23d29..243e23d29 100644
--- a/graphics/berries/pics/iapapa.png
+++ b/graphics/berries/iapapa.png
Binary files differ
diff --git a/graphics/berries/pics/kelpsy.png b/graphics/berries/kelpsy.png
index 17b509c04..17b509c04 100644
--- a/graphics/berries/pics/kelpsy.png
+++ b/graphics/berries/kelpsy.png
Binary files differ
diff --git a/graphics/berries/pics/lansat.png b/graphics/berries/lansat.png
index c63a590ec..c63a590ec 100644
--- a/graphics/berries/pics/lansat.png
+++ b/graphics/berries/lansat.png
Binary files differ
diff --git a/graphics/berries/pics/leppa.png b/graphics/berries/leppa.png
index 228bc9c3a..228bc9c3a 100644
--- a/graphics/berries/pics/leppa.png
+++ b/graphics/berries/leppa.png
Binary files differ
diff --git a/graphics/berries/pics/liechi.png b/graphics/berries/liechi.png
index dbfea58ca..dbfea58ca 100644
--- a/graphics/berries/pics/liechi.png
+++ b/graphics/berries/liechi.png
Binary files differ
diff --git a/graphics/berries/pics/lum.png b/graphics/berries/lum.png
index 52a97fe4b..52a97fe4b 100644
--- a/graphics/berries/pics/lum.png
+++ b/graphics/berries/lum.png
Binary files differ
diff --git a/graphics/berries/pics/mago.png b/graphics/berries/mago.png
index b83c4cc3e..b83c4cc3e 100644
--- a/graphics/berries/pics/mago.png
+++ b/graphics/berries/mago.png
Binary files differ
diff --git a/graphics/berries/pics/magost.png b/graphics/berries/magost.png
index d3332bc26..d3332bc26 100644
--- a/graphics/berries/pics/magost.png
+++ b/graphics/berries/magost.png
Binary files differ
diff --git a/graphics/berries/pics/nanab.png b/graphics/berries/nanab.png
index 88fa1368e..88fa1368e 100644
--- a/graphics/berries/pics/nanab.png
+++ b/graphics/berries/nanab.png
Binary files differ
diff --git a/graphics/berries/pics/nomel.png b/graphics/berries/nomel.png
index 828674f62..828674f62 100644
--- a/graphics/berries/pics/nomel.png
+++ b/graphics/berries/nomel.png
Binary files differ
diff --git a/graphics/berries/pics/oran.png b/graphics/berries/oran.png
index bc9517fac..bc9517fac 100644
--- a/graphics/berries/pics/oran.png
+++ b/graphics/berries/oran.png
Binary files differ
diff --git a/graphics/berries/palettes/aguav.pal b/graphics/berries/palettes/aguav.pal
deleted file mode 100644
index fa20daf24..000000000
--- a/graphics/berries/palettes/aguav.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-230 255 156
-197 238 131
-164 222 106
-131 205 82
-98 189 57
-74 148 41
-57 115 32
-41 82 24
-255 238 189
-222 197 148
-189 164 106
-156 131 74
-197 197 139
-148 172 98
-90 139 82
diff --git a/graphics/berries/palettes/apicot.pal b/graphics/berries/palettes/apicot.pal
deleted file mode 100644
index 82cb76d5a..000000000
--- a/graphics/berries/palettes/apicot.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-238 238 255
-189 205 238
-148 180 230
-106 148 222
-65 123 213
-65 98 148
-222 255 131
-197 230 123
-172 213 115
-148 189 106
-123 172 98
-90 131 82
-57 164 156
-255 230 98
-205 164 98
diff --git a/graphics/berries/palettes/aspear.pal b/graphics/berries/palettes/aspear.pal
deleted file mode 100644
index 52842fd55..000000000
--- a/graphics/berries/palettes/aspear.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-246 238 222
-246 238 189
-246 238 156
-246 238 123
-230 213 115
-213 197 106
-197 180 98
-180 156 90
-164 139 82
-148 123 74
-180 189 148
-156 164 131
-131 139 123
-106 123 115
-0 0 0
diff --git a/graphics/berries/palettes/belue.pal b/graphics/berries/palettes/belue.pal
deleted file mode 100644
index 0d348b27e..000000000
--- a/graphics/berries/palettes/belue.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-164 172 197
-148 148 180
-131 123 172
-123 98 156
-106 74 148
-98 57 139
-82 41 82
-255 213 164
-230 189 148
-205 164 131
-180 139 123
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/bluk.pal b/graphics/berries/palettes/bluk.pal
deleted file mode 100644
index 88586d6b5..000000000
--- a/graphics/berries/palettes/bluk.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-189 205 213
-164 156 197
-139 115 180
-115 74 172
-98 57 139
-90 49 106
-82 41 82
-180 139 123
-148 106 82
-115 74 41
-0 0 0
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/cheri.pal b/graphics/berries/palettes/cheri.pal
deleted file mode 100644
index 01acf52c9..000000000
--- a/graphics/berries/palettes/cheri.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 255 123
-246 180 98
-246 106 74
-246 41 49
-213 49 41
-180 57 32
-148 65 24
-115 82 24
-189 238 131
-156 205 115
-123 172 98
-90 139 82
-115 90 74
-82 90 49
-57 98 32
diff --git a/graphics/berries/palettes/chesto.pal b/graphics/berries/palettes/chesto.pal
deleted file mode 100644
index 3a4e0964f..000000000
--- a/graphics/berries/palettes/chesto.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-148 205 255
-123 172 238
-98 148 222
-82 123 213
-65 98 180
-57 74 148
-230 197 164
-213 172 148
-197 156 131
-180 131 115
-164 115 98
-148 98 82
-156 205 115
-74 106 197
-90 139 82
diff --git a/graphics/berries/palettes/cornn.pal b/graphics/berries/palettes/cornn.pal
deleted file mode 100644
index 5096389e0..000000000
--- a/graphics/berries/palettes/cornn.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-189 205 213
-164 156 197
-139 115 180
-115 74 172
-98 57 139
-90 49 106
-82 41 82
-180 139 123
-180 189 123
-115 74 41
-49 90 0
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/durin.pal b/graphics/berries/palettes/durin.pal
deleted file mode 100644
index 8b636135d..000000000
--- a/graphics/berries/palettes/durin.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 246
-230 255 156
-197 238 131
-164 222 106
-131 205 82
-98 189 57
-98 164 57
-98 139 57
-255 246 197
-255 222 148
-139 98 49
-222 172 98
-189 148 98
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/enigma.pal b/graphics/berries/palettes/enigma.pal
deleted file mode 100644
index 349ecc7f4..000000000
--- a/graphics/berries/palettes/enigma.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 246 246
-148 131 123
-115 98 98
-82 74 74
-57 49 49
-24 24 24
-0 0 0
-246 238 222
-222 205 197
-205 180 172
-180 156 156
-164 131 131
-148 106 115
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/figy.pal b/graphics/berries/palettes/figy.pal
deleted file mode 100644
index e427ea1e9..000000000
--- a/graphics/berries/palettes/figy.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 197 246
-255 255 123
-246 180 98
-246 106 74
-246 41 49
-213 41 49
-180 41 49
-255 246 205
-230 213 172
-205 189 139
-180 164 115
-123 106 74
-197 123 90
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/ganlon.pal b/graphics/berries/palettes/ganlon.pal
deleted file mode 100644
index 381974125..000000000
--- a/graphics/berries/palettes/ganlon.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-222 255 255
-189 230 255
-164 197 238
-139 172 222
-115 148 213
-90 123 197
-65 98 189
-65 65 123
-246 238 164
-222 205 139
-205 180 123
-180 156 106
-164 131 90
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/grepa.pal b/graphics/berries/palettes/grepa.pal
deleted file mode 100644
index 42ff8830f..000000000
--- a/graphics/berries/palettes/grepa.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-246 238 222
-246 230 180
-246 230 148
-246 222 106
-255 222 74
-222 197 65
-197 172 65
-172 148 65
-148 123 65
-123 98 65
-172 255 74
-131 213 65
-90 180 65
-49 148 65
-238 205 65
diff --git a/graphics/berries/palettes/hondew.pal b/graphics/berries/palettes/hondew.pal
deleted file mode 100644
index db2739961..000000000
--- a/graphics/berries/palettes/hondew.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 246
-230 255 156
-197 238 131
-164 222 106
-131 205 82
-98 189 57
-98 164 57
-98 139 57
-255 246 197
-255 222 148
-255 197 98
-222 172 98
-189 148 98
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/iapapa.pal b/graphics/berries/palettes/iapapa.pal
deleted file mode 100644
index 31fac9dde..000000000
--- a/graphics/berries/palettes/iapapa.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 197 197
-246 238 222
-246 238 172
-238 213 148
-230 197 131
-222 180 115
-213 164 98
-205 148 82
-139 90 57
-230 164 90
-238 123 74
-255 90 57
-222 90 57
-197 90 57
-172 90 57
-90 139 82
diff --git a/graphics/berries/palettes/kelpsy.pal b/graphics/berries/palettes/kelpsy.pal
deleted file mode 100644
index 67ad7a21c..000000000
--- a/graphics/berries/palettes/kelpsy.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-189 205 213
-164 156 197
-139 115 180
-115 74 172
-98 57 139
-90 49 106
-82 41 82
-180 139 123
-148 106 82
-115 74 41
-0 0 0
-189 222 255
-156 197 230
-131 172 205
-106 148 189
diff --git a/graphics/berries/palettes/lansat.pal b/graphics/berries/palettes/lansat.pal
deleted file mode 100644
index 66621677d..000000000
--- a/graphics/berries/palettes/lansat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 246 246
-189 222 148
-148 197 123
-115 180 106
-82 164 90
-49 148 74
-255 222 164
-246 180 139
-238 148 115
-230 106 90
-222 74 65
-213 41 49
-189 41 49
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/leppa.pal b/graphics/berries/palettes/leppa.pal
deleted file mode 100644
index 4fab82d6c..000000000
--- a/graphics/berries/palettes/leppa.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 255 123
-246 180 98
-246 106 74
-246 41 49
-213 41 49
-180 41 49
-148 41 49
-197 148 98
-189 238 131
-156 205 115
-123 172 98
-90 139 82
-115 90 74
-82 90 49
-57 98 32
diff --git a/graphics/berries/palettes/liechi.pal b/graphics/berries/palettes/liechi.pal
deleted file mode 100644
index c12737deb..000000000
--- a/graphics/berries/palettes/liechi.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 246 246
-255 255 123
-246 180 98
-246 106 74
-246 41 49
-213 41 49
-180 41 49
-255 255 255
-238 230 213
-222 205 172
-205 180 131
-197 164 90
-255 205 131
-238 164 98
-222 123 65
-213 90 32
diff --git a/graphics/berries/palettes/lum.pal b/graphics/berries/palettes/lum.pal
deleted file mode 100644
index 237ef0dc4..000000000
--- a/graphics/berries/palettes/lum.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 246 246
-255 255 222
-238 255 189
-230 255 156
-197 230 131
-172 205 115
-148 180 90
-123 156 74
-115 115 74
-106 82 74
-0 0 0
-0 0 0
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/mago.pal b/graphics/berries/palettes/mago.pal
deleted file mode 100644
index 4441e4564..000000000
--- a/graphics/berries/palettes/mago.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 222 205
-246 189 180
-246 164 156
-246 139 139
-197 106 106
-148 74 74
-98 41 49
-255 246 197
-230 205 148
-213 164 106
-197 131 65
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/magost.pal b/graphics/berries/palettes/magost.pal
deleted file mode 100644
index 2393be3d6..000000000
--- a/graphics/berries/palettes/magost.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 222 205
-246 189 180
-246 164 156
-246 139 139
-222 123 123
-197 106 106
-180 90 90
-255 246 197
-230 131 131
-246 148 148
-197 131 65
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/nanab.pal b/graphics/berries/palettes/nanab.pal
deleted file mode 100644
index 4441e4564..000000000
--- a/graphics/berries/palettes/nanab.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 222 205
-246 189 180
-246 164 156
-246 139 139
-197 106 106
-148 74 74
-98 41 49
-255 246 197
-230 205 148
-213 164 106
-197 131 65
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/nomel.pal b/graphics/berries/palettes/nomel.pal
deleted file mode 100644
index 6844ddcc3..000000000
--- a/graphics/berries/palettes/nomel.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-246 238 222
-246 230 180
-246 230 148
-246 222 106
-255 222 74
-238 197 65
-222 180 65
-205 156 65
-189 139 65
-123 98 65
-172 255 74
-131 213 65
-90 180 65
-246 205 65
-238 205 65
diff --git a/graphics/berries/palettes/oran.pal b/graphics/berries/palettes/oran.pal
deleted file mode 100644
index ac06d0224..000000000
--- a/graphics/berries/palettes/oran.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-189 205 213
-156 172 213
-123 148 213
-90 123 213
-65 98 213
-65 82 180
-65 65 148
-74 49 115
-148 106 82
-115 74 41
-0 0 0
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/pamtre.pal b/graphics/berries/palettes/pamtre.pal
deleted file mode 100644
index fa2cb87a7..000000000
--- a/graphics/berries/palettes/pamtre.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-189 205 213
-172 180 205
-156 148 189
-131 106 180
-115 74 172
-98 57 139
-90 49 106
-82 41 82
-238 189 213
-205 164 172
-180 139 139
-156 115 106
-131 90 74
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/pecha.pal b/graphics/berries/palettes/pecha.pal
deleted file mode 100644
index b0743cc64..000000000
--- a/graphics/berries/palettes/pecha.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 255 255
-255 222 197
-255 197 148
-222 172 123
-197 148 106
-172 123 90
-148 98 74
-0 0 0
-255 205 172
-238 180 131
-123 246 0
-90 213 0
-57 180 0
-24 148 0
-0 0 0
diff --git a/graphics/berries/palettes/persim.pal b/graphics/berries/palettes/persim.pal
deleted file mode 100644
index 389fac638..000000000
--- a/graphics/berries/palettes/persim.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 222 205
-246 189 180
-246 164 156
-246 139 139
-197 106 106
-148 74 74
-98 41 49
-0 0 0
-0 0 0
-0 0 0
-90 98 82
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/petaya.pal b/graphics/berries/palettes/petaya.pal
deleted file mode 100644
index c6eefb076..000000000
--- a/graphics/berries/palettes/petaya.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 246 246
-255 197 205
-246 164 180
-246 131 156
-246 106 139
-189 74 90
-139 41 49
-230 197 148
-205 172 123
-189 148 98
-172 123 74
-156 98 49
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/pinap.pal b/graphics/berries/palettes/pinap.pal
deleted file mode 100644
index e62f61e20..000000000
--- a/graphics/berries/palettes/pinap.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-246 238 222
-246 238 189
-246 238 156
-246 238 123
-222 205 106
-197 180 98
-172 156 90
-148 123 74
-123 98 65
-106 74 57
-148 255 172
-115 213 148
-82 180 123
-49 148 98
-0 0 0
diff --git a/graphics/berries/palettes/pomeg.pal b/graphics/berries/palettes/pomeg.pal
deleted file mode 100644
index 01acf52c9..000000000
--- a/graphics/berries/palettes/pomeg.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 255 123
-246 180 98
-246 106 74
-246 41 49
-213 49 41
-180 57 32
-148 65 24
-115 82 24
-189 238 131
-156 205 115
-123 172 98
-90 139 82
-115 90 74
-82 90 49
-57 98 32
diff --git a/graphics/berries/palettes/qualot.pal b/graphics/berries/palettes/qualot.pal
deleted file mode 100644
index 4441e4564..000000000
--- a/graphics/berries/palettes/qualot.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 222 205
-246 189 180
-246 164 156
-246 139 139
-197 106 106
-148 74 74
-98 41 49
-255 246 197
-230 205 148
-213 164 106
-197 131 65
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/rabuta.pal b/graphics/berries/palettes/rabuta.pal
deleted file mode 100644
index 251beeb2d..000000000
--- a/graphics/berries/palettes/rabuta.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 246
-230 255 156
-197 238 131
-164 222 106
-131 205 82
-98 189 57
-98 164 57
-98 139 57
-255 246 197
-230 213 172
-205 189 156
-180 164 131
-156 139 115
-139 115 98
-90 106 57
-90 139 82
diff --git a/graphics/berries/palettes/rawst.pal b/graphics/berries/palettes/rawst.pal
deleted file mode 100644
index a7a4576b5..000000000
--- a/graphics/berries/palettes/rawst.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 98 246
-255 255 255
-213 230 222
-172 205 189
-131 189 156
-90 164 123
-49 148 98
-49 131 82
-57 115 74
-65 98 65
-74 82 57
-98 197 0
-49 148 0
-0 98 0
-148 205 0
-0 0 0
diff --git a/graphics/berries/palettes/razz.pal b/graphics/berries/palettes/razz.pal
deleted file mode 100644
index 01acf52c9..000000000
--- a/graphics/berries/palettes/razz.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 255 123
-246 180 98
-246 106 74
-246 41 49
-213 49 41
-180 57 32
-148 65 24
-115 82 24
-189 238 131
-156 205 115
-123 172 98
-90 139 82
-115 90 74
-82 90 49
-57 98 32
diff --git a/graphics/berries/palettes/salac.pal b/graphics/berries/palettes/salac.pal
deleted file mode 100644
index c0849c6bc..000000000
--- a/graphics/berries/palettes/salac.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 255 255
-255 255 255
-246 255 222
-238 255 189
-230 255 156
-197 238 131
-164 222 106
-131 205 82
-98 189 57
-90 156 41
-82 123 24
-74 98 8
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/sitrus.pal b/graphics/berries/palettes/sitrus.pal
deleted file mode 100644
index b80481ae1..000000000
--- a/graphics/berries/palettes/sitrus.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 246 246
-246 238 222
-246 238 172
-246 238 123
-222 213 106
-197 189 90
-172 164 82
-148 139 65
-123 115 57
-246 197 90
-246 172 32
-189 131 32
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/spelon.pal b/graphics/berries/palettes/spelon.pal
deleted file mode 100644
index 01acf52c9..000000000
--- a/graphics/berries/palettes/spelon.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 255 123
-246 180 98
-246 106 74
-246 41 49
-213 49 41
-180 57 32
-148 65 24
-115 82 24
-189 238 131
-156 205 115
-123 172 98
-90 139 82
-115 90 74
-82 90 49
-57 98 32
diff --git a/graphics/berries/palettes/starf.pal b/graphics/berries/palettes/starf.pal
deleted file mode 100644
index 68525b6a6..000000000
--- a/graphics/berries/palettes/starf.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 238 246
-246 139 90
-230 255 213
-205 255 180
-180 255 139
-156 255 106
-131 205 106
-106 164 106
-90 123 106
-246 41 41
-156 106 106
-255 156 156
-98 123 205
-164 213 41
-255 205 8
-0 0 0
diff --git a/graphics/berries/palettes/tamato.pal b/graphics/berries/palettes/tamato.pal
deleted file mode 100644
index 01acf52c9..000000000
--- a/graphics/berries/palettes/tamato.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 255 123
-246 180 98
-246 106 74
-246 41 49
-213 49 41
-180 57 32
-148 65 24
-115 82 24
-189 238 131
-156 205 115
-123 172 98
-90 139 82
-115 90 74
-82 90 49
-57 98 32
diff --git a/graphics/berries/palettes/watmel.pal b/graphics/berries/palettes/watmel.pal
deleted file mode 100644
index 786c0a848..000000000
--- a/graphics/berries/palettes/watmel.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 246 246
-255 222 205
-246 189 180
-246 164 156
-246 139 139
-213 115 115
-180 90 90
-148 74 74
-255 246 197
-230 205 148
-238 255 180
-213 246 156
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/wepear.pal b/graphics/berries/palettes/wepear.pal
deleted file mode 100644
index dac1511ff..000000000
--- a/graphics/berries/palettes/wepear.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 255 255
-230 255 156
-197 238 131
-164 222 106
-131 205 82
-98 189 57
-98 156 57
-98 123 57
-98 90 57
-0 0 0
-180 230 115
-0 0 0
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/palettes/wiki.pal b/graphics/berries/palettes/wiki.pal
deleted file mode 100644
index 88586d6b5..000000000
--- a/graphics/berries/palettes/wiki.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-197 197 197
-189 205 213
-164 156 197
-139 115 180
-115 74 172
-98 57 139
-90 49 106
-82 41 82
-180 139 123
-148 106 82
-115 74 41
-0 0 0
-189 238 131
-156 205 115
-123 172 98
-90 139 82
diff --git a/graphics/berries/pics/pamtre.png b/graphics/berries/pamtre.png
index d066ab74c..d066ab74c 100644
--- a/graphics/berries/pics/pamtre.png
+++ b/graphics/berries/pamtre.png
Binary files differ
diff --git a/graphics/berries/pics/pecha.png b/graphics/berries/pecha.png
index 76543a044..76543a044 100644
--- a/graphics/berries/pics/pecha.png
+++ b/graphics/berries/pecha.png
Binary files differ
diff --git a/graphics/berries/pics/persim.png b/graphics/berries/persim.png
index 6c0ba368a..6c0ba368a 100644
--- a/graphics/berries/pics/persim.png
+++ b/graphics/berries/persim.png
Binary files differ
diff --git a/graphics/berries/pics/petaya.png b/graphics/berries/petaya.png
index 04198ba39..04198ba39 100644
--- a/graphics/berries/pics/petaya.png
+++ b/graphics/berries/petaya.png
Binary files differ
diff --git a/graphics/berries/pics/pinap.png b/graphics/berries/pinap.png
index 71144554a..71144554a 100644
--- a/graphics/berries/pics/pinap.png
+++ b/graphics/berries/pinap.png
Binary files differ
diff --git a/graphics/berries/pics/pomeg.png b/graphics/berries/pomeg.png
index 394f8558a..394f8558a 100644
--- a/graphics/berries/pics/pomeg.png
+++ b/graphics/berries/pomeg.png
Binary files differ
diff --git a/graphics/berries/pics/qualot.png b/graphics/berries/qualot.png
index 15f51d4d8..15f51d4d8 100644
--- a/graphics/berries/pics/qualot.png
+++ b/graphics/berries/qualot.png
Binary files differ
diff --git a/graphics/berries/pics/rabuta.png b/graphics/berries/rabuta.png
index cf620f906..cf620f906 100644
--- a/graphics/berries/pics/rabuta.png
+++ b/graphics/berries/rabuta.png
Binary files differ
diff --git a/graphics/berries/pics/rawst.png b/graphics/berries/rawst.png
index c0e3e23a6..c0e3e23a6 100644
--- a/graphics/berries/pics/rawst.png
+++ b/graphics/berries/rawst.png
Binary files differ
diff --git a/graphics/berries/pics/razz.png b/graphics/berries/razz.png
index 5c415012d..5c415012d 100644
--- a/graphics/berries/pics/razz.png
+++ b/graphics/berries/razz.png
Binary files differ
diff --git a/graphics/berries/pics/salac.png b/graphics/berries/salac.png
index 557ab1742..557ab1742 100644
--- a/graphics/berries/pics/salac.png
+++ b/graphics/berries/salac.png
Binary files differ
diff --git a/graphics/berries/pics/sitrus.png b/graphics/berries/sitrus.png
index d98327ae1..d98327ae1 100644
--- a/graphics/berries/pics/sitrus.png
+++ b/graphics/berries/sitrus.png
Binary files differ
diff --git a/graphics/berries/pics/spelon.png b/graphics/berries/spelon.png
index 996f743db..996f743db 100644
--- a/graphics/berries/pics/spelon.png
+++ b/graphics/berries/spelon.png
Binary files differ
diff --git a/graphics/berries/pics/starf.png b/graphics/berries/starf.png
index 8cca44ee2..8cca44ee2 100644
--- a/graphics/berries/pics/starf.png
+++ b/graphics/berries/starf.png
Binary files differ
diff --git a/graphics/berries/pics/tamato.png b/graphics/berries/tamato.png
index 9f2c14d4a..9f2c14d4a 100644
--- a/graphics/berries/pics/tamato.png
+++ b/graphics/berries/tamato.png
Binary files differ
diff --git a/graphics/berries/pics/watmel.png b/graphics/berries/watmel.png
index 6da099327..6da099327 100644
--- a/graphics/berries/pics/watmel.png
+++ b/graphics/berries/watmel.png
Binary files differ
diff --git a/graphics/berries/pics/wepear.png b/graphics/berries/wepear.png
index 468231651..468231651 100644
--- a/graphics/berries/pics/wepear.png
+++ b/graphics/berries/wepear.png
Binary files differ
diff --git a/graphics/berries/pics/wiki.png b/graphics/berries/wiki.png
index d13c76f5b..d13c76f5b 100644
--- a/graphics/berries/pics/wiki.png
+++ b/graphics/berries/wiki.png
Binary files differ
diff --git a/graphics/berry_blender/arrow.pal b/graphics/berry_blender/arrow.pal
deleted file mode 100644
index 4c975292d..000000000
--- a/graphics/berry_blender/arrow.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-255 255 255
-213 222 238
-180 197 230
-148 172 222
-115 148 205
-82 123 197
-49 98 189
-255 180 205
-255 115 98
-255 49 0
-205 65 65
-189 24 24
-148 16 16
-74 57 139
-8 0 82
diff --git a/graphics/berry_blender/center.pal b/graphics/berry_blender/center.pal
deleted file mode 100644
index 606c527a3..000000000
--- a/graphics/berry_blender/center.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-255 255 255
-205 197 255
-172 164 222
-139 139 189
-106 106 156
-74 82 123
-41 57 90
-213 222 189
-180 189 156
-148 156 123
-115 123 90
-255 172 123
-246 115 82
-238 57 41
-156 24 0
diff --git a/graphics/berry_blender/outer.pal b/graphics/berry_blender/outer.pal
deleted file mode 100644
index c3b83cf16..000000000
--- a/graphics/berry_blender/outer.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-255 255 255
-213 222 238
-180 197 230
-148 172 222
-115 148 205
-82 123 197
-49 98 189
-255 180 205
-255 115 98
-255 49 0
-205 65 65
-189 24 24
-148 123 197
-74 57 139
-8 0 82
diff --git a/graphics/birch_speech/birch.pal b/graphics/birch_speech/birch.pal
deleted file mode 100644
index b89a5861a..000000000
--- a/graphics/birch_speech/birch.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-115 197 164
-255 230 205
-222 189 148
-197 148 115
-106 74 65
-98 98 115
-41 57 65
-180 115 82
-115 74 57
-205 205 222
-148 148 148
-189 156 90
-139 115 57
-74 49 24
-255 255 255
-0 0 24
diff --git a/graphics/decorations/decor_attract_mat.pal b/graphics/decorations/decor_attract_mat.pal
deleted file mode 100644
index 6f188b725..000000000
--- a/graphics/decorations/decor_attract_mat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-255 230 222
-255 197 197
-246 156 156
-213 115 172
-197 189 131
-246 148 205
-123 82 74
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_big_plant.pal b/graphics/decorations/decor_big_plant.pal
deleted file mode 100644
index 6e5a869f3..000000000
--- a/graphics/decorations/decor_big_plant.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-189 230 106
-123 172 74
-90 139 65
-57 98 41
-213 180 106
-180 139 82
-139 98 49
-82 57 32
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_blastoise_doll.pal b/graphics/decorations/decor_blastoise_doll.pal
deleted file mode 100644
index a4ad56936..000000000
--- a/graphics/decorations/decor_blastoise_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-197 222 255
-131 189 255
-90 139 213
-57 90 131
-213 156 90
-230 189 131
-156 131 90
-98 82 41
-139 90 74
-0 0 0
-0 0 0
-0 0 0
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_blue_brick.pal b/graphics/decorations/decor_blue_brick.pal
deleted file mode 100644
index e8720d82f..000000000
--- a/graphics/decorations/decor_blue_brick.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-156 180 246
-82 131 230
-57 98 189
-24 65 131
-106 106 106
-74 74 74
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_blue_tent.pal b/graphics/decorations/decor_blue_tent.pal
deleted file mode 100644
index e38cb56af..000000000
--- a/graphics/decorations/decor_blue_tent.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-148 172 255
-115 139 238
-65 90 189
-49 57 123
-0 0 0
-197 205 230
-164 164 164
-131 131 131
-90 82 74
-0 0 0
-0 0 0
-0 0 0
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_breakable_door.pal b/graphics/decorations/decor_breakable_door.pal
deleted file mode 100644
index 85ece26dc..000000000
--- a/graphics/decorations/decor_breakable_door.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-139 189 255
-106 156 213
-213 189 115
-156 131 41
-123 98 8
-90 74 57
-189 164 74
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-246 246 246
-197 197 197
diff --git a/graphics/decorations/decor_brick_desk.pal b/graphics/decorations/decor_brick_desk.pal
deleted file mode 100644
index 16b581470..000000000
--- a/graphics/decorations/decor_brick_desk.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-255 180 82
-230 139 49
-189 90 16
-0 0 0
-0 0 0
-0 0 0
-197 197 197
-148 148 156
-106 106 98
-74 74 74
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_camp_desk.pal b/graphics/decorations/decor_camp_desk.pal
deleted file mode 100644
index 0ac362c8a..000000000
--- a/graphics/decorations/decor_camp_desk.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-205 189 123
-172 156 90
-148 131 65
-123 98 32
-82 57 41
-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
diff --git a/graphics/decorations/decor_charizard_doll.pal b/graphics/decorations/decor_charizard_doll.pal
deleted file mode 100644
index 3e3e6bb79..000000000
--- a/graphics/decorations/decor_charizard_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-238 172 98
-255 205 74
-222 156 41
-115 74 24
-164 98 24
-0 0 0
-230 82 65
-180 49 32
-0 0 0
-0 0 0
-0 0 0
-246 246 246
-255 238 197
diff --git a/graphics/decorations/decor_colorful_plant.pal b/graphics/decorations/decor_colorful_plant.pal
deleted file mode 100644
index 996b183d2..000000000
--- a/graphics/decorations/decor_colorful_plant.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-205 180 115
-180 139 98
-131 90 57
-156 222 90
-139 189 139
-98 148 98
-41 90 57
-106 189 255
-255 123 172
-255 213 74
-0 0 0
-238 238 238
-0 0 0
diff --git a/graphics/decorations/decor_comfort_desk.pal b/graphics/decorations/decor_comfort_desk.pal
deleted file mode 100644
index f686f4b5c..000000000
--- a/graphics/decorations/decor_comfort_desk.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-180 222 139
-139 189 139
-90 139 90
-41 90 41
-115 164 115
-0 0 0
-164 131 65
-115 82 57
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_fire_blast_mat.pal b/graphics/decorations/decor_fire_blast_mat.pal
deleted file mode 100644
index ea2301df2..000000000
--- a/graphics/decorations/decor_fire_blast_mat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-255 180 82
-238 148 41
-213 98 24
-139 65 41
-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
diff --git a/graphics/decorations/decor_fissure_mat.pal b/graphics/decorations/decor_fissure_mat.pal
deleted file mode 100644
index d2a4efb6d..000000000
--- a/graphics/decorations/decor_fissure_mat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-205 189 131
-189 172 106
-156 139 74
-123 106 41
-98 74 32
-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
diff --git a/graphics/decorations/decor_glass_ornament.pal b/graphics/decorations/decor_glass_ornament.pal
deleted file mode 100644
index 1027a9501..000000000
--- a/graphics/decorations/decor_glass_ornament.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-0 0 0
-189 230 255
-156 197 255
-115 164 238
-82 139 189
-57 98 131
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-238 246 246
-0 0 0
diff --git a/graphics/decorations/decor_gorgeous_plant.pal b/graphics/decorations/decor_gorgeous_plant.pal
deleted file mode 100644
index 782b82eef..000000000
--- a/graphics/decorations/decor_gorgeous_plant.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-180 222 139
-139 180 139
-90 139 106
-49 82 41
-0 0 0
-148 115 82
-115 82 24
-0 0 0
-230 230 230
-164 164 164
-106 106 106
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_hard_desk.pal b/graphics/decorations/decor_hard_desk.pal
deleted file mode 100644
index 7aa8154ab..000000000
--- a/graphics/decorations/decor_hard_desk.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-197 197 197
-156 156 156
-115 115 115
-98 98 98
-74 74 74
-139 139 139
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_heavy_desk.pal b/graphics/decorations/decor_heavy_desk.pal
deleted file mode 100644
index c0ec71f09..000000000
--- a/graphics/decorations/decor_heavy_desk.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-180 180 197
-148 148 156
-90 90 90
-255 180 82
-230 139 49
-197 90 8
-90 41 8
-0 0 0
-123 123 123
-65 65 65
-106 106 115
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_lapras_doll.pal b/graphics/decorations/decor_lapras_doll.pal
deleted file mode 100644
index c7d2fe61a..000000000
--- a/graphics/decorations/decor_lapras_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-189 230 255
-115 180 246
-74 139 189
-32 90 139
-0 0 0
-0 0 0
-246 197 131
-222 156 98
-197 156 123
-106 74 41
-0 0 0
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_powder_snow_mat.pal b/graphics/decorations/decor_powder_snow_mat.pal
deleted file mode 100644
index 9f365a3da..000000000
--- a/graphics/decorations/decor_powder_snow_mat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-238 238 246
-180 205 255
-131 164 205
-197 222 255
-213 238 255
-98 131 172
-148 180 222
-49 82 123
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_pretty_desk.pal b/graphics/decorations/decor_pretty_desk.pal
deleted file mode 100644
index 7681a17cc..000000000
--- a/graphics/decorations/decor_pretty_desk.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-189 222 255
-156 197 255
-0 0 0
-131 164 246
-49 82 123
-0 0 0
-0 0 0
-0 0 0
-180 180 180
-131 131 131
-90 90 90
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_pretty_flowers.pal b/graphics/decorations/decor_pretty_flowers.pal
deleted file mode 100644
index c3b0ffce9..000000000
--- a/graphics/decorations/decor_pretty_flowers.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-0 0 0
-205 180 74
-156 139 32
-90 74 49
-123 106 41
-115 180 98
-74 123 57
-41 82 32
-255 205 180
-123 74 49
-238 156 139
-246 246 246
-222 197 197
diff --git a/graphics/decorations/decor_ragged_desk.pal b/graphics/decorations/decor_ragged_desk.pal
deleted file mode 100644
index bac2a7372..000000000
--- a/graphics/decorations/decor_ragged_desk.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 205 98
-49 49 49
-238 222 172
-213 197 139
-180 164 106
-148 131 74
-123 98 49
-82 65 32
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_red_brick.pal b/graphics/decorations/decor_red_brick.pal
deleted file mode 100644
index f9d647dda..000000000
--- a/graphics/decorations/decor_red_brick.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-238 123 123
-189 74 65
-148 32 32
-123 16 16
-106 106 106
-74 74 74
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_red_plant.pal b/graphics/decorations/decor_red_plant.pal
deleted file mode 100644
index c3021eee5..000000000
--- a/graphics/decorations/decor_red_plant.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-222 115 123
-189 74 82
-139 32 32
-82 32 16
-0 0 0
-115 164 106
-65 123 57
-24 82 41
-0 0 0
-205 172 98
-156 123 82
-106 82 57
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_red_tent.pal b/graphics/decorations/decor_red_tent.pal
deleted file mode 100644
index 61951623b..000000000
--- a/graphics/decorations/decor_red_tent.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-246 123 123
-222 90 90
-180 49 49
-115 49 57
-0 0 0
-197 205 230
-164 164 164
-131 131 131
-90 82 74
-0 0 0
-0 0 0
-0 0 0
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_regice_doll.pal b/graphics/decorations/decor_regice_doll.pal
deleted file mode 100644
index 39404f681..000000000
--- a/graphics/decorations/decor_regice_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-238 238 255
-180 189 205
-139 148 172
-82 98 115
-115 123 139
-0 0 0
-0 0 0
-246 180 65
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_regirock_doll.pal b/graphics/decorations/decor_regirock_doll.pal
deleted file mode 100644
index 5c39edb2f..000000000
--- a/graphics/decorations/decor_regirock_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-0 0 0
-180 164 98
-123 115 49
-82 74 49
-0 0 0
-205 115 82
-148 65 82
-0 0 0
-189 74 24
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_registeel_doll.pal b/graphics/decorations/decor_registeel_doll.pal
deleted file mode 100644
index 328f35a4f..000000000
--- a/graphics/decorations/decor_registeel_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-238 238 238
-197 197 197
-164 164 164
-123 123 131
-82 82 90
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-172 82 65
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_rhydon_doll.pal b/graphics/decorations/decor_rhydon_doll.pal
deleted file mode 100644
index 432dae5a9..000000000
--- a/graphics/decorations/decor_rhydon_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-222 222 222
-164 164 164
-189 189 189
-139 139 139
-106 106 106
-82 82 82
-230 197 115
-189 148 74
-131 98 74
-0 0 0
-0 0 0
-0 0 0
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_sand_ornament.pal b/graphics/decorations/decor_sand_ornament.pal
deleted file mode 100644
index e2fca6e31..000000000
--- a/graphics/decorations/decor_sand_ornament.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-213 197 156
-189 164 90
-148 123 49
-90 74 24
-131 106 32
-172 148 74
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_slide.pal b/graphics/decorations/decor_slide.pal
deleted file mode 100644
index 395694fa3..000000000
--- a/graphics/decorations/decor_slide.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-148 189 238
-106 148 205
-65 115 172
-180 222 255
-0 0 0
-0 0 0
-0 0 0
-213 213 213
-189 189 189
-156 156 156
-106 106 106
-0 0 0
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_snorlax_doll.pal b/graphics/decorations/decor_snorlax_doll.pal
deleted file mode 100644
index 21026b10d..000000000
--- a/graphics/decorations/decor_snorlax_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-0 0 0
-131 139 164
-82 90 115
-0 0 0
-255 238 222
-255 197 148
-222 156 90
-139 90 49
-172 106 49
-230 172 123
-0 0 0
-238 238 238
-189 189 197
diff --git a/graphics/decorations/decor_solid_board.pal b/graphics/decorations/decor_solid_board.pal
deleted file mode 100644
index 9995483b4..000000000
--- a/graphics/decorations/decor_solid_board.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-189 164 98
-156 131 65
-123 90 41
-106 90 74
-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
diff --git a/graphics/decorations/decor_spikes_mat.pal b/graphics/decorations/decor_spikes_mat.pal
deleted file mode 100644
index ec37e1fe0..000000000
--- a/graphics/decorations/decor_spikes_mat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 213 98
-49 49 49
-0 0 0
-148 197 148
-106 172 115
-82 148 90
-139 156 98
-222 205 139
-180 164 98
-205 189 131
-49 98 57
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_stand.pal b/graphics/decorations/decor_stand.pal
deleted file mode 100644
index a85f0b7b2..000000000
--- a/graphics/decorations/decor_stand.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-255 180 156
-238 115 106
-197 65 65
-0 0 0
-0 0 0
-0 0 0
-197 197 197
-172 172 172
-131 131 131
-106 106 106
-0 0 0
-0 0 0
-246 246 246
-0 0 0
diff --git a/graphics/decorations/decor_surf_mat.pal b/graphics/decorations/decor_surf_mat.pal
deleted file mode 100644
index 17be591b7..000000000
--- a/graphics/decorations/decor_surf_mat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-205 238 255
-164 205 255
-148 180 255
-115 148 222
-57 90 156
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-246 246 255
-0 0 0
diff --git a/graphics/decorations/decor_thunder_mat.pal b/graphics/decorations/decor_thunder_mat.pal
deleted file mode 100644
index fbe488860..000000000
--- a/graphics/decorations/decor_thunder_mat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-0 0 0
-189 222 255
-172 205 238
-139 172 205
-139 156 164
-255 230 123
-90 106 115
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-238 246 255
-0 0 0
diff --git a/graphics/decorations/decor_tire.pal b/graphics/decorations/decor_tire.pal
deleted file mode 100644
index 18a3279fc..000000000
--- a/graphics/decorations/decor_tire.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-0 0 0
-238 238 238
-189 189 189
-164 164 164
-131 131 131
-98 98 98
-74 74 74
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_tropical_plant.pal b/graphics/decorations/decor_tropical_plant.pal
deleted file mode 100644
index 4057e7cb2..000000000
--- a/graphics/decorations/decor_tropical_plant.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-197 172 82
-164 139 49
-131 106 16
-82 65 16
-0 0 0
-0 0 0
-148 222 90
-106 180 49
-74 131 24
-32 90 24
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/decorations/decor_venusaur_doll.pal b/graphics/decorations/decor_venusaur_doll.pal
deleted file mode 100644
index dcd11bea2..000000000
--- a/graphics/decorations/decor_venusaur_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-197 255 222
-123 189 57
-82 148 24
-74 115 24
-41 82 32
-238 156 139
-213 98 90
-164 74 74
-115 57 65
-230 189 65
-131 98 24
-82 32 41
-246 246 246
diff --git a/graphics/decorations/decor_wailmer_doll.pal b/graphics/decorations/decor_wailmer_doll.pal
deleted file mode 100644
index 99347748e..000000000
--- a/graphics/decorations/decor_wailmer_doll.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-0 0 0
-0 0 0
-106 148 172
-74 115 148
-57 98 123
-57 65 106
-230 180 106
-205 148 82
-180 139 57
-115 74 41
-0 0 0
-213 213 213
-246 246 246
-164 164 164
diff --git a/graphics/decorations/decor_yellow_brick.pal b/graphics/decorations/decor_yellow_brick.pal
deleted file mode 100644
index cfdd874ad..000000000
--- a/graphics/decorations/decor_yellow_brick.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 197 98
-49 49 49
-255 230 106
-222 197 49
-180 156 8
-148 123 0
-106 106 106
-74 74 74
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/interface/ball/ultra.pal b/graphics/interface/ball/ultra.pal
deleted file mode 100644
index 3b7021097..000000000
--- a/graphics/interface/ball/ultra.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-255 255 255
-180 139 16
-205 172 32
-230 205 49
-255 238 65
-255 255 255
-148 148 148
-65 65 65
-24 24 24
-255 255 255
-255 255 255
-255 255 255
-255 255 255
-255 255 255
-255 255 255
-255 255 255
diff --git a/graphics/interface/link_test_digits.pal b/graphics/interface/link_test_digits.pal
deleted file mode 100644
index 5362e8d6d..000000000
--- a/graphics/interface/link_test_digits.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-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 255 255
diff --git a/graphics/interface/unk_textbox_border.pal b/graphics/interface/unk_textbox_border.pal
deleted file mode 100644
index efa37f0a1..000000000
--- a/graphics/interface/unk_textbox_border.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-148 148 148
-148 189 255
-156 230 255
-205 255 255
-98 106 246
-164 180 172
-197 205 197
-222 230 222
-255 255 255
-0 0 0
-0 0 0
-0 0 0
-98 98 98
-148 148 148
-197 197 197
-0 0 0
diff --git a/graphics/interface/wireless_link_display.pal b/graphics/interface/wireless_link_display.pal
deleted file mode 100644
index e880353cf..000000000
--- a/graphics/interface/wireless_link_display.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-255 255 255
-255 90 0
-246 139 74
-255 205 164
-238 246 246
-180 222 255
-57 90 123
-115 189 255
-222 222 246
-131 246 180
-106 115 131
-189 197 213
-156 164 180
-74 74 90
-0 0 0
diff --git a/graphics/interface/wireless_link_icon.pal b/graphics/interface/wireless_link_icon.pal
deleted file mode 100644
index 4a225886c..000000000
--- a/graphics/interface/wireless_link_icon.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-172 180 255
-131 148 164
-238 246 246
-180 180 189
-74 90 106
-255 0 0
-255 180 131
-255 255 255
-0 0 0
-238 246 246
-238 246 246
-238 246 246
-238 246 246
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/intro/copyright.pal b/graphics/intro/copyright.pal
deleted file mode 100644
index 4219d4394..000000000
--- a/graphics/intro/copyright.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 32 32
-24 57 57
-49 82 82
-82 106 106
-106 131 131
-139 156 156
-164 180 180
-197 205 205
-222 230 230
-255 255 255
diff --git a/graphics/intro/intro1_flygon.pal b/graphics/intro/intro1_flygon.pal
deleted file mode 100644
index dcfc242a5..000000000
--- a/graphics/intro/intro1_flygon.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-74 74 82
-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
diff --git a/graphics/intro/intro2_bgclouds.pal b/graphics/intro/intro2_bgclouds.pal
deleted file mode 100644
index 6b312a16c..000000000
--- a/graphics/intro/intro2_bgclouds.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-255 255 255
-230 246 255
-205 238 255
-180 230 255
-164 222 255
-139 213 255
-115 205 255
-98 197 255
-230 230 255
-246 255 255
-213 222 255
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/intro/intro2_bgnight.pal b/graphics/intro/intro2_bgnight.pal
deleted file mode 100644
index 765aad45a..000000000
--- a/graphics/intro/intro2_bgnight.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-0 0 0
-0 0 0
-82 90 148
-148 131 164
-57 74 123
-131 106 156
-98 90 123
-156 164 197
-139 148 172
-90 131 139
-189 197 213
-90 115 164
-230 230 82
-131 131 164
-246 246 123
diff --git a/graphics/intro/intro2_bgtrees.pal b/graphics/intro/intro2_bgtrees.pal
deleted file mode 100644
index 5c506481a..000000000
--- a/graphics/intro/intro2_bgtrees.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-156 189 246
-172 205 246
-197 230 255
-213 246 255
-238 255 255
-156 180 172
-197 197 156
-172 189 164
-98 139 98
-98 156 57
-123 164 131
-156 213 82
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/intro/intro2_brendan.pal b/graphics/intro/intro2_brendan.pal
deleted file mode 100644
index a948fb920..000000000
--- a/graphics/intro/intro2_brendan.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-74 189 172
-82 74 74
-139 139 123
-197 189 222
-255 255 255
-230 49 0
-246 148 0
-0 0 0
-255 213 148
-222 164 139
-0 0 0
-246 57 131
-189 57 115
-131 255 131
-82 197 90
-131 164 65
diff --git a/graphics/intro/intro2_bubbles.pal b/graphics/intro/intro2_bubbles.pal
deleted file mode 100644
index 85c483666..000000000
--- a/graphics/intro/intro2_bubbles.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-106 148 98
-0 41 82
-255 255 255
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-139 172 255
-106 148 222
-82 123 189
-49 98 156
-24 74 123
-0 49 98
-180 0 0
diff --git a/graphics/intro/intro2_flygon.pal b/graphics/intro/intro2_flygon.pal
deleted file mode 100644
index 09607ac17..000000000
--- a/graphics/intro/intro2_flygon.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-74 189 172
-82 74 74
-139 139 123
-197 189 222
-255 255 255
-164 98 106
-238 57 115
-255 106 139
-255 197 180
-246 255 139
-213 238 106
-172 213 65
-164 222 139
-123 197 115
-90 148 82
-0 0 0
diff --git a/graphics/intro/intro2_grass.pal b/graphics/intro/intro2_grass.pal
deleted file mode 100644
index 389977abf..000000000
--- a/graphics/intro/intro2_grass.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-74 82 82
-90 123 123
-205 205 197
-255 255 255
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-106 164 98
-115 197 98
-164 230 90
diff --git a/graphics/intro/intro2_latias.pal b/graphics/intro/intro2_latias.pal
deleted file mode 100644
index 0af96be29..000000000
--- a/graphics/intro/intro2_latias.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-123 106 106
-115 131 164
-222 213 238
-255 255 255
-213 65 57
-238 106 32
-172 74 65
-255 90 65
-180 172 197
-189 139 57
-189 98 41
-90 115 180
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/intro/intro2_latios.pal b/graphics/intro/intro2_latios.pal
deleted file mode 100644
index bb51c0a7d..000000000
--- a/graphics/intro/intro2_latios.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-123 106 106
-115 131 164
-222 213 238
-255 255 255
-106 131 230
-139 197 255
-90 115 180
-139 156 230
-180 172 197
-238 82 32
-238 41 24
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/intro/intro2_manectric.pal b/graphics/intro/intro2_manectric.pal
deleted file mode 100644
index c6bf97aa3..000000000
--- a/graphics/intro/intro2_manectric.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-74 189 172
-82 74 74
-139 139 123
-197 189 222
-255 255 255
-230 49 0
-246 148 0
-0 0 0
-255 255 180
-246 246 90
-205 213 49
-148 123 8
-131 164 255
-106 106 255
-41 74 213
-0 0 0
diff --git a/graphics/intro/intro2_may.pal b/graphics/intro/intro2_may.pal
deleted file mode 100644
index 1ff2ecd1d..000000000
--- a/graphics/intro/intro2_may.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-74 189 172
-82 74 74
-139 139 123
-197 189 222
-255 255 255
-82 197 0
-148 246 98
-98 98 131
-255 213 148
-222 164 139
-180 172 115
-246 90 90
-189 57 115
-131 255 65
-82 197 90
-131 164 65
diff --git a/graphics/intro/intro2_torchic.pal b/graphics/intro/intro2_torchic.pal
deleted file mode 100644
index 860b76b60..000000000
--- a/graphics/intro/intro2_torchic.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-74 189 172
-82 74 74
-139 139 123
-197 189 222
-255 255 255
-131 98 41
-230 98 32
-238 148 74
-246 197 115
-255 255 148
-255 213 0
-205 189 49
-255 246 205
-255 213 148
-222 180 115
-0 0 0
diff --git a/graphics/intro/intro2_volbeat.pal b/graphics/intro/intro2_volbeat.pal
deleted file mode 100644
index 8d2464800..000000000
--- a/graphics/intro/intro2_volbeat.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-74 189 172
-82 74 74
-139 139 123
-197 189 222
-255 255 255
-131 98 41
-230 98 32
-238 148 74
-246 197 115
-255 255 148
-255 213 0
-205 189 49
-238 156 255
-197 115 230
-156 82 213
-0 0 0
diff --git a/graphics/intro/intro3_lightning.pal b/graphics/intro/intro3_lightning.pal
deleted file mode 100644
index 16aae4be3..000000000
--- a/graphics/intro/intro3_lightning.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-74 189 172
-255 255 148
-255 213 0
-205 189 49
-255 255 255
-82 74 74
-115 106 82
-148 139 98
-180 180 115
-213 213 131
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/intro/intro3_pokeball.pal b/graphics/intro/intro3_pokeball.pal
deleted file mode 100644
index d520a5e82..000000000
--- a/graphics/intro/intro3_pokeball.pal
+++ /dev/null
@@ -1,259 +0,0 @@
-JASC-PAL
-0100
-256
-255 255 255
-0 0 0
-49 41 24
-106 90 57
-164 139 90
-222 98 57
-131 131 189
-255 255 255
-74 32 16
-148 65 32
-41 41 57
-82 82 123
-82 82 82
-164 164 164
-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 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 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
-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 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 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
-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 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 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
-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 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 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/intro/intro3_streaks.pal b/graphics/intro/intro3_streaks.pal
deleted file mode 100644
index 21ae1e434..000000000
--- a/graphics/intro/intro3_streaks.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-255 255 255
-0 0 0
-255 230 74
-255 230 98
-255 238 123
-255 238 148
-255 246 172
-255 255 197
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-255 255 255
diff --git a/graphics/link/minigame_digits.pal b/graphics/link/minigame_digits.pal
deleted file mode 100644
index e27640830..000000000
--- a/graphics/link/minigame_digits.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-0 0 0
-205 205 205
-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
diff --git a/graphics/link_games/berrycrush_grinder_base.pal b/graphics/link_games/berrycrush_grinder_base.pal
deleted file mode 100644
index 23b7036da..000000000
--- a/graphics/link_games/berrycrush_grinder_base.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-255 189 189
-148 131 82
-180 164 115
-205 189 148
-213 205 172
-230 222 189
-246 238 205
-255 255 238
-98 106 115
-115 123 131
-0 0 0
-0 90 16
-255 0 0
-49 82 205
-172 164 131
-65 74 90
diff --git a/graphics/link_games/berrycrush_timerdigits.pal b/graphics/link_games/berrycrush_timerdigits.pal
deleted file mode 100644
index 956db48b1..000000000
--- a/graphics/link_games/berrycrush_timerdigits.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-148 222 164
-164 230 172
-180 238 189
-197 246 205
-213 255 222
-238 255 238
-205 106 255
-172 82 222
-148 148 148
-123 123 123
-255 0 255
-255 0 255
-255 0 255
-180 189 189
-255 255 255
diff --git a/graphics/link_games/dodrioberry_berrysprites.pal b/graphics/link_games/dodrioberry_berrysprites.pal
deleted file mode 100644
index 98266fb46..000000000
--- a/graphics/link_games/dodrioberry_berrysprites.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-230 255 255
-65 65 65
-156 156 230
-115 115 189
-139 246 213
-98 213 172
-255 213 57
-246 172 57
-238 238 238
-0 148 213
-230 131 49
-0 156 189
-255 148 139
-0 230 255
-213 98 90
-0 238 255
diff --git a/graphics/link_games/dodrioberry_pkmn.pal b/graphics/link_games/dodrioberry_pkmn.pal
deleted file mode 100644
index ed27897b7..000000000
--- a/graphics/link_games/dodrioberry_pkmn.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-238 255 238
-41 41 41
-255 197 115
-230 164 74
-115 90 65
-246 131 164
-172 74 74
-255 238 189
-213 197 148
-115 106 82
-148 148 148
-106 98 90
-255 205 230
-180 139 90
-0 0 0
-255 255 255
diff --git a/graphics/link_games/dodrioberry_platform.pal b/graphics/link_games/dodrioberry_platform.pal
deleted file mode 100644
index fc1f6a7e8..000000000
--- a/graphics/link_games/dodrioberry_platform.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-230 246 255
-255 255 255
-238 255 255
-246 255 255
-230 230 246
-222 238 246
-222 246 246
-238 238 255
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/graphics/link_games/dodrioberry_status.pal b/graphics/link_games/dodrioberry_status.pal
deleted file mode 100644
index 028e4e20a..000000000
--- a/graphics/link_games/dodrioberry_status.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-230 255 255
-65 65 65
-255 255 189
-255 238 115
-255 197 0
-197 197 213
-164 164 180
-131 131 148
-255 197 197
-255 139 139
-255 49 49
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-255 49 0
diff --git a/graphics/link_games/pkmnjump_321start1.pal b/graphics/link_games/pkmnjump_321start1.pal
deleted file mode 100644
index 9fa1875d3..000000000
--- a/graphics/link_games/pkmnjump_321start1.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-156 213 230
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-32 32 32
-131 49 49
-230 65 41
-156 65 65
-255 90 74
-172 115 57
-255 189 74
-255 255 255
diff --git a/graphics/link_games/pkmnjump_321start2.pal b/graphics/link_games/pkmnjump_321start2.pal
deleted file mode 100644
index 9fa1875d3..000000000
--- a/graphics/link_games/pkmnjump_321start2.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-156 213 230
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-32 32 32
-131 49 49
-230 65 41
-156 65 65
-255 90 74
-172 115 57
-255 189 74
-255 255 255
diff --git a/graphics/link_games/pkmnjump_bg.pal b/graphics/link_games/pkmnjump_bg.pal
deleted file mode 100644
index aed4bcc8b..000000000
--- a/graphics/link_games/pkmnjump_bg.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-156 156 197
-106 222 156
-106 230 230
-139 230 255
-156 238 255
-197 246 255
-189 213 131
-230 213 115
-238 230 131
-246 246 156
-222 222 172
-106 230 172
-255 0 255
-255 0 255
-255 0 255
-255 0 255
diff --git a/graphics/link_games/pkmnjump_results.pal b/graphics/link_games/pkmnjump_results.pal
deleted file mode 100644
index aca961de3..000000000
--- a/graphics/link_games/pkmnjump_results.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-156 156 197
-148 197 115
-172 222 123
-213 180 57
-238 205 65
-230 164 131
-246 189 172
-98 98 82
-164 148 90
-205 189 82
-255 238 74
-156 164 230
-90 90 106
-172 148 106
-230 205 123
-180 189 246
diff --git a/graphics/link_games/pkmnjump_venusaur.pal b/graphics/link_games/pkmnjump_venusaur.pal
deleted file mode 100644
index a3514b004..000000000
--- a/graphics/link_games/pkmnjump_venusaur.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-213 213 213
-32 98 49
-98 156 115
-90 205 148
-139 238 189
-139 57 0
-189 106 49
-16 16 16
-230 74 65
-255 131 115
-156 246 139
-222 205 49
-255 238 82
-65 164 24
-106 205 65
-255 255 255
diff --git a/graphics/misc/cable_car.pal b/graphics/misc/cable_car.pal
deleted file mode 100644
index 64985f6da..000000000
--- a/graphics/misc/cable_car.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-255 255 255
-164 222 222
-98 139 139
-139 180 180
-131 131 139
-98 98 123
-65 74 106
-41 49 90
-139 205 246
-98 172 238
-255 255 148
-238 213 82
-213 172 16
-180 106 0
-139 65 0
diff --git a/graphics/misc/clock_small.pal b/graphics/misc/clock_small.pal
deleted file mode 100644
index 3398fcbe3..000000000
--- a/graphics/misc/clock_small.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-98 139 90
-0 0 0
-57 57 57
-123 123 123
-189 189 189
-255 255 255
-255 65 41
-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
diff --git a/graphics/misc/evo_sparkle.pal b/graphics/misc/evo_sparkle.pal
deleted file mode 100644
index 7ccbffd1d..000000000
--- a/graphics/misc/evo_sparkle.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-49 82 82
-82 106 106
-106 131 131
-139 156 156
-164 180 180
-197 205 205
-222 230 230
-255 255 255
diff --git a/graphics/misc/japanese_hof.pal b/graphics/misc/japanese_hof.pal
deleted file mode 100644
index f50aa5341..000000000
--- a/graphics/misc/japanese_hof.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-0 0 0
-131 238 197
-255 32 32
-115 222 180
-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
-65 65 65
-255 255 255
diff --git a/graphics/pokenav/brendan_icon.pal b/graphics/pokenav/brendan_icon.pal
deleted file mode 100644
index a83ed903f..000000000
--- a/graphics/pokenav/brendan_icon.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-115 197 164
-255 213 180
-255 197 148
-222 148 115
-123 65 65
-57 74 123
-41 57 98
-24 41 82
-16 32 57
-222 230 238
-115 205 115
-74 148 82
-255 98 90
-197 65 65
-255 255 255
-0 0 0
diff --git a/graphics/pokenav/fly_target_icons.pal b/graphics/pokenav/fly_target_icons.pal
deleted file mode 100644
index c0f2cc4e9..000000000
--- a/graphics/pokenav/fly_target_icons.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-0 0 0
-255 0 0
-0 0 0
-0 0 0
-205 205 205
-0 0 0
-0 0 0
-255 213 222
-255 164 197
-197 98 115
-131 131 123
-98 90 90
-49 49 65
-0 0 0
-0 0 0
-255 255 255
diff --git a/graphics/pokenav/may_icon.pal b/graphics/pokenav/may_icon.pal
deleted file mode 100644
index 2833b2613..000000000
--- a/graphics/pokenav/may_icon.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-115 197 164
-255 222 205
-222 164 148
-205 131 115
-123 90 82
-98 98 115
-41 57 65
-164 106 82
-74 49 57
-205 205 222
-106 213 65
-65 172 32
-255 98 90
-197 65 65
-255 255 255
-0 0 0
diff --git a/graphics/spinda_spots/spot_0.bin b/graphics/spinda_spots/spot_0.bin
new file mode 100644
index 000000000..938d1d592
--- /dev/null
+++ b/graphics/spinda_spots/spot_0.bin
Binary files differ
diff --git a/graphics/spinda_spots/spot_1.bin b/graphics/spinda_spots/spot_1.bin
new file mode 100644
index 000000000..db46b5de4
--- /dev/null
+++ b/graphics/spinda_spots/spot_1.bin
Binary files differ
diff --git a/graphics/spinda_spots/spot_2.bin b/graphics/spinda_spots/spot_2.bin
new file mode 100644
index 000000000..3b1bf7214
--- /dev/null
+++ b/graphics/spinda_spots/spot_2.bin
Binary files differ
diff --git a/graphics/spinda_spots/spot_3.bin b/graphics/spinda_spots/spot_3.bin
new file mode 100644
index 000000000..10c73f9ba
--- /dev/null
+++ b/graphics/spinda_spots/spot_3.bin
Binary files differ
diff --git a/graphics/title_screen/emerald_version.pal b/graphics/title_screen/emerald_version.pal
deleted file mode 100644
index c5ed9a582..000000000
--- a/graphics/title_screen/emerald_version.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-255 74 238
-156 156 156
-90 90 90
-222 222 222
-24 16 24
-74 74 74
-238 238 238
-41 41 41
-172 172 172
-106 106 106
-189 189 189
-139 139 139
-205 205 205
-123 123 123
-65 57 57
-255 255 255
diff --git a/graphics/title_screen/press_start.pal b/graphics/title_screen/press_start.pal
deleted file mode 100644
index 561ab8f8f..000000000
--- a/graphics/title_screen/press_start.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-115 156 98
-0 0 0
-148 156 164
-180 189 189
-222 222 238
-255 255 255
-255 0 0
-255 0 0
-255 0 0
-255 0 0
-255 0 0
-255 0 0
-255 0 0
-255 0 0
-255 0 0
-255 0 0
diff --git a/graphics/unused/intro_birch_beauty.png b/graphics/unused/intro_birch_beauty.png
index 817db46f7..85951c902 100644
--- a/graphics/unused/intro_birch_beauty.png
+++ b/graphics/unused/intro_birch_beauty.png
Binary files differ
diff --git a/graphics/unused/old_charmap.pal b/graphics/unused/old_charmap.pal
deleted file mode 100644
index cbcd5de4d..000000000
--- a/graphics/unused/old_charmap.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-255 255 255
-24 0 0
-41 0 0
-255 255 255
-0 0 0
-255 255 255
-255 65 0
-0 0 0
-255 0 0
-255 24 0
-255 65 0
-255 98 0
-255 131 0
-255 180 0
-255 222 0
-255 255 255
diff --git a/graphics/wonder_transfers/wonder_card_1.pal b/graphics/wonder_transfers/wonder_card_1.pal
deleted file mode 100644
index 9c5ef9b26..000000000
--- a/graphics/wonder_transfers/wonder_card_1.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-90 197 148
-213 213 213
-74 74 74
-98 106 106
-213 189 74
-238 213 82
-246 246 213
-255 255 255
-230 230 213
-238 238 213
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
diff --git a/graphics/wonder_transfers/wonder_card_2.pal b/graphics/wonder_transfers/wonder_card_2.pal
deleted file mode 100644
index 18c2be3fd..000000000
--- a/graphics/wonder_transfers/wonder_card_2.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-90 197 148
-82 82 106
-131 131 139
-197 189 213
-205 230 255
-115 139 197
-49 74 82
-0 0 0
-0 0 0
-222 255 246
-197 255 222
-222 238 255
-156 180 222
-156 106 115
-172 139 164
-255 255 255
diff --git a/graphics/wonder_transfers/wonder_card_3.pal b/graphics/wonder_transfers/wonder_card_3.pal
deleted file mode 100644
index db02d5d4b..000000000
--- a/graphics/wonder_transfers/wonder_card_3.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-90 197 148
-82 82 106
-131 131 139
-164 156 172
-197 189 213
-246 238 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 230 230
-255 197 197
-255 164 164
-246 139 139
-238 90 90
-255 255 255
diff --git a/graphics/wonder_transfers/wonder_card_4.pal b/graphics/wonder_transfers/wonder_card_4.pal
deleted file mode 100644
index bfbf036a5..000000000
--- a/graphics/wonder_transfers/wonder_card_4.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-90 197 148
-82 82 106
-131 131 139
-164 156 172
-197 189 213
-246 238 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-238 255 230
-213 255 189
-189 230 156
-164 213 131
-148 197 106
-255 255 255
diff --git a/graphics/wonder_transfers/wonder_card_5.pal b/graphics/wonder_transfers/wonder_card_5.pal
deleted file mode 100644
index fa41ee3b0..000000000
--- a/graphics/wonder_transfers/wonder_card_5.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-90 197 148
-82 82 106
-131 131 139
-164 156 172
-197 189 213
-246 238 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-238 246 255
-205 238 246
-180 222 246
-156 197 238
-115 156 197
-255 255 255
diff --git a/graphics/wonder_transfers/wonder_card_6.pal b/graphics/wonder_transfers/wonder_card_6.pal
deleted file mode 100644
index 8a71f5846..000000000
--- a/graphics/wonder_transfers/wonder_card_6.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-90 197 148
-82 82 106
-131 131 139
-164 156 172
-197 189 213
-246 238 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-238 238 197
-230 230 139
-222 222 115
-213 213 90
-189 189 57
-255 255 255
diff --git a/graphics/wonder_transfers/wonder_card_7.pal b/graphics/wonder_transfers/wonder_card_7.pal
deleted file mode 100644
index 01832b5e2..000000000
--- a/graphics/wonder_transfers/wonder_card_7.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-189 123 148
-213 213 213
-74 74 74
-115 123 123
-164 156 90
-164 148 90
-197 197 90
-213 205 90
-222 213 90
-213 213 106
-238 246 98
-230 222 98
-213 205 98
-197 180 98
-238 230 98
-246 238 106
diff --git a/graphics/wonder_transfers/wonder_card_8.pal b/graphics/wonder_transfers/wonder_card_8.pal
deleted file mode 100644
index 28a498b57..000000000
--- a/graphics/wonder_transfers/wonder_card_8.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-189 123 148
-213 213 213
-74 74 74
-115 123 123
-156 156 156
-139 139 148
-180 180 197
-197 189 205
-205 205 222
-189 189 189
-197 230 222
-189 213 213
-180 197 197
-156 164 172
-222 222 230
-230 230 238
diff --git a/graphics/wonder_transfers/wonder_news_1.pal b/graphics/wonder_transfers/wonder_news_1.pal
deleted file mode 100644
index 970736bbb..000000000
--- a/graphics/wonder_transfers/wonder_news_1.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-90 197 148
-213 213 213
-74 74 74
-98 106 106
-213 189 74
-238 213 82
-246 246 213
-255 255 255
-230 230 213
-238 238 213
-246 246 238
-255 0 255
-255 0 255
-255 0 255
-255 0 255
-255 0 255
diff --git a/graphics/wonder_transfers/wonder_news_7.pal b/graphics/wonder_transfers/wonder_news_7.pal
deleted file mode 100644
index 01832b5e2..000000000
--- a/graphics/wonder_transfers/wonder_news_7.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-189 123 148
-213 213 213
-74 74 74
-115 123 123
-164 156 90
-164 148 90
-197 197 90
-213 205 90
-222 213 90
-213 213 106
-238 246 98
-230 222 98
-213 205 98
-197 180 98
-238 230 98
-246 238 106
diff --git a/graphics/wonder_transfers/wonder_news_8.pal b/graphics/wonder_transfers/wonder_news_8.pal
deleted file mode 100644
index 28a498b57..000000000
--- a/graphics/wonder_transfers/wonder_news_8.pal
+++ /dev/null
@@ -1,19 +0,0 @@
-JASC-PAL
-0100
-16
-189 123 148
-213 213 213
-74 74 74
-115 123 123
-156 156 156
-139 139 148
-180 180 197
-197 189 205
-205 205 222
-189 189 189
-197 230 222
-189 213 213
-180 197 197
-156 164 172
-222 222 230
-230 230 238
diff --git a/include/battle.h b/include/battle.h
index 4fd252676..5225b72e3 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -2,70 +2,18 @@
#define GUARD_BATTLE_H
// should they be included here or included individually by every file?
+#include "constants/battle.h"
#include "battle_util.h"
#include "battle_script_commands.h"
-#include "battle_2.h"
+#include "battle_main.h"
#include "battle_ai_switch_items.h"
#include "battle_gfx_sfx_util.h"
#include "battle_util2.h"
#include "battle_bg.h"
-/*
- Banks are a name given to what could be called a 'battlerId' or 'monControllerId'.
- Each bank has a value consisting of two bits.
- 0x1 bit is responsible for the side, 0 = player's side, 1 = opponent's side.
- 0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.)
-*/
-
-#define BATTLE_BANKS_COUNT 4
-
-#define IDENTITY_PLAYER_MON1 0
-#define IDENTITY_OPPONENT_MON1 1
-#define IDENTITY_PLAYER_MON2 2
-#define IDENTITY_OPPONENT_MON2 3
-
-#define SIDE_PLAYER 0x0
-#define SIDE_OPPONENT 0x1
-
-#define BIT_SIDE 0x1
-#define BIT_MON 0x2
-
-#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank]))
-#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE))
-#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE))
-
-#define BATTLE_TYPE_DOUBLE 0x0001
-#define BATTLE_TYPE_LINK 0x0002
-#define BATTLE_TYPE_WILD 0x0004
-#define BATTLE_TYPE_TRAINER 0x0008
-#define BATTLE_TYPE_FIRST_BATTLE 0x0010
-#define BATTLE_TYPE_20 0x0020
-#define BATTLE_TYPE_MULTI 0x0040
-#define BATTLE_TYPE_SAFARI 0x0080
-#define BATTLE_TYPE_BATTLE_TOWER 0x0100
-#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
-#define BATTLE_TYPE_ROAMER 0x0400
-#define BATTLE_TYPE_EREADER_TRAINER 0x0800
-#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
-#define BATTLE_TYPE_LEGENDARY 0x2000
-#define BATTLE_TYPE_REGI 0x4000
-#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
-#define BATTLE_TYPE_DOME 0x10000
-#define BATTLE_TYPE_PALACE 0x20000
-#define BATTLE_TYPE_ARENA 0x40000
-#define BATTLE_TYPE_FACTORY 0x80000
-#define BATTLE_TYPE_PIKE 0x100000
-#define BATTLE_TYPE_PYRAMID 0x200000
-#define BATTLE_TYPE_INGAME_PARTNER 0x400000
-#define BATTLE_TYPE_x800000 0x800000
-#define BATTLE_TYPE_RECORDED 0x1000000
-#define BATTLE_TYPE_x2000000 0x2000000
-#define BATTLE_TYPE_x4000000 0x4000000
-#define BATTLE_TYPE_SECRET_BASE 0x8000000
-#define BATTLE_TYPE_GROUDON 0x10000000
-#define BATTLE_TYPE_KYOGRE 0x20000000
-#define BATTLE_TYPE_RAYQUAZA 0x40000000
-#define BATTLE_TYPE_x80000000 0x80000000
+#define GET_BATTLER_POSITION(battler) (gBattlerPositions[battler])
+#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
+#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE)
#define TRAINER_OPPONENT_3FE 0x3FE
#define TRAINER_OPPONENT_C00 0xC00
@@ -73,157 +21,28 @@
#define STEVEN_PARTNER_ID 0xC03
#define SECRET_BASE_OPPONENT 0x400
-#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
-#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
-
-#define BATTLE_WON 0x1
-#define BATTLE_LOST 0x2
-#define BATTLE_DREW 0x3
-#define BATTLE_RAN 0x4
-#define BATTLE_PLAYER_TELEPORTED 0x5
-#define BATTLE_POKE_FLED 0x6
-#define BATTLE_CAUGHT 0x7
-#define BATTLE_SAFARI_OUT_OF_BALLS 0x8
-#define BATTLE_FORFEITED 0x9
-#define BATTLE_OPPONENT_TELEPORTED 0xA
-
-#define OUTCOME_LINK_BATTLE_RUN 0x80
-
-#define STATUS_NONE 0x0
-#define STATUS_SLEEP 0x7
-#define STATUS_POISON 0x8
-#define STATUS_BURN 0x10
-#define STATUS_FREEZE 0x20
-#define STATUS_PARALYSIS 0x40
-#define STATUS_TOXIC_POISON 0x80
-#define STATUS_TOXIC_COUNTER 0xF00
-
-#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON))
-#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
-
-#define STATUS2_CONFUSION 0x00000007
-#define STATUS2_FLINCHED 0x00000008
-#define STATUS2_UPROAR 0x00000070
-#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200
-#define STATUS2_LOCK_CONFUSE 0x00000C00
-#define STATUS2_MULTIPLETURNS 0x00001000
-#define STATUS2_WRAPPED 0x0000E000
-#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every bank
-#define STATUS2_INFATUATED_WITH(bank)((gBitTable[bank] << 16))
-#define STATUS2_FOCUS_ENERGY 0x00100000
-#define STATUS2_TRANSFORMED 0x00200000
-#define STATUS2_RECHARGE 0x00400000
-#define STATUS2_RAGE 0x00800000
-#define STATUS2_SUBSTITUTE 0x01000000
-#define STATUS2_DESTINY_BOND 0x02000000
-#define STATUS2_ESCAPE_PREVENTION 0x04000000
-#define STATUS2_NIGHTMARE 0x08000000
-#define STATUS2_CURSED 0x10000000
-#define STATUS2_FORESIGHT 0x20000000
-#define STATUS2_DEFENSE_CURL 0x40000000
-#define STATUS2_TORMENT 0x80000000
-
-#define STATUS3_LEECHSEED_BANK 0x3
-#define STATUS3_LEECHSEED 0x4
-#define STATUS3_ALWAYS_HITS 0x18 // two bits
-#define STATUS3_PERISH_SONG 0x20
-#define STATUS3_ON_AIR 0x40
-#define STATUS3_UNDERGROUND 0x80
-#define STATUS3_MINIMIZED 0x100
-#define STATUS3_ROOTED 0x400
-#define STATUS3_CHARGED_UP 0x200
-#define STATUS3_YAWN 0x1800 // two bits
-#define STATUS3_IMPRISONED_OTHERS 0x2000
-#define STATUS3_GRUDGE 0x4000
-#define STATUS3_CANT_SCORE_A_CRIT 0x8000
-#define STATUS3_MUDSPORT 0x10000
-#define STATUS3_WATERSPORT 0x20000
-#define STATUS3_UNDERWATER 0x40000
-#define STATUS3_INTIMIDATE_POKES 0x80000
-#define STATUS3_TRACE 0x100000
-
-#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
-
-#define HITMARKER_x10 0x00000010
-#define HITMARKER_x20 0x00000020
-#define HITMARKER_DESTINYBOND 0x00000040
-#define HITMARKER_NO_ANIMATIONS 0x00000080
-#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
-#define HITMARKER_NO_ATTACKSTRING 0x00000200
-#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
-#define HITMARKER_NO_PPDEDUCT 0x00000800
-#define HITMARKER_PURSUIT_TRAP 0x00001000
-#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
-#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
-#define HITMARKER_RUN 0x00008000
-#define HITMARKER_IGNORE_ON_AIR 0x00010000
-#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
-#define HITMARKER_IGNORE_UNDERWATER 0x00040000
-#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
-#define HITMARKER_x100000 0x00100000
-#define HITMARKER_x200000 0x00200000
-#define HITMARKER_x400000 0x00400000
-#define HITMARKER_x800000 0x00800000
-#define HITMARKER_GRUDGE 0x01000000
-#define HITMARKER_OBEYS 0x02000000
-#define HITMARKER_x4000000 0x04000000
-#define HITMARKER_x8000000 0x08000000
-#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
-#define HITMARKER_UNK(bank) ((0x10000000 << bank))
-
-#define SIDE_STATUS_REFLECT (1 << 0)
-#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
-#define SIDE_STATUS_X4 (1 << 2)
-#define SIDE_STATUS_SPIKES (1 << 4)
-#define SIDE_STATUS_SAFEGUARD (1 << 5)
-#define SIDE_STATUS_FUTUREATTACK (1 << 6)
-#define SIDE_STATUS_MIST (1 << 8)
-#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
-
-#define ACTION_USE_MOVE 0
-#define ACTION_USE_ITEM 1
-#define ACTION_SWITCH 2
-#define ACTION_RUN 3
-#define ACTION_WATCHES_CAREFULLY 4
-#define ACTION_SAFARI_ZONE_BALL 5
-#define ACTION_POKEBLOCK_CASE 6
-#define ACTION_GO_NEAR 7
-#define ACTION_SAFARI_ZONE_RUN 8
-#define ACTION_9 9
-#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action
-#define ACTION_CANCEL_PARTNER 12 // when choosing an action
-#define ACTION_FINISHED 12 // when executing an action
-#define ACTION_NOTHING_FAINTED 13 // when choosing an action
-#define ACTION_INIT_VALUE 0xFF
-
-#define MOVESTATUS_MISSED (1 << 0)
-#define MOVESTATUS_SUPEREFFECTIVE (1 << 1)
-#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2)
-#define MOVESTATUS_NOTAFFECTED (1 << 3)
-#define MOVESTATUS_ONEHITKO (1 << 4)
-#define MOVESTATUS_FAILED (1 << 5)
-#define MOVESTATUS_ENDURED (1 << 6)
-#define MOVESTATUS_HUNGON (1 << 7)
-
-#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))
+// Battle Actions
+// These determine what each battler will do in a turn
+#define B_ACTION_USE_MOVE 0
+#define B_ACTION_USE_ITEM 1
+#define B_ACTION_SWITCH 2
+#define B_ACTION_RUN 3
+#define B_ACTION_SAFARI_WATCH_CAREFULLY 4
+#define B_ACTION_SAFARI_BALL 5
+#define B_ACTION_SAFARI_POKEBLOCK 6
+#define B_ACTION_SAFARI_GO_NEAR 7
+#define B_ACTION_SAFARI_RUN 8
+// The exact purposes of these are unclear
+#define B_ACTION_UNKNOWN9 9
+#define B_ACTION_EXEC_SCRIPT 10 // when executing an action
+#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
+#define B_ACTION_FINISHED 12 // when executing an action
+#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
+#define B_ACTION_NONE 0xFF
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
-#define WEATHER_RAIN_TEMPORARY (1 << 0)
-#define WEATHER_RAIN_DOWNPOUR (1 << 1)
-#define WEATHER_RAIN_PERMANENT (1 << 2)
-#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT))
-#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
-#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
-#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT))
-#define WEATHER_SUN_TEMPORARY (1 << 5)
-#define WEATHER_SUN_PERMANENT (1 << 6)
-#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
-#define WEATHER_HAIL (1 << 7)
-#define WEATHER_HAIL_ANY ((WEATHER_HAIL))
-#define WEATHER_ANY ((WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY))
-
#define BATTLE_TERRAIN_GRASS 0
#define BATTLE_TERRAIN_LONG_GRASS 1
#define BATTLE_TERRAIN_SAND 2
@@ -271,26 +90,7 @@
#define TYPE_FORESIGHT 0xFE
#define TYPE_ENDTABLE 0xFF
-#define BS_GET_TARGET 0
-#define BS_GET_ATTACKER 1
-#define BS_GET_EFFECT_BANK 2
-#define BS_GET_gBank1 3
-#define BS_GET_BANK_0 7
-#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
-#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
-#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
-#define BS_GET_SCRIPTING_BANK 10
-#define BS_GET_OPPONENT1 12
-#define BS_GET_PLAYER2 13
-#define BS_GET_OPPONENT2 14
-
-// for battle script commands
-#define CMP_EQUAL 0x0
-#define CMP_NOT_EQUAL 0x1
-#define CMP_GREATER_THAN 0x2
-#define CMP_LESS_THAN 0x3
-#define CMP_COMMON_BITS 0x4
-#define CMP_NO_COMMON_BITS 0x5
+#define BATTLE_BUFFER_LINK_SIZE 0x1000
struct TrainerMonNoItemDefaultMoves
{
@@ -299,8 +99,6 @@ struct TrainerMonNoItemDefaultMoves
u16 species;
};
-u8 GetBankSide(u8 bank);
-
struct TrainerMonItemDefaultMoves
{
u16 iv;
@@ -382,8 +180,8 @@ struct DisableStruct
/*0x12*/ u8 chargeTimer2 : 4;
/*0x13*/ u8 tauntTimer1:4;
/*0x13*/ u8 tauntTimer2:4;
- /*0x14*/ u8 bankPreventingEscape;
- /*0x15*/ u8 bankWithSureHit;
+ /*0x14*/ u8 battlerPreventingEscape;
+ /*0x15*/ u8 battlerWithSureHit;
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
@@ -394,8 +192,6 @@ struct DisableStruct
/*0x1A*/ u8 unk1A[2];
};
-extern struct DisableStruct gDisableStructs[BATTLE_BANKS_COUNT];
-
struct ProtectStruct
{
/* field_0 */
@@ -429,13 +225,11 @@ struct ProtectStruct
/* field_4 */ u32 physicalDmg;
/* field_8 */ u32 specialDmg;
- /* field_C */ u8 physicalBank;
- /* field_D */ u8 specialBank;
+ /* field_C */ u8 physicalBattlerId;
+ /* field_D */ u8 specialBattlerId;
/* field_E */ u16 fieldE;
};
-extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT];
-
struct SpecialStatus
{
u8 statLowered : 1; // 0x1
@@ -447,49 +241,43 @@ struct SpecialStatus
u8 flag40 : 1;
u8 focusBanded : 1;
u8 field1[3];
- s32 moveturnLostHP;
- s32 moveturnLostHP_physical;
- s32 moveturnLostHP_special;
- u8 moveturnPhysicalBank;
- u8 moveturnSpecialBank;
+ s32 dmg;
+ s32 physicalDmg;
+ s32 specialDmg;
+ u8 physicalBattlerId;
+ u8 specialBattlerId;
u8 field12;
u8 field13;
};
-extern struct SpecialStatus gSpecialStatuses[BATTLE_BANKS_COUNT];
-
struct SideTimer
{
/*0x00*/ u8 reflectTimer;
- /*0x01*/ u8 reflectBank;
+ /*0x01*/ u8 reflectBattlerId;
/*0x02*/ u8 lightscreenTimer;
- /*0x03*/ u8 lightscreenBank;
+ /*0x03*/ u8 lightscreenBattlerId;
/*0x04*/ u8 mistTimer;
- /*0x05*/ u8 mistBank;
+ /*0x05*/ u8 mistBattlerId;
/*0x06*/ u8 safeguardTimer;
- /*0x07*/ u8 safeguardBank;
+ /*0x07*/ u8 safeguardBattlerId;
/*0x08*/ u8 followmeTimer;
/*0x09*/ u8 followmeTarget;
/*0x0A*/ u8 spikesAmount;
/*0x0B*/ u8 fieldB;
};
-extern struct SideTimer gSideTimers[];
-
struct WishFutureKnock
{
- u8 futureSightCounter[BATTLE_BANKS_COUNT];
- u8 futureSightAttacker[BATTLE_BANKS_COUNT];
- s32 futureSightDmg[BATTLE_BANKS_COUNT];
- u16 futureSightMove[BATTLE_BANKS_COUNT];
- u8 wishCounter[BATTLE_BANKS_COUNT];
- u8 wishUserID[BATTLE_BANKS_COUNT];
+ u8 futureSightCounter[MAX_BATTLERS_COUNT];
+ u8 futureSightAttacker[MAX_BATTLERS_COUNT];
+ s32 futureSightDmg[MAX_BATTLERS_COUNT];
+ u16 futureSightMove[MAX_BATTLERS_COUNT];
+ u8 wishCounter[MAX_BATTLERS_COUNT];
+ u8 wishMonId[MAX_BATTLERS_COUNT];
u8 weatherDuration;
u8 knockedOffPokes[2];
};
-extern struct WishFutureKnock gWishFutureKnock;
-
struct AI_ThinkingStruct
{
u8 aiState;
@@ -506,16 +294,16 @@ struct AI_ThinkingStruct
struct UsedMoves
{
- u16 moves[BATTLE_BANKS_COUNT];
- u16 unknown[BATTLE_BANKS_COUNT];
+ u16 moves[MAX_BATTLERS_COUNT];
+ u16 unknown[MAX_BATTLERS_COUNT];
};
struct BattleHistory
{
- struct UsedMoves usedMoves[BATTLE_BANKS_COUNT];
- u8 abilities[BATTLE_BANKS_COUNT];
- u8 itemEffects[BATTLE_BANKS_COUNT];
- u16 trainerItems[BATTLE_BANKS_COUNT];
+ struct UsedMoves usedMoves[MAX_BATTLERS_COUNT];
+ u8 abilities[MAX_BATTLERS_COUNT];
+ u8 itemEffects[MAX_BATTLERS_COUNT];
+ u16 trainerItems[MAX_BATTLERS_COUNT];
u8 itemsNo;
};
@@ -553,12 +341,6 @@ struct BattleResources
struct BattleScriptsStack *AI_ScriptsStack;
};
-extern struct BattleResources* gBattleResources;
-
-#define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack)
-#define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack)
-#define BATTLE_LVLUP_STATS (gBattleResources->statsBeforeLvlUp)
-
struct BattleResults
{
u8 playerFaintCounter; // 0x0
@@ -582,21 +364,19 @@ struct BattleResults
u16 playerMon2Species; // 0x26
u16 caughtMonSpecies; // 0x28
u8 caughtMonNick[10]; // 0x2A
- u8 filler34[2];
+ u8 filler34[2]; // 0x34
u8 catchAttempts[11]; // 0x36
};
-extern struct BattleResults gBattleResults;
-
struct BattleStruct
{
u8 turnEffectsTracker;
- u8 turnEffectsBank;
+ u8 turnEffectsBattlerId;
u8 filler2;
- u8 turncountersTracker;
+ u8 turnCountersTracker;
u8 wrappedMove[8]; // ask gamefreak why they declared it that way
u8 moveTarget[4];
- u8 expGetterId;
+ u8 expGetterMonId;
u8 field_11;
u8 wildVictorySong;
u8 dynamicMoveType;
@@ -610,20 +390,20 @@ struct BattleStruct
u8 field_45;
u8 field_46;
u8 field_47;
- u8 focusPunchBank;
+ u8 focusPunchBattlerId;
u8 field_49;
u8 moneyMultiplier;
u8 savedTurnActionNumber;
u8 switchInAbilitiesCounter;
u8 faintedActionsState;
- u8 faintedActionsBank;
+ u8 faintedActionsBattlerId;
u8 field_4F;
u16 expValue;
u8 field_52;
u8 sentInPokes;
- bool8 selectionScriptFinished[BATTLE_BANKS_COUNT];
+ bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
u8 field_58[4];
- u8 monToSwitchIntoId[BATTLE_BANKS_COUNT];
+ u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];
u8 field_60[4][3];
u8 runTries;
u8 caughtMonNick[11];
@@ -635,8 +415,8 @@ struct BattleStruct
u8 field_7D;
u8 field_7E;
u8 formToChangeInto;
- u8 chosenMovePositions[BATTLE_BANKS_COUNT];
- u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT];
+ u8 chosenMovePositions[MAX_BATTLERS_COUNT];
+ u8 stateIdAfterSelScript[MAX_BATTLERS_COUNT];
u8 field_88;
u8 field_89;
u8 field_8A;
@@ -644,7 +424,7 @@ struct BattleStruct
u8 field_8C;
u8 field_8D;
u8 stringMoveType;
- u8 expGetterBank;
+ u8 expGetterBattlerId;
u8 field_90;
u8 field_91;
u8 field_92;
@@ -669,12 +449,12 @@ struct BattleStruct
u8 synchronizeMoveEffect;
u8 field_B3;
void (*savedCallback)(void);
- u16 usedHeldItems[BATTLE_BANKS_COUNT];
+ u16 usedHeldItems[MAX_BATTLERS_COUNT];
u8 chosenItem[4]; // why is this an u8?
u8 AI_itemType[2];
u8 AI_itemFlags[2];
- u16 choicedMove[BATTLE_BANKS_COUNT];
- u16 changedItems[BATTLE_BANKS_COUNT];
+ u16 choicedMove[MAX_BATTLERS_COUNT];
+ u16 changedItems[MAX_BATTLERS_COUNT];
u8 intimidateBank;
u8 switchInItemsCounter;
u8 field_DA;
@@ -682,28 +462,26 @@ struct BattleStruct
u8 fillerDC[0xDF-0xDC];
u8 field_DF;
u8 mirrorMoveArrays[32];
- u16 castformPalette[BATTLE_BANKS_COUNT][16];
+ u16 castformPalette[MAX_BATTLERS_COUNT][16];
u8 field_180;
u8 field_181;
u8 field_182;
u8 field_183;
struct BattleEnigmaBerry battleEnigmaBerry;
u8 wishPerishSongState;
- u8 wishPerishSongBank;
+ u8 wishPerishSongBattlerId;
bool8 overworldWeatherDone;
u8 atkCancellerTracker;
u8 field_1A4[96];
u8 field_204[104];
u8 field_26C[40];
- u8 AI_monToSwitchIntoId[BATTLE_BANKS_COUNT];
+ u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT];
u8 field_298[8];
u8 field_2A0;
u8 field_2A1;
u8 field_2A2;
};
-extern struct BattleStruct* gBattleStruct;
-
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
@@ -712,71 +490,8 @@ extern struct BattleStruct* gBattleStruct;
typeArg = gBattleMoves[move].type; \
}
-#define MOVE_EFFECT_SLEEP 0x1
-#define MOVE_EFFECT_POISON 0x2
-#define MOVE_EFFECT_BURN 0x3
-#define MOVE_EFFECT_FREEZE 0x4
-#define MOVE_EFFECT_PARALYSIS 0x5
-#define MOVE_EFFECT_TOXIC 0x6
-#define MOVE_EFFECT_CONFUSION 0x7
-#define MOVE_EFFECT_FLINCH 0x8
-#define MOVE_EFFECT_TRI_ATTACK 0x9
-#define MOVE_EFFECT_UPROAR 0xA
-#define MOVE_EFFECT_PAYDAY 0xB
-#define MOVE_EFFECT_CHARGING 0xC
-#define MOVE_EFFECT_WRAP 0xD
-#define MOVE_EFFECT_RECOIL_25 0xE
-#define MOVE_EFFECT_ATK_PLUS_1 0xF
-#define MOVE_EFFECT_DEF_PLUS_1 0x10
-#define MOVE_EFFECT_SPD_PLUS_1 0x11
-#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
-#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
-#define MOVE_EFFECT_ACC_PLUS_1 0x14
-#define MOVE_EFFECT_EVS_PLUS_1 0x15
-#define MOVE_EFFECT_ATK_MINUS_1 0x16
-#define MOVE_EFFECT_DEF_MINUS_1 0x17
-#define MOVE_EFFECT_SPD_MINUS_1 0x18
-#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
-#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
-#define MOVE_EFFECT_ACC_MINUS_1 0x1B
-#define MOVE_EFFECT_EVS_MINUS_1 0x1C
-#define MOVE_EFFECT_RECHARGE 0x1D
-#define MOVE_EFFECT_RAGE 0x1E
-#define MOVE_EFFECT_STEAL_ITEM 0x1F
-#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
-#define MOVE_EFFECT_NIGHTMARE 0x21
-#define MOVE_EFFECT_ALL_STATS_UP 0x22
-#define MOVE_EFFECT_RAPIDSPIN 0x23
-#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
-#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
-#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
-#define MOVE_EFFECT_ATK_PLUS_2 0x27
-#define MOVE_EFFECT_DEF_PLUS_2 0x28
-#define MOVE_EFFECT_SPD_PLUS_2 0x29
-#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
-#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
-#define MOVE_EFFECT_ACC_PLUS_2 0x2C
-#define MOVE_EFFECT_EVS_PLUS_2 0x2D
-#define MOVE_EFFECT_ATK_MINUS_2 0x2E
-#define MOVE_EFFECT_DEF_MINUS_2 0x2F
-#define MOVE_EFFECT_SPD_MINUS_2 0x30
-#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
-#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
-#define MOVE_EFFECT_ACC_MINUS_2 0x33
-#define MOVE_EFFECT_EVS_MINUS_2 0x34
-#define MOVE_EFFECT_THRASH 0x35
-#define MOVE_EFFECT_KNOCK_OFF 0x36
-#define MOVE_EFFECT_NOTHING_37 0x37
-#define MOVE_EFFECT_NOTHING_38 0x38
-#define MOVE_EFFECT_NOTHING_39 0x39
-#define MOVE_EFFECT_NOTHING_3A 0x3A
-#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
-#define MOVE_EFFECT_NOTHING_3C 0x3C
-#define MOVE_EFFECT_NOTHING_3D 0x3D
-#define MOVE_EFFECT_NOTHING_3E 0x3E
-#define MOVE_EFFECT_NOTHING_3F 0x3F
-#define MOVE_EFFECT_AFFECTS_USER 0x40
-#define MOVE_EFFECT_CERTAIN 0x80
+#define IS_MOVE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
+#define IS_MOVE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
@@ -797,9 +512,9 @@ struct BattleScripting
u8 animArg2;
u16 tripleKickPower;
u8 atk49_state;
- u8 bankWithAbility;
+ u8 battlerWithAbility;
u8 multihitMoveEffect;
- u8 bank;
+ u8 battler;
u8 animTurn;
u8 animTargetsHit;
u8 statChanger;
@@ -816,8 +531,6 @@ struct BattleScripting
u8 multiplayerId;
};
-extern struct BattleScripting gBattleScripting;
-
enum
{
BACK_PIC_BRENDAN,
@@ -831,9 +544,9 @@ enum
};
// rom_80A5C6C
-u8 GetBankSide(u8 bank);
-u8 GetBankIdentity(u8 bank);
-u8 GetBankByIdentity(u8 bank);
+u8 GetBattlerSide(u8 battler);
+u8 GetBattlerPosition(u8 bank);
+u8 GetBattlerAtPosition(u8 bank);
struct BattleSpriteInfo
{
@@ -907,24 +620,12 @@ struct BattleBarInfo
struct BattleSpriteData
{
- struct BattleSpriteInfo *bankData;
+ struct BattleSpriteInfo *battlerData;
struct BattleHealthboxInfo *healthBoxesData;
struct BattleAnimationInfo *animationData;
struct BattleBarInfo *battleBars;
};
-extern struct BattleSpriteData *gBattleSpritesDataPtr;
-
-#define BATTLE_BUFFER_LINK_SIZE 0x1000
-
-extern u8 *gLinkBattleSendBuffer;
-extern u8 *gLinkBattleRecvBuffer;
-
-extern u8 *gUnknown_0202305C;
-extern u8 *gUnknown_02023060;
-
-// Move this somewhere else
-
#include "sprite.h"
struct MonSpritesGfx
@@ -939,11 +640,106 @@ struct MonSpritesGfx
void *field_17C;
};
-extern struct BattleSpritesGfx* gMonSpritesGfx;
-extern u8 gBattleOutcome;
-extern u16 gLastUsedItem;
+// all battle variables are declared in battle_main.c
extern u32 gBattleTypeFlags;
-extern struct MonSpritesGfx* gMonSpritesGfxPtr;
-extern u16 gTrainerBattleOpponent_A;
+extern u8 gBattleTerrain;
+extern u32 gUnknown_02022FF4;
+extern u8 *gUnknown_0202305C;
+extern u8 *gUnknown_02023060;
+extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
+extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
+extern u8 gActiveBattler;
+extern u32 gBattleControllerExecFlags;
+extern u8 gBattlersCount;
+extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
+extern u8 gBattlerPositions[MAX_BATTLERS_COUNT];
+extern u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT];
+extern u8 gBattleTurnOrder[MAX_BATTLERS_COUNT];
+extern u8 gCurrentTurnActionNumber;
+extern u8 gCurrentActionFuncId;
+extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
+extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
+extern u8 gCurrMovePos;
+extern u8 gChosenMovePos;
+extern u16 gCurrentMove;
+extern u16 gChosenMove;
+extern u16 gRandomMove;
+extern s32 gBattleMoveDamage;
+extern s32 gHpDealt;
+extern s32 gTakenDmg[MAX_BATTLERS_COUNT];
+extern u16 gLastUsedItem;
+extern u8 gLastUsedAbility;
+extern u8 gBattlerAttacker;
+extern u8 gBattlerTarget;
+extern u8 gBattlerFainted;
+extern u8 gEffectBattler;
+extern u8 gPotentialItemEffectBattler;
+extern u8 gAbsentBattlerFlags;
+extern u8 gCritMultiplier;
+extern u8 gMultiHitCounter;
+extern const u8 *gBattlescriptCurrInstr;
+extern u32 gUnusedBattleMainVar;
+extern u8 gChosenActionByBattler[MAX_BATTLERS_COUNT];
+extern const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT];
+extern const u8 *gPalaceSelectionBattleScripts[MAX_BATTLERS_COUNT];
+extern u16 gLastPrintedMoves[MAX_BATTLERS_COUNT];
+extern u16 gLastMoves[MAX_BATTLERS_COUNT];
+extern u16 gLastLandedMoves[MAX_BATTLERS_COUNT];
+extern u16 gLastHitByType[MAX_BATTLERS_COUNT];
+extern u16 gLastResultingMoves[MAX_BATTLERS_COUNT];
+extern u16 gLockedMoves[MAX_BATTLERS_COUNT];
+extern u8 gLastHitBy[MAX_BATTLERS_COUNT];
+extern u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT];
+extern u8 gMoveResultFlags;
+extern u32 gHitMarker;
+extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT];
+extern u8 gUnknown_0202428C;
+extern u16 gSideStatuses[2];
+extern struct SideTimer gSideTimers[2];
+extern u32 gStatuses3[MAX_BATTLERS_COUNT];
+extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT];
+extern u16 gPauseCounterBattle;
+extern u16 gPaydayMoney;
+extern u16 gRandomTurnNumber;
+extern u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT];
+extern u8 gBattleOutcome;
+extern struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT];
+extern struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT];
+extern u16 gBattleWeather;
+extern struct WishFutureKnock gWishFutureKnock;
+extern u16 gIntroSlideFlags;
+extern u8 gSentPokesToOpponent[2];
+extern u16 gDynamicBasePower;
+extern u16 gExpShareExp;
+extern struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT];
+extern struct BattleScripting gBattleScripting;
+extern struct BattleStruct *gBattleStruct;
+extern u8 *gLinkBattleSendBuffer;
+extern u8 *gLinkBattleRecvBuffer;
+extern struct BattleResources *gBattleResources;
+extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT];
+extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT];
+extern u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT];
+extern u8 gBattlerInMenuId;
+extern bool8 gDoingBattleAnim;
+extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
+extern u8 gPlayerDpadHoldFrames;
+extern struct BattleSpriteData *gBattleSpritesDataPtr;
+extern struct MonSpritesGfx *gMonSpritesGfxPtr;
+extern struct BattleHealthboxInfo *gUnknown_020244D8;
+extern struct BattleHealthboxInfo *gUnknown_020244DC;
+extern u16 gBattleMovePower;
+extern u16 gMoveToLearn;
+extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
+
+extern void (*gPreBattleCallback1)(void);
+extern void (*gBattleMainFunc)(void);
+extern struct BattleResults gBattleResults;
+extern u8 gLeveledUpInBattle;
+extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
+extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
+extern u8 gMultiUsePlayerCursor;
+extern u8 gNumberOfMovesToChoose;
+extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
#endif // GUARD_BATTLE_H
diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h
index 5fb422b41..316f76de6 100644
--- a/include/battle_ai_script_commands.h
+++ b/include/battle_ai_script_commands.h
@@ -4,9 +4,9 @@
void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);
void BattleAI_SetupAIData(u8 defaultScoreMoves);
u8 BattleAI_ChooseMoveOrAction(void);
-void ClearBankMoveHistory(u8 bank);
+void ClearBattlerMoveHistory(u8 bank);
void RecordAbilityBattle(u8 bank, u8 abilityId);
-void ClearBankAbilityHistory(u8 bank);
+void ClearBattlerAbilityHistory(u8 bank);
void RecordItemEffectBattle(u8 bank, u8 itemEffect);
void ClearBankItemEffectHistory(u8 bank);
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 4046f7051..aa62db46d 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -45,9 +45,9 @@ extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
extern u8 gAnimMoveTurn;
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
-extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
+extern u8 gBattleAnimAttacker;
+extern u8 gBattleAnimTarget;
+extern u16 gAnimSpeciesByBanks[MAX_BATTLERS_COUNT];
extern u8 gUnknown_02038440;
void ClearBattleAnimationVars(void);
@@ -56,8 +56,8 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
void DestroyAnimSprite(struct Sprite *sprite);
void DestroyAnimVisualTask(u8 taskId);
void DestroyAnimSoundTask(u8 taskId);
-bool8 IsAnimBankSpriteVisible(u8 bank);
-void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible);
+bool8 IsBattlerSpriteVisible(u8 battlerId);
+void sub_80A438C(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible);
bool8 IsContest(void);
s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
@@ -76,7 +76,7 @@ void sub_80A6F3C(struct Sprite *sprite);
void sub_80A8278(void);
void sub_80A6B30(struct UnknownAnimStruct2*);
void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1);
-u8 sub_80A82E4(u8 bank);
+u8 sub_80A82E4(u8 battlerId);
bool8 AnimateBallThrow(struct Sprite *sprite);
enum
@@ -85,26 +85,26 @@ enum
BANK_Y_POS,
};
-u8 GetBankPosition(u8 bank, u8 attributeId);
+u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
-bool8 IsBankSpritePresent(u8 bank);
+bool8 IsBattlerSpritePresent(u8 battlerId);
void sub_80A6C68(u8 arg0);
-u8 GetAnimBankSpriteId(u8 wantedBank);
+u8 GetAnimBattlerSpriteId(u8 wantedBattler);
bool8 IsDoubleBattle(void);
u8 sub_80A6D94(void);
u8 sub_80A8364(u8);
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
-u8 GetBankSpriteDefault_Y(u8 bank);
-u8 sub_80A82E4(u8 bank);
-u8 GetSubstituteSpriteDefault_Y(u8 bank);
+u8 GetBattlerSpriteDefault_Y(u8 battlerId);
+u8 sub_80A82E4(u8 battlerId);
+u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
// battle_anim_80A9C70.s
-void LaunchStatusAnimation(u8 bank, u8 statusAnimId);
+void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
// battle_anim_8170478.s
u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
-u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId);
+u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index c69cb1017..a0fc41b52 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -181,62 +181,62 @@ void sub_8033648(void);
void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
// emitters
-void EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck);
-void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused
-void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data);
-void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
-void EmitLoadMonSprite(u8 bufferId);
-void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
-void EmitReturnMonToBall(u8 bufferId, u8 arg1);
-void EmitDrawTrainerPic(u8 bufferId);
-void EmitTrainerSlide(u8 bufferId);
-void EmitTrainerSlideBack(u8 bufferId);
-void EmitFaintAnimation(u8 bufferId);
-void EmitPaletteFade(u8 bufferId); // unused
-void EmitSuccessBallThrowAnim(u8 bufferId); // unused
-void EmitBallThrowAnim(u8 bufferId, u8 caseId);
-void EmitPause(u8 bufferId, u8 toWait, void *data); // unused
-void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
-void EmitPrintString(u8 bufferId, u16 stringId);
-void EmitPrintSelectionString(u8 bufferId, u16 stringId);
-void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
-void EmitUnknownYesNoBox(u8 bufferId);
-void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
-void EmitChooseItem(u8 bufferId, u8* arg1);
-void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
-void EmitCmd23(u8 bufferId); // unused
-void EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
-void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
-void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2);
-void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
-void EmitStatusXor(u8 bufferId, u8 b); // unused
-void EmitDataTransfer(u8 bufferId, u16 size, void *data);
-void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
-void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
-void EmitCmd32(u8 bufferId, u16 size, void *c); // unused
-void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
-void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
-void EmitOneReturnValue(u8 bufferId, u16 arg1);
-void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
-void EmitCmd37(u8 bufferId); // unused
-void EmitCmd38(u8 bufferId, u8 b); // unused
-void EmitCmd39(u8 bufferId); // unused
-void EmitCmd40(u8 bufferId); // unused
-void EmitHitAnimation(u8 bufferId);
-void EmitCmd42(u8 bufferId);
-void EmitPlaySE(u8 bufferId, u16 songId);
-void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
-void EmitFaintingCry(u8 bufferId);
-void EmitIntroSlide(u8 bufferId, u8 terrainId);
-void EmitIntroTrainerBallThrow(u8 bufferId);
-void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
-void EmitCmd49(u8 bufferId);
-void EmitCmd50(u8 bufferId);
-void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
-void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
-void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2);
-void EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
-void EmitCmd55(u8 bufferId, u8 arg1);
+void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck);
+void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused
+void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data);
+void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
+void BtlController_EmitLoadMonSprite(u8 bufferId);
+void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
+void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1);
+void BtlController_EmitDrawTrainerPic(u8 bufferId);
+void BtlController_EmitTrainerSlide(u8 bufferId);
+void BtlController_EmitTrainerSlideBack(u8 bufferId);
+void BtlController_EmitFaintAnimation(u8 bufferId);
+void BtlController_EmitPaletteFade(u8 bufferId); // unused
+void BtlController_EmitSuccessBallThrowAnim(u8 bufferId); // unused
+void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId);
+void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data); // unused
+void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
+void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
+void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
+void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
+void BtlController_EmitUnknownYesNoBox(u8 bufferId);
+void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
+void BtlController_EmitChooseItem(u8 bufferId, u8* arg1);
+void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
+void BtlController_EmitCmd23(u8 bufferId); // unused
+void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
+void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
+void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2);
+void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
+void BtlController_EmitStatusXor(u8 bufferId, u8 b); // unused
+void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data);
+void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
+void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
+void BtlController_EmitCmd32(u8 bufferId, u16 size, void *c); // unused
+void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
+void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
+void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1);
+void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b);
+void BtlController_EmitCmd37(u8 bufferId); // unused
+void BtlController_EmitCmd38(u8 bufferId, u8 b); // unused
+void BtlController_EmitCmd39(u8 bufferId); // unused
+void BtlController_EmitCmd40(u8 bufferId); // unused
+void BtlController_EmitHitAnimation(u8 bufferId);
+void BtlController_EmitCmd42(u8 bufferId);
+void BtlController_EmitPlaySE(u8 bufferId, u16 songId);
+void BtlController_EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
+void BtlController_EmitFaintingCry(u8 bufferId);
+void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
+void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
+void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
+void BtlController_EmitCmd49(u8 bufferId);
+void BtlController_EmitCmd50(u8 bufferId);
+void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
+void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
+void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2);
+void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
+void BtlController_EmitCmd55(u8 bufferId, u8 arg1);
// player controller
void SetControllerToPlayer(void);
diff --git a/include/battle_frontier_1.h b/include/battle_frontier_1.h
new file mode 100644
index 000000000..5483b28ef
--- /dev/null
+++ b/include/battle_frontier_1.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_BATTLE_FRONTIER_1_H
+#define GUARD_BATTLE_FRONTIER_1_H
+
+bool32 sub_8196094(void);
+void sub_8196080(const u8 *str);
+
+#endif // GUARD_BATTLE_FRONTIER_1_H
diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
index 313a29811..e1c6325b6 100644
--- a/include/battle_gfx_sfx_util.h
+++ b/include/battle_gfx_sfx_util.h
@@ -8,41 +8,41 @@ void sub_805D714(struct Sprite *sprite);
void sub_805D770(struct Sprite *sprite, bool8 arg1);
void sub_805D7AC(struct Sprite *sprite);
void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status);
-bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument);
-void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId);
+bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId, u16 argument);
+void InitAndLaunchSpecialAnimation(u8 activeBattlerId, u8 attacker, u8 target, u8 tableId);
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
-bool8 mplay_80342A4(u8 bank);
-void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
-void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
+bool8 mplay_80342A4(u8 battlerId);
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId);
void nullsub_23(void);
void nullsub_24(u16 species);
-void DecompressTrainerFrontPic(u16 frontPicId, u8 bank);
-void DecompressTrainerBackPic(u16 backPicId, u8 bank);
+void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
+void DecompressTrainerBackPic(u16 backPicId, u8 battlerId);
void nullsub_25(u8 arg0);
void FreeTrainerFrontPicPalette(u16 frontPicId);
void sub_805DFFC(void);
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
void LoadBattleBarGfx(u8 arg0);
-bool8 BattleInitAllSprites(u8 *state1, u8 *bank);
+bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId);
void ClearSpritesHealthboxAnimData(void);
void CopyAllBattleSpritesInvisibilities(void);
-void CopyBattleSpriteInvisibility(u8 bank);
-void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform);
-void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite);
-void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId);
-void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move);
-void ClearBehindSubstituteBit(u8 bank);
-void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank);
+void CopyBattleSpriteInvisibility(u8 battlerId);
+void HandleSpeciesGfxDataChange(u8 attacker, u8 target, bool8 notTransform);
+void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite);
+void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId);
+void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move);
+void ClearBehindSubstituteBit(u8 battlerId);
+void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId);
void BattleStopLowHpSound(void);
u8 GetMonHPBarLevel(struct Pokemon *mon);
void sub_805EAE8(void);
void sub_805EB9C(u8 affineMode);
void LoadAndCreateEnemyShadowSprites(void);
void SpriteCB_SetInvisible(struct Sprite *sprite);
-void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species);
-void EnemyShadowCallbackToSetInvisible(u8 bank);
+void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species);
+void HideBattlerShadowSprite(u8 battlerId);
void sub_805EF14(void);
-void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute);
+void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute);
void AllocateMonSpritesGfx(void);
void FreeMonSpritesGfx(void);
bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon);
diff --git a/include/battle_interface.h b/include/battle_interface.h
index b2d3b1b97..fe8c03f70 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -54,7 +54,7 @@ enum
HEALTHBOX_SAFARI_BALLS_TEXT
};
-u8 CreateBankHealthboxSprites(u8 bank);
+u8 CreateBattlerHealthboxSprites(u8 bank);
u8 CreateSafariPlayerHealthboxSprites(void);
void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 receivedValue);
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId);
@@ -62,7 +62,7 @@ void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
void DestoryHealthboxSprite(u8 healthboxSpriteId);
void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
void UpdateOamPriorityInAllHealthboxes(u8 priority);
-void SetBankHealthboxSpritePos(u8 bank);
+void InitBattlerHealthboxCoords(u8 bank);
void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
void SwapHpBarsWithHpText(void);
u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart);
diff --git a/include/battle_link_817C95C.h b/include/battle_link_817C95C.h
index 815c1f058..cb2cb0b27 100644
--- a/include/battle_link_817C95C.h
+++ b/include/battle_link_817C95C.h
@@ -6,6 +6,6 @@ void sub_817E0FC(u16 move, u16 weatherFlags, struct DisableStruct *disableStruct
void sub_817E32C(u8 animationId);
void sub_817E3F4(void);
void sub_817F2A8(void);
-u8 GetBankMoveSlotId(u8 bank, u16 move);
+u8 GetBattlerMoveSlotId(u8 bank, u16 move);
#endif // GUARD_BATTLE_LINK_817C95C_H
diff --git a/include/battle_2.h b/include/battle_main.h
index ee61efd9b..d7a522f17 100644
--- a/include/battle_2.h
+++ b/include/battle_main.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_BATTLE_2_H
-#define GUARD_BATTLE_2_H
+#ifndef GUARD_BATTLE_MAIN_H
+#define GUARD_BATTLE_MAIN_H
void CB2_InitBattle(void);
void BattleMainCB2(void);
@@ -21,8 +21,8 @@ void sub_8039B58(struct Sprite *sprite);
void sub_8039BB4(struct Sprite *sprite);
void sub_80105DC(struct Sprite *sprite);
void sub_8039C00(struct Sprite *sprite);
-void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d);
-void dp11b_obj_free(u8 bank, bool8 b);
+void dp11b_obj_instanciate(u8 battlerId, u8 b, s8 c, s8 d);
+void dp11b_obj_free(u8 battlerId, bool8 b);
void sub_8039E44(struct Sprite *sprite);
void sub_8039E60(struct Sprite *sprite);
void sub_8039E84(struct Sprite *sprite);
@@ -35,12 +35,12 @@ void sub_803B3AC(void); // unused
void sub_803B598(void); // unused
void BattleTurnPassed(void);
u8 IsRunningFromBattleImpossible(void);
-void sub_803BDA0(u8 bank);
+void sub_803BDA0(u8 battlerId);
void SwapTurnOrder(u8 id1, u8 id2);
-u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves);
+u8 GetWhoStrikesFirst(u8 battlerId1, u8 battlerId2, bool8 ignoreChosenMoves);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
-bool8 TryRunFromBattle(u8 bank);
+bool8 TryRunFromBattle(u8 battlerId);
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
@@ -52,4 +52,4 @@ extern const u8 gStatusConditionString_LoveJpn[8];
extern const u8 * const gStatusConditionStringsTable[7][2];
-#endif // GUARD_BATTLE_2_H
+#endif // GUARD_BATTLE_MAIN_H
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index 80fabaa64..6c84d1f0f 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -1,58 +1,13 @@
#ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H
#define GUARD_BATTLE_SCRIPT_COMMANDS_H
-#define NO_ACC_CALC 0xFFFE
-#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
-#define ACC_CURR_MOVE 0
-
-#define CMP_EQUAL 0x0
-#define CMP_NOT_EQUAL 0x1
-#define CMP_GREATER_THAN 0x2
-#define CMP_LESS_THAN 0x3
-#define CMP_COMMON_BITS 0x4
-#define CMP_NO_COMMON_BITS 0x5
-
-#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
-#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
-#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
-
-#define ATK48_STAT_NEGATIVE 0x1
-#define ATK48_STAT_BY_TWO 0x2
-#define ATK48_BIT_x4 0x4
-#define ATK48_LOWER_FAIL_CHECK 0x8
-
-#define ATK4F_DONT_CHECK_STATUSES 0x80
-
-#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
-#define VARIOUS_SET_MAGIC_COAT_TARGET 1
-#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
-#define VARIOUS_GET_MOVE_TARGET 3
-#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
-#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
-#define VARIOUS_EMIT_YESNOBOX 13
-#define VARIOUS_WAIT_CRY 18
-#define VARIOUS_RETURN_OPPONENT_MON1 19
-#define VARIOUS_RETURN_OPPONENT_MON2 20
-#define VARIOUS_SET_TELEPORT_OUTCOME 25
-#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
-
-#define ATK80_DMG_CHANGE_SIGN 0
-#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
-#define ATK80_DMG_DOUBLED 2
-
-#define STAT_CHANGE_BS_PTR 0x1
-#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
-
-#define STAT_CHANGE_WORKED 0
-#define STAT_CHANGE_DIDNT_WORK 1
-
#define WINDOW_CLEAR 0x1
#define WINDOW_x80 0x80
void AI_CalcDmg(u8 bankAtk, u8 bankDef);
u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
-u8 BankGetTurnOrder(u8 bank);
+u8 GetBattlerTurnOrderNum(u8 bank);
void SetMoveEffect(bool8 primary, u8 certain);
void BattleDestroyYesNoCursorAt(u8 cursorPosition);
void BattleCreateYesNoCursorAt(u8 cursorPosition);
diff --git a/include/battle_scripts.h b/include/battle_scripts.h
index 2e31a37c5..ffd999660 100644
--- a/include/battle_scripts.h
+++ b/include/battle_scripts.h
@@ -82,7 +82,7 @@ extern const u8 BattleScript_SpikesOnAttacker[];
extern const u8 BattleScript_82DAE7A[];
extern const u8 BattleScript_SpikesOnTarget[];
extern const u8 BattleScript_82DAEB1[];
-extern const u8 BattleScript_SpikesOngBank1[];
+extern const u8 BattleScript_SpikesOnFaintedBattler[];
extern const u8 BattleScript_82DAEE8[];
extern const u8 BattleScript_82DAEFE[];
extern const u8 BattleScript_PerishSongTakesLife[];
diff --git a/include/battle_util.h b/include/battle_util.h
index 81eb85dc7..d992faa47 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -44,12 +44,12 @@
#define BS_GET_PLAYER2 13
#define BS_GET_OPPONENT2 14
-u8 GetBattleBank(u8 caseId);
+u8 GetBattlerForBattleScript(u8 caseId);
void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move);
void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
void PressurePPLoseOnUsingImprision(u8 bankAtk);
-void MarkAllBufferBanksForExecution(void); // unused
-void MarkBufferBankForExecution(u8 bank);
+void MarkAllBattlersForControllerExec(void); // unused
+void MarkBattlerForControllerExec(u8 bank);
void sub_803F850(u8 arg0);
void CancelMultiTurnMoves(u8 bank);
bool8 WasUnableToUseMove(u8 bank);
diff --git a/include/berry_fix_program.h b/include/berry_fix_program.h
new file mode 100644
index 000000000..6c31a0c8b
--- /dev/null
+++ b/include/berry_fix_program.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_FIX_PROGRAM_H
+#define GUARD_BERRY_FIX_PROGRAM_H
+
+void CB2_InitBerryFixProgram(void);
+
+#endif // GUARD_BERRY_FIX_PROGRAM_H
diff --git a/include/berry_tag_screen.h b/include/berry_tag_screen.h
new file mode 100644
index 000000000..26664bea6
--- /dev/null
+++ b/include/berry_tag_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_TAG_SCREEN_H
+#define GUARD_BERRY_TAG_SCREEN_H
+
+void DoBerryTagScreen(void);
+
+#endif // GUARD_BERRY_TAG_SCREEN_H
diff --git a/include/clear_save_data_menu.h b/include/clear_save_data_menu.h
new file mode 100644
index 000000000..86ba99849
--- /dev/null
+++ b/include/clear_save_data_menu.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CLEAR_SAVE_DATA_MENU_H
+#define GUARD_CLEAR_SAVE_DATA_MENU_H
+
+void CB2_InitClearSaveDataScreen(void);
+
+#endif // GUARD_CLEAR_SAVE_DATA_MENU_H
diff --git a/include/constants/battle.h b/include/constants/battle.h
new file mode 100644
index 000000000..f3d7a8e0e
--- /dev/null
+++ b/include/constants/battle.h
@@ -0,0 +1,284 @@
+#ifndef GUARD_CONSTANTS_BATTLE_H
+#define GUARD_CONSTANTS_BATTLE_H
+
+/*
+ * A battler may be in one of four positions on the field. The first bit determines
+ * what side the battler is on, either the player's side or the opponent's side.
+ * The second bit determines what flank the battler is on, either the left or right.
+ * Note that the opponent's flanks are drawn corresponding to their perspective, so
+ * their right mon appears on the left, and their left mon appears on the right.
+ * The battler ID is usually the same as the position, except in the case of link battles.
+ *
+ * + ------------------------- +
+ * | Opponent's side |
+ * | Right Left |
+ * | 3 1 |
+ * | |
+ * | Player's side |
+ * | Left Right |
+ * | 0 2 |
+ * ----------------------------+
+ * | |
+ * | |
+ * +---------------------------+
+ */
+
+#define MAX_BATTLERS_COUNT 4
+
+#define B_POSITION_PLAYER_LEFT 0
+#define B_POSITION_OPPONENT_LEFT 1
+#define B_POSITION_PLAYER_RIGHT 2
+#define B_POSITION_OPPONENT_RIGHT 3
+
+// These macros can be used with either battler ID or positions to get the partner or the opposite mon
+#define BATTLE_OPPOSITE(id) ((id) ^ 1)
+#define BATTLE_PARTNER(id) ((id) ^ 2)
+
+#define B_SIDE_PLAYER 0
+#define B_SIDE_OPPONENT 1
+
+#define B_FLANK_LEFT 0
+#define B_FLANK_RIGHT 1
+
+#define BIT_SIDE 1
+#define BIT_FLANK 2
+
+// Battle Type Flags
+#define BATTLE_TYPE_DOUBLE 0x0001
+#define BATTLE_TYPE_LINK 0x0002
+#define BATTLE_TYPE_WILD 0x0004
+#define BATTLE_TYPE_TRAINER 0x0008
+#define BATTLE_TYPE_FIRST_BATTLE 0x0010
+#define BATTLE_TYPE_20 0x0020
+#define BATTLE_TYPE_MULTI 0x0040
+#define BATTLE_TYPE_SAFARI 0x0080
+#define BATTLE_TYPE_BATTLE_TOWER 0x0100
+#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
+#define BATTLE_TYPE_ROAMER 0x0400
+#define BATTLE_TYPE_EREADER_TRAINER 0x0800
+#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
+#define BATTLE_TYPE_LEGENDARY 0x2000
+#define BATTLE_TYPE_REGI 0x4000
+#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
+#define BATTLE_TYPE_DOME 0x10000
+#define BATTLE_TYPE_PALACE 0x20000
+#define BATTLE_TYPE_ARENA 0x40000
+#define BATTLE_TYPE_FACTORY 0x80000
+#define BATTLE_TYPE_PIKE 0x100000
+#define BATTLE_TYPE_PYRAMID 0x200000
+#define BATTLE_TYPE_INGAME_PARTNER 0x400000
+#define BATTLE_TYPE_x800000 0x800000
+#define BATTLE_TYPE_RECORDED 0x1000000
+#define BATTLE_TYPE_x2000000 0x2000000
+#define BATTLE_TYPE_x4000000 0x4000000
+#define BATTLE_TYPE_SECRET_BASE 0x8000000
+#define BATTLE_TYPE_GROUDON 0x10000000
+#define BATTLE_TYPE_KYOGRE 0x20000000
+#define BATTLE_TYPE_RAYQUAZA 0x40000000
+#define BATTLE_TYPE_x80000000 0x80000000
+#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
+#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
+
+// Battle Outcome defines
+#define B_OUTCOME_WON 0x1
+#define B_OUTCOME_LOST 0x2
+#define B_OUTCOME_DREW 0x3
+#define B_OUTCOME_RAN 0x4
+#define B_OUTCOME_PLAYER_TELEPORTED 0x5
+#define B_OUTCOME_MON_FLED 0x6
+#define B_OUTCOME_CAUGHT 0x7
+#define B_OUTCOME_NO_SAFARI_BALLS 0x8
+#define B_OUTCOME_FORFEITED 0x9
+#define B_OUTCOME_MON_TELEPORTED 0xA
+#define B_OUTCOME_LINK_BATTLE_RAN 0x80
+
+// Non-volatile status conditions
+// These persist remain outside of battle and after switching out
+#define STATUS1_NONE 0x0
+#define STATUS1_SLEEP 0x7
+#define STATUS1_POISON 0x8
+#define STATUS1_BURN 0x10
+#define STATUS1_FREEZE 0x20
+#define STATUS1_PARALYSIS 0x40
+#define STATUS1_TOXIC_POISON 0x80
+#define STATUS1_TOXIC_COUNTER 0xF00
+#define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON)
+#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON)
+
+// Volatile status ailments
+// These are removed after exiting the battle or switching out
+#define STATUS2_CONFUSION 0x00000007
+#define STATUS2_FLINCHED 0x00000008
+#define STATUS2_UPROAR 0x00000070
+#define STATUS2_BIDE 0x00000300 // two bits 0x100, 0x200
+#define STATUS2_LOCK_CONFUSE 0x00000C00
+#define STATUS2_MULTIPLETURNS 0x00001000
+#define STATUS2_WRAPPED 0x0000E000
+#define STATUS2_INFATUATION 0x000F0000 // 4 bits, one for every battler
+#define STATUS2_INFATUATED_WITH(battler) (gBitTable[battler] << 16)
+#define STATUS2_FOCUS_ENERGY 0x00100000
+#define STATUS2_TRANSFORMED 0x00200000
+#define STATUS2_RECHARGE 0x00400000
+#define STATUS2_RAGE 0x00800000
+#define STATUS2_SUBSTITUTE 0x01000000
+#define STATUS2_DESTINY_BOND 0x02000000
+#define STATUS2_ESCAPE_PREVENTION 0x04000000
+#define STATUS2_NIGHTMARE 0x08000000
+#define STATUS2_CURSED 0x10000000
+#define STATUS2_FORESIGHT 0x20000000
+#define STATUS2_DEFENSE_CURL 0x40000000
+#define STATUS2_TORMENT 0x80000000
+
+// Seems like per-battler statuses. Not quite sure how to categorize these
+#define STATUS3_LEECHSEED_BANK 0x3
+#define STATUS3_LEECHSEED 0x4
+#define STATUS3_ALWAYS_HITS 0x18 // two bits
+#define STATUS3_PERISH_SONG 0x20
+#define STATUS3_ON_AIR 0x40
+#define STATUS3_UNDERGROUND 0x80
+#define STATUS3_MINIMIZED 0x100
+#define STATUS3_ROOTED 0x400
+#define STATUS3_CHARGED_UP 0x200
+#define STATUS3_YAWN 0x1800 // two bits
+#define STATUS3_IMPRISONED_OTHERS 0x2000
+#define STATUS3_GRUDGE 0x4000
+#define STATUS3_CANT_SCORE_A_CRIT 0x8000
+#define STATUS3_MUDSPORT 0x10000
+#define STATUS3_WATERSPORT 0x20000
+#define STATUS3_UNDERWATER 0x40000
+#define STATUS3_INTIMIDATE_POKES 0x80000
+#define STATUS3_TRACE 0x100000
+#define STATUS3_SEMI_INVULNERABLE (STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER)
+
+// Not really sure what a "hitmarker" is.
+#define HITMARKER_x10 0x00000010
+#define HITMARKER_x20 0x00000020
+#define HITMARKER_DESTINYBOND 0x00000040
+#define HITMARKER_NO_ANIMATIONS 0x00000080
+#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
+#define HITMARKER_NO_ATTACKSTRING 0x00000200
+#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
+#define HITMARKER_NO_PPDEDUCT 0x00000800
+#define HITMARKER_PURSUIT_TRAP 0x00001000
+#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
+#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
+#define HITMARKER_RUN 0x00008000
+#define HITMARKER_IGNORE_ON_AIR 0x00010000
+#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
+#define HITMARKER_IGNORE_UNDERWATER 0x00040000
+#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
+#define HITMARKER_x100000 0x00100000
+#define HITMARKER_x200000 0x00200000
+#define HITMARKER_x400000 0x00400000
+#define HITMARKER_x800000 0x00800000
+#define HITMARKER_GRUDGE 0x01000000
+#define HITMARKER_OBEYS 0x02000000
+#define HITMARKER_x4000000 0x04000000
+#define HITMARKER_x8000000 0x08000000
+#define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C)
+#define HITMARKER_UNK(battler) (0x10000000 << battler)
+
+// Per-side statuses that affect an entire party
+#define SIDE_STATUS_REFLECT (1 << 0)
+#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
+#define SIDE_STATUS_X4 (1 << 2)
+#define SIDE_STATUS_SPIKES (1 << 4)
+#define SIDE_STATUS_SAFEGUARD (1 << 5)
+#define SIDE_STATUS_FUTUREATTACK (1 << 6)
+#define SIDE_STATUS_MIST (1 << 8)
+#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
+
+// Flags describing move's result
+#define MOVE_RESULT_MISSED (1 << 0)
+#define MOVE_RESULT_SUPER_EFFECTIVE (1 << 1)
+#define MOVE_RESULT_NOT_VERY_EFFECTIVE (1 << 2)
+#define MOVE_RESULT_DOESNT_AFFECT_FOE (1 << 3)
+#define MOVE_RESULT_ONE_HIT_KO (1 << 4)
+#define MOVE_RESULT_FAILED (1 << 5)
+#define MOVE_RESULT_FOE_ENDURED (1 << 6)
+#define MOVE_RESULT_FOE_HUNG_ON (1 << 7)
+#define MOVE_RESULT_NO_EFFECT (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)
+
+// Battle Weather flags
+#define WEATHER_RAIN_TEMPORARY (1 << 0)
+#define WEATHER_RAIN_DOWNPOUR (1 << 1) // unused
+#define WEATHER_RAIN_PERMANENT (1 << 2)
+#define WEATHER_RAIN_ANY (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT)
+#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
+#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
+#define WEATHER_SANDSTORM_ANY (WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT)
+#define WEATHER_SUN_TEMPORARY (1 << 5)
+#define WEATHER_SUN_PERMANENT (1 << 6)
+#define WEATHER_SUN_ANY (WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT)
+#define WEATHER_HAIL (1 << 7)
+#define WEATHER_HAIL_ANY (WEATHER_HAIL)
+#define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY)
+
+// Move Effects
+#define MOVE_EFFECT_SLEEP 0x1
+#define MOVE_EFFECT_POISON 0x2
+#define MOVE_EFFECT_BURN 0x3
+#define MOVE_EFFECT_FREEZE 0x4
+#define MOVE_EFFECT_PARALYSIS 0x5
+#define MOVE_EFFECT_TOXIC 0x6
+#define MOVE_EFFECT_CONFUSION 0x7
+#define MOVE_EFFECT_FLINCH 0x8
+#define MOVE_EFFECT_TRI_ATTACK 0x9
+#define MOVE_EFFECT_UPROAR 0xA
+#define MOVE_EFFECT_PAYDAY 0xB
+#define MOVE_EFFECT_CHARGING 0xC
+#define MOVE_EFFECT_WRAP 0xD
+#define MOVE_EFFECT_RECOIL_25 0xE
+#define MOVE_EFFECT_ATK_PLUS_1 0xF
+#define MOVE_EFFECT_DEF_PLUS_1 0x10
+#define MOVE_EFFECT_SPD_PLUS_1 0x11
+#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
+#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
+#define MOVE_EFFECT_ACC_PLUS_1 0x14
+#define MOVE_EFFECT_EVS_PLUS_1 0x15
+#define MOVE_EFFECT_ATK_MINUS_1 0x16
+#define MOVE_EFFECT_DEF_MINUS_1 0x17
+#define MOVE_EFFECT_SPD_MINUS_1 0x18
+#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
+#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
+#define MOVE_EFFECT_ACC_MINUS_1 0x1B
+#define MOVE_EFFECT_EVS_MINUS_1 0x1C
+#define MOVE_EFFECT_RECHARGE 0x1D
+#define MOVE_EFFECT_RAGE 0x1E
+#define MOVE_EFFECT_STEAL_ITEM 0x1F
+#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
+#define MOVE_EFFECT_NIGHTMARE 0x21
+#define MOVE_EFFECT_ALL_STATS_UP 0x22
+#define MOVE_EFFECT_RAPIDSPIN 0x23
+#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
+#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
+#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
+#define MOVE_EFFECT_ATK_PLUS_2 0x27
+#define MOVE_EFFECT_DEF_PLUS_2 0x28
+#define MOVE_EFFECT_SPD_PLUS_2 0x29
+#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
+#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
+#define MOVE_EFFECT_ACC_PLUS_2 0x2C
+#define MOVE_EFFECT_EVS_PLUS_2 0x2D
+#define MOVE_EFFECT_ATK_MINUS_2 0x2E
+#define MOVE_EFFECT_DEF_MINUS_2 0x2F
+#define MOVE_EFFECT_SPD_MINUS_2 0x30
+#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
+#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
+#define MOVE_EFFECT_ACC_MINUS_2 0x33
+#define MOVE_EFFECT_EVS_MINUS_2 0x34
+#define MOVE_EFFECT_THRASH 0x35
+#define MOVE_EFFECT_KNOCK_OFF 0x36
+#define MOVE_EFFECT_NOTHING_37 0x37
+#define MOVE_EFFECT_NOTHING_38 0x38
+#define MOVE_EFFECT_NOTHING_39 0x39
+#define MOVE_EFFECT_NOTHING_3A 0x3A
+#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
+#define MOVE_EFFECT_NOTHING_3C 0x3C
+#define MOVE_EFFECT_NOTHING_3D 0x3D
+#define MOVE_EFFECT_NOTHING_3E 0x3E
+#define MOVE_EFFECT_NOTHING_3F 0x3F
+#define MOVE_EFFECT_AFFECTS_USER 0x40
+#define MOVE_EFFECT_CERTAIN 0x80
+
+#endif // GUARD_CONSTANTS_BATTLE_H
diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h
index 9d89d75f0..7d2c70307 100644
--- a/include/constants/battle_ai.h
+++ b/include/constants/battle_ai.h
@@ -1,7 +1,7 @@
-#ifndef GUARD_BATTLE_AI_H
-#define GUARD_BATTLE_AI_H
+#ifndef GUARD_CONSTANTS_BATTLE_AI_H
+#define GUARD_CONSTANTS_BATTLE_AI_H
-// banks enum
+// battlers
#define AI_TARGET 0
#define AI_USER 1
#define AI_TARGET_PARTNER 2
@@ -22,7 +22,7 @@
#define AI_EFFECTIVENESS_x0_25 10
#define AI_EFFECTIVENESS_x0 0
-// ai weather enum
+// ai weather
#define AI_WEATHER_SUN 0
#define AI_WEATHER_RAIN 1
#define AI_WEATHER_SANDSTORM 2
@@ -49,4 +49,4 @@
#define AI_SCRIPT_SAFARI (1 << 30)
#define AI_SCRIPT_FIRST_BATTLE (1 << 31)
-#endif // GUARD_BATTLE_AI_H
+#endif // GUARD_CONSTANTS_BATTLE_AI_H
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index de2fbebb1..270ac55e0 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -1,7 +1,7 @@
#ifndef GUARD_CONSTANTS_BATTLE_ANIM_H
#define GUARD_CONSTANTS_BATTLE_ANIM_H
-// banks enum used in scripts
+// battlers
#define ANIM_ATTACKER 0
#define ANIM_TARGET 1
#define ANIM_ATK_PARTNER 2
diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h
new file mode 100644
index 000000000..0390f17f4
--- /dev/null
+++ b/include/constants/battle_script_commands.h
@@ -0,0 +1,97 @@
+#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
+#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
+
+// Battle Scripting and BattleCommunication addresses
+#define sPAINSPLIT_HP gBattleScripting
+#define sBIDE_DMG gBattleScripting + 4
+#define sMULTIHIT_STRING gBattleScripting + 8
+#define sDMG_MULTIPLIER gBattleScripting + 0xE
+#define sTWOTURN_STRINGID gBattleScripting + 0xF
+#define sB_ANIM_ARG1 gBattleScripting + 0x10
+#define sB_ANIM_ARG2 gBattleScripting + 0x11
+#define sTRIPLE_KICK_POWER gBattleScripting + 0x12
+#define sMOVEEND_STATE gBattleScripting + 0x14
+#define sBANK_WITH_ABILITY gBattleScripting + 0x15
+#define sMULTIHIT_EFFECT gBattleScripting + 0x16
+#define sBANK gBattleScripting + 0x17
+#define sB_ANIM_TURN gBattleScripting + 0x18
+#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19
+#define sSTATCHANGER gBattleScripting + 0x1A
+#define sFIELD_1B gBattleScripting + 0x1B
+#define sGIVEEXP_STATE gBattleScripting + 0x1C
+#define sBATTLE_STYLE gBattleScripting + 0x1D
+#define sLVLBOX_STATE gBattleScripting + 0x1E
+#define sLEARNMOVE_STATE gBattleScripting + 0x1F
+#define sFIELD_20 gBattleScripting + 0x20
+#define sRESHOW_MAIN_STATE gBattleScripting + 0x21
+#define sRESHOW_HELPER_STATE gBattleScripting + 0x22
+#define sFIELD_23 gBattleScripting + 0x23
+#define sFIELD_24 gBattleScripting + 0x24
+#define sMULTIPLAYER_ID gBattleScripting + 0x25
+
+#define cEFFECT_CHOOSER gBattleCommunication + 3
+#define cMULTISTRING_CHOOSER gBattleCommunication + 5
+
+// Battle Script defines for getting the wanted battler
+#define BS_TARGET 0
+#define BS_ATTACKER 1
+#define BS_EFFECT_BATTLER 2
+#define BS_FAINTED 3
+#define BS_BANK_0 7
+#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
+#define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability
+#define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
+#define BS_SCRIPTING 10
+#define BS_PLAYER1 11
+#define BS_OPPONENT1 12
+#define BS_PLAYER2 13
+#define BS_OPPONENT2 14
+
+// atk 01, accuracy calc
+#define NO_ACC_CALC 0xFFFE
+#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
+#define ACC_CURR_MOVE 0
+
+// compare operands
+#define CMP_EQUAL 0x0
+#define CMP_NOT_EQUAL 0x1
+#define CMP_GREATER_THAN 0x2
+#define CMP_LESS_THAN 0x3
+#define CMP_COMMON_BITS 0x4
+#define CMP_NO_COMMON_BITS 0x5
+
+// atk76, various
+#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
+#define VARIOUS_SET_MAGIC_COAT_TARGET 1
+#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
+#define VARIOUS_GET_MOVE_TARGET 3
+#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
+#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
+#define VARIOUS_EMIT_YESNOBOX 13
+#define VARIOUS_WAIT_CRY 18
+#define VARIOUS_RETURN_OPPONENT_MON1 19
+#define VARIOUS_RETURN_OPPONENT_MON2 20
+#define VARIOUS_SET_TELEPORT_OUTCOME 25
+#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
+
+// atk80, dmg manipulation
+#define ATK80_DMG_CHANGE_SIGN 0
+#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
+#define ATK80_DMG_DOUBLED 2
+
+// atk4F, a flag used for the jumpifcantswitch command
+#define ATK4F_DONT_CHECK_STATUSES 0x80
+
+// statchange defines
+#define STAT_CHANGE_BS_PTR 0x1
+#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
+#define STAT_CHANGE_WORKED 0
+#define STAT_CHANGE_DIDNT_WORK 1
+
+// atk48
+#define ATK48_STAT_NEGATIVE 0x1
+#define ATK48_STAT_BY_TWO 0x2
+#define ATK48_BIT_x4 0x4
+#define ATK48_LOWER_FAIL_CHECK 0x8
+
+#endif // GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/battle_string_ids.h b/include/constants/battle_string_ids.h
index f242284b0..db9ed59bd 100644
--- a/include/battle_string_ids.h
+++ b/include/constants/battle_string_ids.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_BATTLE_STRING_IDS_H
-#define GUARD_BATTLE_STRING_IDS_H
+#ifndef GUARD_CONSTANTS_BATTLE_STRING_IDS_H
+#define GUARD_CONSTANTS_BATTLE_STRING_IDS_H
#define BATTLESTRINGS_COUNT 369
@@ -12,7 +12,6 @@
#define STRINGID_USEDMOVE 4
#define STRINGID_BATTLEEND 5
-
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
#define STRINGID_TRAINER1LOSETEXT 12
#define STRINGID_PKMNGAINEDEXP 13
@@ -384,4 +383,4 @@
#define STRINGID_TRAINER1WINTEXT 379
#define STRINGID_TRAINER2WINTEXT 380
-#endif // GUARD_BATTLE_STRING_IDS_H
+#endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H
diff --git a/include/constants/items.h b/include/constants/items.h
index 6135b8d6f..ca6fdbf64 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -2,6 +2,8 @@
#define GUARD_CONSTANTS_ITEMS_H
#define ITEM_NONE 0
+
+// Balls
#define ITEM_MASTER_BALL 1
#define ITEM_ULTRA_BALL 2
#define ITEM_GREAT_BALL 3
@@ -14,6 +16,8 @@
#define ITEM_TIMER_BALL 10
#define ITEM_LUXURY_BALL 11
#define ITEM_PREMIER_BALL 12
+
+// Pokemon Items
#define ITEM_POTION 13
#define ITEM_ANTIDOTE 14
#define ITEM_BURN_HEAL 15
@@ -180,6 +184,8 @@
#define ITEM_0B0 176
#define ITEM_0B1 177
#define ITEM_0B2 178
+
+// hold items
#define ITEM_BRIGHT_POWDER 179
#define ITEM_WHITE_HERB 180
#define ITEM_MACHO_BRACE 181
@@ -260,6 +266,8 @@
#define ITEM_PINK_SCARF 256
#define ITEM_GREEN_SCARF 257
#define ITEM_YELLOW_SCARF 258
+
+// Key Items
#define ITEM_MACH_BIKE 259
#define ITEM_COIN_CASE 260
#define ITEM_ITEMFINDER 261
@@ -290,6 +298,8 @@
#define ITEM_ROOT_FOSSIL 286
#define ITEM_CLAW_FOSSIL 287
#define ITEM_DEVON_SCOPE 288
+
+// TMs/HMs
#define ITEM_TM01 289
#define ITEM_TM02 290
#define ITEM_TM03 291
@@ -348,6 +358,67 @@
#define ITEM_HM06 344
#define ITEM_HM07 345
#define ITEM_HM08 346
+
+#define ITEM_TM01_FOCUS_PUNCH ITEM_TM01
+#define ITEM_TM02_DRAGON_CLAW ITEM_TM02
+#define ITEM_TM03_WATER_PULSE ITEM_TM03
+#define ITEM_TM04_CALM_MIND ITEM_TM04
+#define ITEM_TM05_ROAR ITEM_TM05
+#define ITEM_TM06_TOXIC ITEM_TM06
+#define ITEM_TM07_HAIL ITEM_TM07
+#define ITEM_TM08_BULK_UP ITEM_TM08
+#define ITEM_TM09_BULLET_SEED ITEM_TM09
+#define ITEM_TM10_HIDDEN_POWER ITEM_TM10
+#define ITEM_TM11_SUNNY_DAY ITEM_TM11
+#define ITEM_TM12_TAUNT ITEM_TM12
+#define ITEM_TM13_ICE_BEAM ITEM_TM13
+#define ITEM_TM14_BLIZZARD ITEM_TM14
+#define ITEM_TM15_HYPER_BEAM ITEM_TM15
+#define ITEM_TM16_LIGHT_SCREEN ITEM_TM16
+#define ITEM_TM17_PROTECT ITEM_TM17
+#define ITEM_TM18_RAIN_DANCE ITEM_TM18
+#define ITEM_TM19_GIGA_DRAIN ITEM_TM19
+#define ITEM_TM20_SAFEGUARD ITEM_TM20
+#define ITEM_TM21_FRUSTRATION ITEM_TM21
+#define ITEM_TM22_SOLARBEAM ITEM_TM22
+#define ITEM_TM23_IRON_TAIL ITEM_TM23
+#define ITEM_TM24_THUNDERBOLT ITEM_TM24
+#define ITEM_TM25_THUNDER ITEM_TM25
+#define ITEM_TM26_EARTHQUAKE ITEM_TM26
+#define ITEM_TM27_RETURN ITEM_TM27
+#define ITEM_TM28_DIG ITEM_TM28
+#define ITEM_TM29_PSYCHIC ITEM_TM29
+#define ITEM_TM30_SHADOW_BALL ITEM_TM30
+#define ITEM_TM31_BRICK_BREAK ITEM_TM31
+#define ITEM_TM32_DOUBLE_TEAM ITEM_TM32
+#define ITEM_TM33_REFLECT ITEM_TM33
+#define ITEM_TM34_SHOCK_WAVE ITEM_TM34
+#define ITEM_TM35_FLAMETHROWER ITEM_TM35
+#define ITEM_TM36_SLUDGE_BOMB ITEM_TM36
+#define ITEM_TM37_SANDSTORM ITEM_TM37
+#define ITEM_TM38_FIRE_BLAST ITEM_TM38
+#define ITEM_TM39_ROCK_TOMB ITEM_TM39
+#define ITEM_TM40_AERIAL_ACE ITEM_TM40
+#define ITEM_TM41_TORMENT ITEM_TM41
+#define ITEM_TM42_FACADE ITEM_TM42
+#define ITEM_TM43_SECRET_POWER ITEM_TM43
+#define ITEM_TM44_REST ITEM_TM44
+#define ITEM_TM45_ATTRACT ITEM_TM45
+#define ITEM_TM46_THIEF ITEM_TM46
+#define ITEM_TM47_STEEL_WING ITEM_TM47
+#define ITEM_TM48_SKILL_SWAP ITEM_TM48
+#define ITEM_TM49_SNATCH ITEM_TM49
+#define ITEM_TM50_OVERHEAT ITEM_TM50
+#define ITEM_HM01_CUT ITEM_HM01
+#define ITEM_HM02_FLY ITEM_HM02
+#define ITEM_HM03_SURF ITEM_HM03
+#define ITEM_HM04_STRENGTH ITEM_HM04
+#define ITEM_HM05_FLASH ITEM_HM05
+#define ITEM_HM06_ROCK_SMASH ITEM_HM06
+#define ITEM_HM07_WATERFALL ITEM_HM07
+#define ITEM_HM08_DIVE ITEM_HM08
+
+// Unknown
#define ITEM_15B 347
#define ITEM_15C 348
@@ -383,6 +454,9 @@
#define ITEM_MAGMA_EMBLEM 375
#define ITEM_OLD_SEA_MAP 376
+#define ITEM_LAST_ID 376
+#define ITEM_FIELD_ARROW ITEM_LAST_ID + 1
+
#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
#define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1))
diff --git a/include/constants/maps.h b/include/constants/maps.h
index 737edd7de..fb1cb82a8 100644
--- a/include/constants/maps.h
+++ b/include/constants/maps.h
@@ -56,6 +56,9 @@
#define MAP_UNDERWATER2 (51 | (0 << 8))
#define MAP_UNDERWATER3 (52 | (0 << 8))
#define MAP_UNDERWATER4 (53 | (0 << 8))
+#define MAP_UNDERWATER5 (54 | (0 << 8))
+#define MAP_UNDERWATER6 (55 | (0 << 8))
+#define MAP_UNDERWATER7 (56 | (0 << 8))
// Map Group 1
#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8))
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
new file mode 100644
index 000000000..78c1583b4
--- /dev/null
+++ b/include/constants/pokemon.h
@@ -0,0 +1,80 @@
+#ifndef GUARD_CONSTANTS_POKEMON_H
+#define GUARD_CONSTANTS_POKEMON_H
+
+// Pokemon types
+#define TYPE_NORMAL 0x00
+#define TYPE_FIGHTING 0x01
+#define TYPE_FLYING 0x02
+#define TYPE_POISON 0x03
+#define TYPE_GROUND 0x04
+#define TYPE_ROCK 0x05
+#define TYPE_BUG 0x06
+#define TYPE_GHOST 0x07
+#define TYPE_STEEL 0x08
+#define TYPE_MYSTERY 0x09
+#define TYPE_FIRE 0x0a
+#define TYPE_WATER 0x0b
+#define TYPE_GRASS 0x0c
+#define TYPE_ELECTRIC 0x0d
+#define TYPE_PSYCHIC 0x0e
+#define TYPE_ICE 0x0f
+#define TYPE_DRAGON 0x10
+#define TYPE_DARK 0x11
+#define NUMBER_OF_MON_TYPES 0x12
+
+// Pokemon egg groups
+#define EGG_GROUP_NONE 0
+#define EGG_GROUP_MONSTER 1
+#define EGG_GROUP_WATER_1 2
+#define EGG_GROUP_BUG 3
+#define EGG_GROUP_FLYING 4
+#define EGG_GROUP_FIELD 5
+#define EGG_GROUP_FAIRY 6
+#define EGG_GROUP_GRASS 7
+#define EGG_GROUP_HUMAN_LIKE 8
+#define EGG_GROUP_WATER_3 9
+#define EGG_GROUP_MINERAL 10
+#define EGG_GROUP_AMORPHOUS 11
+#define EGG_GROUP_WATER_2 12
+#define EGG_GROUP_DITTO 13
+#define EGG_GROUP_DRAGON 14
+#define EGG_GROUP_UNDISCOVERED 15
+
+// Pokemon natures
+#define NATURE_HARDY 0
+#define NATURE_LONELY 1
+#define NATURE_BRAVE 2
+#define NATURE_ADAMANT 3
+#define NATURE_NAUGHTY 4
+#define NATURE_BOLD 5
+#define NATURE_DOCILE 6
+#define NATURE_RELAXED 7
+#define NATURE_IMPISH 8
+#define NATURE_LAX 9
+#define NATURE_TIMID 10
+#define NATURE_HASTY 11
+#define NATURE_SERIOUS 12
+#define NATURE_JOLLY 13
+#define NATURE_NAIVE 14
+#define NATURE_MODEST 15
+#define NATURE_MILD 16
+#define NATURE_QUIET 17
+#define NATURE_BASHFUL 18
+#define NATURE_RASH 19
+#define NATURE_CALM 20
+#define NATURE_GENTLE 21
+#define NATURE_SASSY 22
+#define NATURE_CAREFUL 23
+#define NATURE_QUIRKY 24
+
+// Pokemon Stats
+#define STAT_HP 0
+#define STAT_ATK 1
+#define STAT_DEF 2
+#define STAT_SPEED 3
+#define STAT_SPATK 4
+#define STAT_SPDEF 5
+#define STAT_ACC 6 // only in battles
+#define STAT_EVASION 7 // only in battles
+
+#endif // GUARD_CONSTANTS_POKEMON_H
diff --git a/include/constants/rgb.h b/include/constants/rgb.h
index 2c22df32a..8b323799f 100644
--- a/include/constants/rgb.h
+++ b/include/constants/rgb.h
@@ -2,6 +2,7 @@
#define GUARD_RGB_H
#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
+#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F))
#define RGB_BLACK RGB(0, 0, 0)
#define RGB_WHITE RGB(31, 31, 31)
diff --git a/include/data/pokemon/base_stats.h b/include/data/pokemon/base_stats.h
new file mode 100644
index 000000000..bc6572b46
--- /dev/null
+++ b/include/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/include/data/pokemon/cry_ids.h b/include/data/pokemon/cry_ids.h
new file mode 100644
index 000000000..1c1c32dde
--- /dev/null
+++ b/include/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/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h
new file mode 100644
index 000000000..8629ac9b1
--- /dev/null
+++ b/include/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/include/data/pokemon/experience_tables.h b/include/data/pokemon/experience_tables.h
new file mode 100644
index 000000000..58474b6f1
--- /dev/null
+++ b/include/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/include/data/pokemon/item_effects.h b/include/data/pokemon/item_effects.h
new file mode 100644
index 000000000..6ba0d694e
--- /dev/null
+++ b/include/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/include/data/pokemon/level_up_learnset_pointers.h b/include/data/pokemon/level_up_learnset_pointers.h
new file mode 100644
index 000000000..a56b1c09f
--- /dev/null
+++ b/include/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[] =
+{
+ gBulbasaurLevelUpLearnset,
+ gBulbasaurLevelUpLearnset,
+ gIvysaurLevelUpLearnset,
+ gVenusaurLevelUpLearnset,
+ gCharmanderLevelUpLearnset,
+ gCharmeleonLevelUpLearnset,
+ gCharizardLevelUpLearnset,
+ gSquirtleLevelUpLearnset,
+ gWartortleLevelUpLearnset,
+ gBlastoiseLevelUpLearnset,
+ gCaterpieLevelUpLearnset,
+ gMetapodLevelUpLearnset,
+ gButterfreeLevelUpLearnset,
+ gWeedleLevelUpLearnset,
+ gKakunaLevelUpLearnset,
+ gBeedrillLevelUpLearnset,
+ gPidgeyLevelUpLearnset,
+ gPidgeottoLevelUpLearnset,
+ gPidgeotLevelUpLearnset,
+ gRattataLevelUpLearnset,
+ gRaticateLevelUpLearnset,
+ gSpearowLevelUpLearnset,
+ gFearowLevelUpLearnset,
+ gEkansLevelUpLearnset,
+ gArbokLevelUpLearnset,
+ gPikachuLevelUpLearnset,
+ gRaichuLevelUpLearnset,
+ gSandshrewLevelUpLearnset,
+ gSandslashLevelUpLearnset,
+ gNidoranFLevelUpLearnset,
+ gNidorinaLevelUpLearnset,
+ gNidoqueenLevelUpLearnset,
+ gNidoranMLevelUpLearnset,
+ gNidorinoLevelUpLearnset,
+ gNidokingLevelUpLearnset,
+ gClefairyLevelUpLearnset,
+ gClefableLevelUpLearnset,
+ gVulpixLevelUpLearnset,
+ gNinetalesLevelUpLearnset,
+ gJigglypuffLevelUpLearnset,
+ gWigglytuffLevelUpLearnset,
+ gZubatLevelUpLearnset,
+ gGolbatLevelUpLearnset,
+ gOddishLevelUpLearnset,
+ gGloomLevelUpLearnset,
+ gVileplumeLevelUpLearnset,
+ gParasLevelUpLearnset,
+ gParasectLevelUpLearnset,
+ gVenonatLevelUpLearnset,
+ gVenomothLevelUpLearnset,
+ gDiglettLevelUpLearnset,
+ gDugtrioLevelUpLearnset,
+ gMeowthLevelUpLearnset,
+ gPersianLevelUpLearnset,
+ gPsyduckLevelUpLearnset,
+ gGolduckLevelUpLearnset,
+ gMankeyLevelUpLearnset,
+ gPrimeapeLevelUpLearnset,
+ gGrowlitheLevelUpLearnset,
+ gArcanineLevelUpLearnset,
+ gPoliwagLevelUpLearnset,
+ gPoliwhirlLevelUpLearnset,
+ gPoliwrathLevelUpLearnset,
+ gAbraLevelUpLearnset,
+ gKadabraLevelUpLearnset,
+ gAlakazamLevelUpLearnset,
+ gMachopLevelUpLearnset,
+ gMachokeLevelUpLearnset,
+ gMachampLevelUpLearnset,
+ gBellsproutLevelUpLearnset,
+ gWeepinbellLevelUpLearnset,
+ gVictreebelLevelUpLearnset,
+ gTentacoolLevelUpLearnset,
+ gTentacruelLevelUpLearnset,
+ gGeodudeLevelUpLearnset,
+ gGravelerLevelUpLearnset,
+ gGolemLevelUpLearnset,
+ gPonytaLevelUpLearnset,
+ gRapidashLevelUpLearnset,
+ gSlowpokeLevelUpLearnset,
+ gSlowbroLevelUpLearnset,
+ gMagnemiteLevelUpLearnset,
+ gMagnetonLevelUpLearnset,
+ gFarfetchdLevelUpLearnset,
+ gDoduoLevelUpLearnset,
+ gDodrioLevelUpLearnset,
+ gSeelLevelUpLearnset,
+ gDewgongLevelUpLearnset,
+ gGrimerLevelUpLearnset,
+ gMukLevelUpLearnset,
+ gShellderLevelUpLearnset,
+ gCloysterLevelUpLearnset,
+ gGastlyLevelUpLearnset,
+ gHaunterLevelUpLearnset,
+ gGengarLevelUpLearnset,
+ gOnixLevelUpLearnset,
+ gDrowzeeLevelUpLearnset,
+ gHypnoLevelUpLearnset,
+ gKrabbyLevelUpLearnset,
+ gKinglerLevelUpLearnset,
+ gVoltorbLevelUpLearnset,
+ gElectrodeLevelUpLearnset,
+ gExeggcuteLevelUpLearnset,
+ gExeggutorLevelUpLearnset,
+ gCuboneLevelUpLearnset,
+ gMarowakLevelUpLearnset,
+ gHitmonleeLevelUpLearnset,
+ gHitmonchanLevelUpLearnset,
+ gLickitungLevelUpLearnset,
+ gKoffingLevelUpLearnset,
+ gWeezingLevelUpLearnset,
+ gRhyhornLevelUpLearnset,
+ gRhydonLevelUpLearnset,
+ gChanseyLevelUpLearnset,
+ gTangelaLevelUpLearnset,
+ gKangaskhanLevelUpLearnset,
+ gHorseaLevelUpLearnset,
+ gSeadraLevelUpLearnset,
+ gGoldeenLevelUpLearnset,
+ gSeakingLevelUpLearnset,
+ gStaryuLevelUpLearnset,
+ gStarmieLevelUpLearnset,
+ gMrmimeLevelUpLearnset,
+ gScytherLevelUpLearnset,
+ gJynxLevelUpLearnset,
+ gElectabuzzLevelUpLearnset,
+ gMagmarLevelUpLearnset,
+ gPinsirLevelUpLearnset,
+ gTaurosLevelUpLearnset,
+ gMagikarpLevelUpLearnset,
+ gGyaradosLevelUpLearnset,
+ gLaprasLevelUpLearnset,
+ gDittoLevelUpLearnset,
+ gEeveeLevelUpLearnset,
+ gVaporeonLevelUpLearnset,
+ gJolteonLevelUpLearnset,
+ gFlareonLevelUpLearnset,
+ gPorygonLevelUpLearnset,
+ gOmanyteLevelUpLearnset,
+ gOmastarLevelUpLearnset,
+ gKabutoLevelUpLearnset,
+ gKabutopsLevelUpLearnset,
+ gAerodactylLevelUpLearnset,
+ gSnorlaxLevelUpLearnset,
+ gArticunoLevelUpLearnset,
+ gZapdosLevelUpLearnset,
+ gMoltresLevelUpLearnset,
+ gDratiniLevelUpLearnset,
+ gDragonairLevelUpLearnset,
+ gDragoniteLevelUpLearnset,
+ gMewtwoLevelUpLearnset,
+ gMewLevelUpLearnset,
+ gChikoritaLevelUpLearnset,
+ gBayleefLevelUpLearnset,
+ gMeganiumLevelUpLearnset,
+ gCyndaquilLevelUpLearnset,
+ gQuilavaLevelUpLearnset,
+ gTyphlosionLevelUpLearnset,
+ gTotodileLevelUpLearnset,
+ gCroconawLevelUpLearnset,
+ gFeraligatrLevelUpLearnset,
+ gSentretLevelUpLearnset,
+ gFurretLevelUpLearnset,
+ gHoothootLevelUpLearnset,
+ gNoctowlLevelUpLearnset,
+ gLedybaLevelUpLearnset,
+ gLedianLevelUpLearnset,
+ gSpinarakLevelUpLearnset,
+ gAriadosLevelUpLearnset,
+ gCrobatLevelUpLearnset,
+ gChinchouLevelUpLearnset,
+ gLanturnLevelUpLearnset,
+ gPichuLevelUpLearnset,
+ gCleffaLevelUpLearnset,
+ gIgglybuffLevelUpLearnset,
+ gTogepiLevelUpLearnset,
+ gTogeticLevelUpLearnset,
+ gNatuLevelUpLearnset,
+ gXatuLevelUpLearnset,
+ gMareepLevelUpLearnset,
+ gFlaaffyLevelUpLearnset,
+ gAmpharosLevelUpLearnset,
+ gBellossomLevelUpLearnset,
+ gMarillLevelUpLearnset,
+ gAzumarillLevelUpLearnset,
+ gSudowoodoLevelUpLearnset,
+ gPolitoedLevelUpLearnset,
+ gHoppipLevelUpLearnset,
+ gSkiploomLevelUpLearnset,
+ gJumpluffLevelUpLearnset,
+ gAipomLevelUpLearnset,
+ gSunkernLevelUpLearnset,
+ gSunfloraLevelUpLearnset,
+ gYanmaLevelUpLearnset,
+ gWooperLevelUpLearnset,
+ gQuagsireLevelUpLearnset,
+ gEspeonLevelUpLearnset,
+ gUmbreonLevelUpLearnset,
+ gMurkrowLevelUpLearnset,
+ gSlowkingLevelUpLearnset,
+ gMisdreavusLevelUpLearnset,
+ gUnownLevelUpLearnset,
+ gWobbuffetLevelUpLearnset,
+ gGirafarigLevelUpLearnset,
+ gPinecoLevelUpLearnset,
+ gForretressLevelUpLearnset,
+ gDunsparceLevelUpLearnset,
+ gGligarLevelUpLearnset,
+ gSteelixLevelUpLearnset,
+ gSnubbullLevelUpLearnset,
+ gGranbullLevelUpLearnset,
+ gQwilfishLevelUpLearnset,
+ gScizorLevelUpLearnset,
+ gShuckleLevelUpLearnset,
+ gHeracrossLevelUpLearnset,
+ gSneaselLevelUpLearnset,
+ gTeddiursaLevelUpLearnset,
+ gUrsaringLevelUpLearnset,
+ gSlugmaLevelUpLearnset,
+ gMagcargoLevelUpLearnset,
+ gSwinubLevelUpLearnset,
+ gPiloswineLevelUpLearnset,
+ gCorsolaLevelUpLearnset,
+ gRemoraidLevelUpLearnset,
+ gOctilleryLevelUpLearnset,
+ gDelibirdLevelUpLearnset,
+ gMantineLevelUpLearnset,
+ gSkarmoryLevelUpLearnset,
+ gHoundourLevelUpLearnset,
+ gHoundoomLevelUpLearnset,
+ gKingdraLevelUpLearnset,
+ gPhanpyLevelUpLearnset,
+ gDonphanLevelUpLearnset,
+ gPorygon2LevelUpLearnset,
+ gStantlerLevelUpLearnset,
+ gSmeargleLevelUpLearnset,
+ gTyrogueLevelUpLearnset,
+ gHitmontopLevelUpLearnset,
+ gSmoochumLevelUpLearnset,
+ gElekidLevelUpLearnset,
+ gMagbyLevelUpLearnset,
+ gMiltankLevelUpLearnset,
+ gBlisseyLevelUpLearnset,
+ gRaikouLevelUpLearnset,
+ gEnteiLevelUpLearnset,
+ gSuicuneLevelUpLearnset,
+ gLarvitarLevelUpLearnset,
+ gPupitarLevelUpLearnset,
+ gTyranitarLevelUpLearnset,
+ gLugiaLevelUpLearnset,
+ gHoOhLevelUpLearnset,
+ gCelebiLevelUpLearnset,
+ gSpecies252LevelUpLearnset,
+ gSpecies253LevelUpLearnset,
+ gSpecies254LevelUpLearnset,
+ gSpecies255LevelUpLearnset,
+ gSpecies256LevelUpLearnset,
+ gSpecies257LevelUpLearnset,
+ gSpecies258LevelUpLearnset,
+ gSpecies259LevelUpLearnset,
+ gSpecies260LevelUpLearnset,
+ gSpecies261LevelUpLearnset,
+ gSpecies262LevelUpLearnset,
+ gSpecies263LevelUpLearnset,
+ gSpecies264LevelUpLearnset,
+ gSpecies265LevelUpLearnset,
+ gSpecies266LevelUpLearnset,
+ gSpecies267LevelUpLearnset,
+ gSpecies268LevelUpLearnset,
+ gSpecies269LevelUpLearnset,
+ gSpecies270LevelUpLearnset,
+ gSpecies271LevelUpLearnset,
+ gSpecies272LevelUpLearnset,
+ gSpecies273LevelUpLearnset,
+ gSpecies274LevelUpLearnset,
+ gSpecies275LevelUpLearnset,
+ gSpecies276LevelUpLearnset,
+ gTreeckoLevelUpLearnset,
+ gGrovyleLevelUpLearnset,
+ gSceptileLevelUpLearnset,
+ gTorchicLevelUpLearnset,
+ gCombuskenLevelUpLearnset,
+ gBlazikenLevelUpLearnset,
+ gMudkipLevelUpLearnset,
+ gMarshtompLevelUpLearnset,
+ gSwampertLevelUpLearnset,
+ gPoochyenaLevelUpLearnset,
+ gMightyenaLevelUpLearnset,
+ gZigzagoonLevelUpLearnset,
+ gLinooneLevelUpLearnset,
+ gWurmpleLevelUpLearnset,
+ gSilcoonLevelUpLearnset,
+ gBeautiflyLevelUpLearnset,
+ gCascoonLevelUpLearnset,
+ gDustoxLevelUpLearnset,
+ gLotadLevelUpLearnset,
+ gLombreLevelUpLearnset,
+ gLudicoloLevelUpLearnset,
+ gSeedotLevelUpLearnset,
+ gNuzleafLevelUpLearnset,
+ gShiftryLevelUpLearnset,
+ gNincadaLevelUpLearnset,
+ gNinjaskLevelUpLearnset,
+ gShedinjaLevelUpLearnset,
+ gTaillowLevelUpLearnset,
+ gSwellowLevelUpLearnset,
+ gShroomishLevelUpLearnset,
+ gBreloomLevelUpLearnset,
+ gSpindaLevelUpLearnset,
+ gWingullLevelUpLearnset,
+ gPelipperLevelUpLearnset,
+ gSurskitLevelUpLearnset,
+ gMasquerainLevelUpLearnset,
+ gWailmerLevelUpLearnset,
+ gWailordLevelUpLearnset,
+ gSkittyLevelUpLearnset,
+ gDelcattyLevelUpLearnset,
+ gKecleonLevelUpLearnset,
+ gBaltoyLevelUpLearnset,
+ gClaydolLevelUpLearnset,
+ gNosepassLevelUpLearnset,
+ gTorkoalLevelUpLearnset,
+ gSableyeLevelUpLearnset,
+ gBarboachLevelUpLearnset,
+ gWhiscashLevelUpLearnset,
+ gLuvdiscLevelUpLearnset,
+ gCorphishLevelUpLearnset,
+ gCrawdauntLevelUpLearnset,
+ gFeebasLevelUpLearnset,
+ gMiloticLevelUpLearnset,
+ gCarvanhaLevelUpLearnset,
+ gSharpedoLevelUpLearnset,
+ gTrapinchLevelUpLearnset,
+ gVibravaLevelUpLearnset,
+ gFlygonLevelUpLearnset,
+ gMakuhitaLevelUpLearnset,
+ gHariyamaLevelUpLearnset,
+ gElectrikeLevelUpLearnset,
+ gManectricLevelUpLearnset,
+ gNumelLevelUpLearnset,
+ gCameruptLevelUpLearnset,
+ gSphealLevelUpLearnset,
+ gSealeoLevelUpLearnset,
+ gWalreinLevelUpLearnset,
+ gCacneaLevelUpLearnset,
+ gCacturneLevelUpLearnset,
+ gSnoruntLevelUpLearnset,
+ gGlalieLevelUpLearnset,
+ gLunatoneLevelUpLearnset,
+ gSolrockLevelUpLearnset,
+ gAzurillLevelUpLearnset,
+ gSpoinkLevelUpLearnset,
+ gGrumpigLevelUpLearnset,
+ gPlusleLevelUpLearnset,
+ gMinunLevelUpLearnset,
+ gMawileLevelUpLearnset,
+ gMedititeLevelUpLearnset,
+ gMedichamLevelUpLearnset,
+ gSwabluLevelUpLearnset,
+ gAltariaLevelUpLearnset,
+ gWynautLevelUpLearnset,
+ gDuskullLevelUpLearnset,
+ gDusclopsLevelUpLearnset,
+ gRoseliaLevelUpLearnset,
+ gSlakothLevelUpLearnset,
+ gVigorothLevelUpLearnset,
+ gSlakingLevelUpLearnset,
+ gGulpinLevelUpLearnset,
+ gSwalotLevelUpLearnset,
+ gTropiusLevelUpLearnset,
+ gWhismurLevelUpLearnset,
+ gLoudredLevelUpLearnset,
+ gExploudLevelUpLearnset,
+ gClamperlLevelUpLearnset,
+ gHuntailLevelUpLearnset,
+ gGorebyssLevelUpLearnset,
+ gAbsolLevelUpLearnset,
+ gShuppetLevelUpLearnset,
+ gBanetteLevelUpLearnset,
+ gSeviperLevelUpLearnset,
+ gZangooseLevelUpLearnset,
+ gRelicanthLevelUpLearnset,
+ gAronLevelUpLearnset,
+ gLaironLevelUpLearnset,
+ gAggronLevelUpLearnset,
+ gCastformLevelUpLearnset,
+ gVolbeatLevelUpLearnset,
+ gIllumiseLevelUpLearnset,
+ gLileepLevelUpLearnset,
+ gCradilyLevelUpLearnset,
+ gAnorithLevelUpLearnset,
+ gArmaldoLevelUpLearnset,
+ gRaltsLevelUpLearnset,
+ gKirliaLevelUpLearnset,
+ gGardevoirLevelUpLearnset,
+ gBagonLevelUpLearnset,
+ gShelgonLevelUpLearnset,
+ gSalamenceLevelUpLearnset,
+ gBeldumLevelUpLearnset,
+ gMetangLevelUpLearnset,
+ gMetagrossLevelUpLearnset,
+ gRegirockLevelUpLearnset,
+ gRegiceLevelUpLearnset,
+ gRegisteelLevelUpLearnset,
+ gKyogreLevelUpLearnset,
+ gGroudonLevelUpLearnset,
+ gRayquazaLevelUpLearnset,
+ gLatiasLevelUpLearnset,
+ gLatiosLevelUpLearnset,
+ gJirachiLevelUpLearnset,
+ gDeoxysLevelUpLearnset,
+ gChimechoLevelUpLearnset
+};
+
+#endif //POKEEMERALD_LEVEL_UP_LEARNSET_POINTERS_H
diff --git a/include/data/pokemon/level_up_learnsets.h b/include/data/pokemon/level_up_learnsets.h
new file mode 100644
index 000000000..4035dc66a
--- /dev/null
+++ b/include/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
+
+const u16 gBulbasaurLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gIvysaurLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVenusaurLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCharmanderLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCharmeleonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCharizardLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSquirtleLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWartortleLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBlastoiseLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCaterpieLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT),
+ LEVEL_UP_END
+};
+
+const u16 gMetapodLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_HARDEN),
+ LEVEL_UP_MOVE( 7, MOVE_HARDEN),
+ LEVEL_UP_END
+};
+
+const u16 gButterfreeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWeedleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_POISON_STING),
+ LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT),
+ LEVEL_UP_END
+};
+
+const u16 gKakunaLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_HARDEN),
+ LEVEL_UP_MOVE( 7, MOVE_HARDEN),
+ LEVEL_UP_END
+};
+
+const u16 gBeedrillLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPidgeyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPidgeottoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPidgeotLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRattataLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRaticateLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSpearowLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gFearowLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gEkansLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gArbokLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPikachuLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRaichuLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSandshrewLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSandslashLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNidoranFLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNidorinaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNidoqueenLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNidoranMLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNidorinoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNidokingLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gClefairyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gClefableLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVulpixLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNinetalesLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gJigglypuffLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWigglytuffLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gZubatLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGolbatLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gOddishLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGloomLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVileplumeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gParasLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gParasectLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVenonatLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVenomothLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDiglettLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDugtrioLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMeowthLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPersianLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPsyduckLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGolduckLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMankeyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPrimeapeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGrowlitheLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gArcanineLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPoliwagLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPoliwhirlLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPoliwrathLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAbraLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TELEPORT),
+ LEVEL_UP_END
+};
+
+const u16 gKadabraLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAlakazamLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMachopLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMachokeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMachampLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBellsproutLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWeepinbellLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVictreebelLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTentacoolLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTentacruelLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGeodudeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGravelerLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGolemLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPonytaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRapidashLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSlowpokeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSlowbroLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMagnemiteLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMagnetonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gFarfetchdLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDoduoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDodrioLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSeelLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDewgongLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGrimerLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMukLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gShellderLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCloysterLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGastlyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHaunterLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGengarLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gOnixLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDrowzeeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHypnoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKrabbyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKinglerLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVoltorbLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gElectrodeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gExeggcuteLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gExeggutorLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCuboneLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMarowakLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHitmonleeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHitmonchanLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLickitungLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKoffingLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWeezingLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRhyhornLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRhydonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gChanseyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTangelaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKangaskhanLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHorseaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSeadraLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGoldeenLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSeakingLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gStaryuLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gStarmieLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMrmimeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gScytherLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gJynxLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gElectabuzzLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMagmarLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPinsirLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTaurosLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMagikarpLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(15, MOVE_TACKLE),
+ LEVEL_UP_MOVE(30, MOVE_FLAIL),
+ LEVEL_UP_END
+};
+
+const u16 gGyaradosLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLaprasLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDittoLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TRANSFORM),
+ LEVEL_UP_END
+};
+
+const u16 gEeveeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVaporeonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gJolteonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gFlareonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPorygonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gOmanyteLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gOmastarLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKabutoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKabutopsLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAerodactylLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSnorlaxLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gArticunoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gZapdosLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMoltresLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDratiniLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDragonairLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDragoniteLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMewtwoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMewLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gChikoritaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBayleefLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMeganiumLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCyndaquilLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gQuilavaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTyphlosionLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTotodileLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCroconawLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gFeraligatrLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSentretLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gFurretLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHoothootLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNoctowlLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLedybaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLedianLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSpinarakLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAriadosLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCrobatLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gChinchouLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLanturnLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPichuLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCleffaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gIgglybuffLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTogepiLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTogeticLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNatuLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gXatuLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMareepLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gFlaaffyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAmpharosLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBellossomLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMarillLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAzumarillLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSudowoodoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPolitoedLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHoppipLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSkiploomLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gJumpluffLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAipomLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSunkernLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSunfloraLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gYanmaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWooperLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gQuagsireLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gEspeonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gUmbreonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMurkrowLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSlowkingLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMisdreavusLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gUnownLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER),
+ LEVEL_UP_END
+};
+
+const u16 gWobbuffetLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGirafarigLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPinecoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gForretressLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDunsparceLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGligarLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSteelixLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSnubbullLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGranbullLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gQwilfishLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gScizorLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gShuckleLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHeracrossLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSneaselLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTeddiursaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gUrsaringLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSlugmaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMagcargoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSwinubLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPiloswineLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCorsolaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRemoraidLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gOctilleryLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDelibirdLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_PRESENT),
+ LEVEL_UP_END
+};
+
+const u16 gMantineLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSkarmoryLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHoundourLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHoundoomLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKingdraLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPhanpyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDonphanLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPorygon2LevelUpLearnset[] = {
+ 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
+};
+
+const u16 gStantlerLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSmeargleLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTyrogueLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gHitmontopLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSmoochumLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gElekidLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMagbyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMiltankLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBlisseyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRaikouLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gEnteiLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSuicuneLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLarvitarLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPupitarLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTyranitarLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLugiaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHoOhLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCelebiLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSpecies252LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies253LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies254LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies255LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies256LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies257LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies258LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies259LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies260LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies261LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies262LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies263LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies264LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies265LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies266LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies267LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies268LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies269LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies270LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies271LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies272LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies273LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies274LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies275LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gSpecies276LevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_END
+};
+
+const u16 gTreeckoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGrovyleLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSceptileLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTorchicLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCombuskenLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBlazikenLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMudkipLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMarshtompLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSwampertLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPoochyenaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMightyenaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gZigzagoonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLinooneLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWurmpleLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TACKLE),
+ LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT),
+ LEVEL_UP_MOVE( 5, MOVE_POISON_STING),
+ LEVEL_UP_END
+};
+
+const u16 gSilcoonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_HARDEN),
+ LEVEL_UP_MOVE( 7, MOVE_HARDEN),
+ LEVEL_UP_END
+};
+
+const u16 gBeautiflyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCascoonLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_HARDEN),
+ LEVEL_UP_MOVE( 7, MOVE_HARDEN),
+ LEVEL_UP_END
+};
+
+const u16 gDustoxLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLotadLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLombreLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLudicoloLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSeedotLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNuzleafLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gShiftryLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNincadaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNinjaskLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gShedinjaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTaillowLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSwellowLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gShroomishLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBreloomLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSpindaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWingullLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPelipperLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSurskitLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMasquerainLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWailmerLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWailordLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSkittyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDelcattyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKecleonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBaltoyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gClaydolLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNosepassLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTorkoalLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSableyeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBarboachLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWhiscashLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLuvdiscLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCorphishLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCrawdauntLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gFeebasLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_SPLASH),
+ LEVEL_UP_MOVE(15, MOVE_TACKLE),
+ LEVEL_UP_MOVE(30, MOVE_FLAIL),
+ LEVEL_UP_END
+};
+
+const u16 gMiloticLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCarvanhaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSharpedoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTrapinchLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVibravaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gFlygonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMakuhitaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHariyamaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gElectrikeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gManectricLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gNumelLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCameruptLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSphealLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSealeoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWalreinLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCacneaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCacturneLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSnoruntLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGlalieLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLunatoneLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSolrockLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAzurillLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSpoinkLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGrumpigLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gPlusleLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMinunLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMawileLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMedititeLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMedichamLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSwabluLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAltariaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWynautLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDuskullLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDusclopsLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRoseliaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSlakothLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVigorothLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSlakingLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGulpinLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSwalotLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gTropiusLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gWhismurLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLoudredLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gExploudLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gClamperlLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gHuntailLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGorebyssLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAbsolLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gShuppetLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBanetteLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSeviperLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gZangooseLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRelicanthLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAronLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLaironLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAggronLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCastformLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gVolbeatLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gIllumiseLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLileepLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gCradilyLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gAnorithLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gArmaldoLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRaltsLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKirliaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGardevoirLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBagonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gShelgonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gSalamenceLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gBeldumLevelUpLearnset[] = {
+ LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN),
+ LEVEL_UP_END
+};
+
+const u16 gMetangLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gMetagrossLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRegirockLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRegiceLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRegisteelLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gKyogreLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gGroudonLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gRayquazaLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLatiasLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gLatiosLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gJirachiLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gDeoxysLevelUpLearnset[] = {
+ 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
+};
+
+const u16 gChimechoLevelUpLearnset[] = {
+ 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/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h
new file mode 100644
index 000000000..f14478863
--- /dev/null
+++ b/include/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/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h
new file mode 100644
index 000000000..2ffe9cd85
--- /dev/null
+++ b/include/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_1
+ 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_1
+ 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_2
+ 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_1
+ TRAINER_PIC_PSYCHIC_F, // FACILITY_CLASS_PSYCHIC_2
+ 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_1
+ TRAINER_PIC_SCHOOL_KID_F, // FACILITY_CLASS_SCHOOL_KID_2
+ 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_2
+ TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_3
+ TRAINER_PIC_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_4
+ TRAINER_PIC_MAY, // FACILITY_CLASS_PKMN_TRAINER_5
+ 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_1
+ TRAINER_PIC_POKEMON_RANGER_F, // FACILITY_CLASS_PKMN_RANGER_2
+ 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_8
+ 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_9
+ TRAINER_PIC_LEAF, // FACILITY_CLASS_PKMN_TRAINER_10
+ TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN, // FACILITY_CLASS_PKMN_TRAINER_11
+ TRAINER_PIC_RUBY_SAPPHIRE_MAY, // FACILITY_CLASS_PKMN_TRAINER_12
+};
+
+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_1
+ 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_1
+ 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_2
+ 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_1
+ TRAINER_CLASS_PSYCHIC, // FACILITY_CLASS_PSYCHIC_2
+ 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_1
+ TRAINER_CLASS_SCHOOL_KID, // FACILITY_CLASS_SCHOOL_KID_2
+ 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_2
+ 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_5
+ 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_1
+ TRAINER_CLASS_PKMN_RANGER, // FACILITY_CLASS_PKMN_RANGER_2
+ 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_8
+ 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_9
+ TRAINER_CLASS_PKMN_TRAINER_3, // FACILITY_CLASS_PKMN_TRAINER_10
+ TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_11
+ TRAINER_CLASS_PKMN_TRAINER_4, // FACILITY_CLASS_PKMN_TRAINER_12
+};
+
+#endif //POKEEMERALD_TRAINER_CLASS_LOOKUPS_H
diff --git a/include/dma3.h b/include/dma3.h
index d58e41850..19a69ea80 100644
--- a/include/dma3.h
+++ b/include/dma3.h
@@ -5,6 +5,6 @@ void ClearDma3Requests(void);
void ProcessDma3Requests(void);
s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode);
-int CheckForSpaceForDma3Request(s16 index);
+s16 CheckForSpaceForDma3Request(s16 index);
#endif // GUARD_DMA3_H
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 5c07347ce..1eed6303d 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -39,6 +39,9 @@
#define BG_CHAR_ADDR(n) (BG_VRAM + (BG_CHAR_SIZE * (n)))
#define BG_SCREEN_ADDR(n) (BG_VRAM + (BG_SCREEN_SIZE * (n)))
+#define BG_TILE_H_FLIP(n) (0x400 + (n))
+#define BG_TILE_V_FLIP(n) (0x800 + (n))
+
// text-mode BG
#define OBJ_VRAM0 (VRAM + 0x10000)
#define OBJ_VRAM0_SIZE 0x8000
diff --git a/include/global.h b/include/global.h
index 7a892c5bd..4a71a8a87 100644
--- a/include/global.h
+++ b/include/global.h
@@ -25,7 +25,7 @@
#define INCBIN_S32 {0}
#endif // __APPLE__
-#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
+#define ARRAY_COUNT(array) (size_t)(sizeof(array) / sizeof((array)[0]))
// useful math macros
@@ -35,6 +35,8 @@
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((s16)((n) * 4096))
+#define PARTY_SIZE 6
+
#define POKEMON_NAME_LENGTH 10
#define OT_NAME_LENGTH 7
@@ -297,6 +299,16 @@ struct SaveBlock2
extern struct SaveBlock2 *gSaveBlock2Ptr;
+struct SecretBaseParty
+{
+ u32 personality[PARTY_SIZE];
+ u16 moves[PARTY_SIZE * 4];
+ u16 species[PARTY_SIZE];
+ u16 heldItems[PARTY_SIZE];
+ u8 levels[PARTY_SIZE];
+ u8 EVs[PARTY_SIZE];
+};
+
struct SecretBaseRecord
{
/*0x1A9C*/ u8 secretBaseId;
@@ -312,12 +324,7 @@ struct SecretBaseRecord
/*0x1AAD*/ u8 sbr_field_11;
/*0x1AAE*/ u8 decorations[16];
/*0x1ABE*/ u8 decorationPos[16];
- /*0x1AD0*/ u32 partyPersonality[6];
- /*0x1AE8*/ u16 partyMoves[6 * 4];
- /*0x1B18*/ u16 partySpecies[6];
- /*0x1B24*/ u16 partyHeldItems[6];
- /*0x1B2E*/ u8 partyLevels[6];
- /*0x1B34*/ u8 partyEVs[6];
+ /*0x1AD0*/ struct SecretBaseParty party;
};
#include "constants/game_stat.h"
diff --git a/include/graphics.h b/include/graphics.h
index 5917e9d2a..39662c8c1 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2654,6 +2654,12 @@ extern const u8 gBattleTerrainPalette_StadiumWallace[];
extern const u8 gPokedexMenu2_Gfx[];
extern const u8 gPokedexText_Pal[];
+// berry tag screen
+extern const u8 gUnknown_08D9BB44[];
+extern const u8 gUnknown_08D9BF98[];
+extern const u8 gUnknown_08D9C13C[];
+extern const u8 gUnknown_08D9BEF0[];
+
// rayquaza scene gfx
extern const u8 gRaySceneGroudon_Gfx[];
extern const u8 gRaySceneGroudon2_Gfx[];
@@ -2673,10 +2679,44 @@ extern const u8 gRaySceneGroudonTail_Gfx[];
extern const u8 gRaySceneKyogreRight_Gfx[];
extern const u8 gRaySceneRayquazaHover_Gfx[];
extern const u8 gRaySceneRayquazaFlyIn_Gfx[];
+extern const u8 gRaySceneOvercast_Gfx[];
+extern const u8 gRaySceneOvercast_Tilemap[];
+extern const u8 gRaySceneRayquaza_Gfx[];
+extern const u8 gRaySceneRayquaza_Tilemap[];
extern const u8 gRaySceneSplash_Gfx[];
extern const u8 gRaySceneGroudonLeft_Pal[];
extern const u8 gRaySceneKyogreRight_Pal[];
extern const u8 gRaySceneRayquazaHover_Pal[];
extern const u8 gRaySceneSplash_Pal[];
+extern const u8 gRaySceneClouds_Gfx[];
+extern const u8 gRaySceneClouds_Pal[];
+extern const u8 gRaySceneClouds2_Tilemap[];
+extern const u8 gRaySceneClouds1_Tilemap[];
+extern const u8 gRaySceneClouds3_Tilemap[];
+extern const u8 gRaySceneRayquazaLight_Gfx[];
+extern const u8 gRaySceneRayquazaLight_Tilemap[];
+extern const u8 gRaySceneOvercast2_Gfx[];
+extern const u8 gRaySceneOvercast2_Tilemap[];
+extern const u8 gRaySceneOvercast2_Pal[];
+extern const u8 gRaySceneRayquazaChase_Gfx[];
+extern const u8 gRaySceneChaseStreaks_Gfx[];
+extern const u8 gRaySceneChaseBg_Gfx[];
+extern const u8 gRayChaseRayquazaChase2_Tilemap[];
+extern const u8 gRayChaseRayquazaChase_Tilemap[];
+extern const u8 gRaySceneChaseStreaks_Tilemap[];
+extern const u8 gRaySceneChaseBg_Tilemap[];
+extern const u8 gRaySceneChase_Pal[];
+extern const u8 gRaySceneHushRing_Tilemap[];
+extern const u8 gRaySceneHushBg_Tilemap[];
+extern const u8 gRaySceneHushRing_Map[];
+extern const u8 gRaySceneHushBg_Pal[];
+extern const u8 gRaySceneHushBg_Gfx[];
+extern const u8 gRaySceneHushRing_Gfx[];
+
+//menu graphics
+extern const u16 gFireRedMenuElements1_Pal[16];
+extern const u16 gFireRedMenuElements2_Pal[16];
+extern const u16 gFireRedMenuElements3_Pal[16];
+extern const u8 gFireRedMenuElements_Gfx[];
#endif //GUARD_GRAPHICS_H
diff --git a/include/intro.h b/include/intro.h
index 3a0fee07f..aae3438fe 100644
--- a/include/intro.h
+++ b/include/intro.h
@@ -7,5 +7,8 @@
// Exported ROM declarations
void c2_copyright_1(void);
+void CB2_InitCopyrightScreenAfterBootup(void);
+void CB2_InitCopyrightScreenAfterTitleScreen(void);
+void sub_816F2A8(u16, u16, u16, u16);
-#endif //GUARD_INTRO_H
+#endif // GUARD_INTRO_H
diff --git a/include/item.h b/include/item.h
index a136f03ec..06eb08046 100644
--- a/include/item.h
+++ b/include/item.h
@@ -60,5 +60,6 @@ u8 ItemId_GetBattleUsage(u16 itemId);
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
u16 itemid_get_market_price(u16 itemId);
+u16 BagGetItemIdByPocketPosition(u8 pocketId, u16 pocketPos);
#endif // ITEM_H
diff --git a/include/item_icon.h b/include/item_icon.h
index a43b72f39..b702b2045 100644
--- a/include/item_icon.h
+++ b/include/item_icon.h
@@ -1,17 +1,16 @@
-//
-// Created by scott on 10/20/2017.
-//
-
#ifndef GUARD_ITEM_ICON_H
#define GUARD_ITEM_ICON_H
-extern EWRAM_DATA void *gUnknown_0203CEBC;
-extern EWRAM_DATA void *gUnknown_0203CEC0;
+extern void *gItemIconDecompressionBuffer;
+extern void *gItemIcon4x4Buffer;
-extern const struct SpriteTemplate gUnknown_08614FF4;
+extern const struct SpriteTemplate gItemIconSpriteTemplate;
bool8 AllocItemIconTemporaryBuffers(void);
-void CopyItemIconPicTo4x4Buffer(void *src, void *dest);
void FreeItemIconTemporaryBuffers(void);
+void CopyItemIconPicTo4x4Buffer(const void *src, void *dest);
+u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId);
+u8 AddCustomItemIconSprite(struct SpriteTemplate *customSpriteTemplate, u16 tilesTag, u16 paletteTag, u16 itemId);
+const void *GetItemIconPicOrPalette(u16 itemId, u8 which);
#endif //GUARD_ITEM_ICON_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 6c8ef031b..5c1b26faa 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -2,6 +2,18 @@
#define GUARD_item_menu_H
// Exported type declarations
+struct BagStruct
+{
+ void *func;
+ u8 unk4;
+ u8 pocket;
+ u8 unk6[2];
+ u16 unk8[5];
+ u16 unk12[5];
+ void *unk1C;
+};
+
+extern struct BagStruct gUnknown_0203CE58;
// Exported RAM declarations
@@ -10,5 +22,6 @@ extern u16 gSpecialVar_ItemId;
// Exported ROM declarations
void sub_81AAC50(void);
void sub_81AAC70(void);
+void bag_menu_mail_related(void);
#endif //GUARD_item_menu_H
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
index 553e7c262..c3932390c 100644
--- a/include/item_menu_icons.h
+++ b/include/item_menu_icons.h
@@ -1,6 +1,12 @@
#ifndef GUARD_ITEM_MENU_ICONS
#define GUARD_ITEM_MENU_ICONS
+extern const struct CompressedSpriteSheet gUnknown_0857FDEC;
+extern const struct CompressedSpritePalette gUnknown_0857FDF4;
+
u8 sub_80D511C(u8 a0, u8 a1, u8 a2, u8 a3);
+u8 CreateBerryTagSprite(u8 id, s16 x, s16 y);
+void FreeBerryTagSpritePalette(void);
+u8 CreateBerryFlavorCircleSprite(s16 x);
#endif // GUARD_ITEM_MENU_ICONS
diff --git a/include/item_use.h b/include/item_use.h
new file mode 100644
index 000000000..ee7939824
--- /dev/null
+++ b/include/item_use.h
@@ -0,0 +1,54 @@
+#ifndef GUARD_ITEM_USE_H
+#define GUARD_ITEM_USE_H
+
+extern u16 gSpecialVar_ItemId;
+
+void ItemUseOutOfBattle_Mail(u8);
+void ItemUseOutOfBattle_Bike(u8);
+void ItemUseOnFieldCB_Bike(u8);
+void ItemUseOutOfBattle_Rod(u8);
+void ItemUseOnFieldCB_Rod(u8);
+void ItemUseOutOfBattle_Itemfinder(u8);
+void ItemUseOnFieldCB_Itemfinder(u8);
+void RunItemfinderResults(u8);
+void ExitItemfinder(u8);
+bool8 ItemfinderCheckForHiddenItems(struct MapEvents *, u8);
+void sub_80C9720(u8);
+void sub_80C9838(u8, s16, s16);
+u8 GetPlayerDirectionTowardsHiddenItem(s16, s16);
+void SetPlayerDirectionTowardsItem(u8);
+void DisplayItemRespondingMessageAndExitItemfinder(u8);
+void RotatePlayerAndExitItemfinder(u8);
+void ItemUseOutOfBattle_PokeblockCase(u8);
+void ItemUseOutOfBattle_CoinCase(u8);
+void ItemUseOutOfBattle_SSTicket(u8);
+void sub_80C9D00(u8);
+void ItemUseOutOfBattle_WailmerPail(u8);
+void sub_80C9D74(u8);
+void ItemUseOutOfBattle_Medicine(u8);
+void ItemUseOutOfBattle_SacredAsh(u8);
+void ItemUseOutOfBattle_PPRecovery(u8);
+void ItemUseOutOfBattle_PPUp(u8);
+void ItemUseOutOfBattle_RareCandy(u8);
+void ItemUseOutOfBattle_TMHM(u8);
+void sub_80C9EE4(u8);
+void sub_80C9F10(u8);
+void sub_80C9F80(u8);
+void sub_80C9FC0(u8);
+void ItemUseOutOfBattle_Repel(u8);
+void ItemUseOutOfBattle_BlackWhiteFlute(u8);
+void task08_080A1C44(u8);
+u8 CanUseEscapeRopeOnCurrMap(void);
+void ItemUseOutOfBattle_EscapeRope(u8);
+void ItemUseOutOfBattle_EvolutionStone(u8);
+void ItemUseInBattle_PokeBall(u8);
+void ItemUseInBattle_StatIncrease(u8);
+void ItemUseInBattle_Medicine(u8);
+void ItemUseInBattle_PPRecovery(u8);
+void ItemUseInBattle_Escape(u8);
+void ItemUseOutOfBattle_EnigmaBerry(u8);
+void ItemUseInBattle_EnigmaBerry(u8);
+void ItemUseOutOfBattle_CannotUse(u8);
+u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
+
+#endif // GUARD_ITEM_USE_H
diff --git a/include/main_menu.h b/include/main_menu.h
new file mode 100644
index 000000000..08cd913dc
--- /dev/null
+++ b/include/main_menu.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_MAIN_MENU_H
+#define GUARD_MAIN_MENU_H
+
+void CB2_InitMainMenu(void);
+
+#endif // GUARD_MAIN_MENU_H
diff --git a/include/menu.h b/include/menu.h
index b5dfa10ba..9b717525c 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -1,6 +1,7 @@
#ifndef GUARD_MENU_H
#define GUARD_MENU_H
+#include "task.h"
#include "text.h"
#include "window.h"
@@ -16,29 +17,50 @@ struct MenuAction
} func;
};
-void box_print(u8, u8, u8, u8, const void *, s8, const u8 *);
+extern const u16 gUnknown_0860F074[];
+
+void sub_81971D0(void);
+void sub_8197200(void);
+u16 sub_8197224(void);
+void sub_81973A4(void);
+void NewMenuHelpers_DrawDialogueFrame(u8, u8);
+void sub_819746C(u8 windowId, bool8 copyToVram);
+void NewMenuHelpers_DrawStdWindowFrame(u8, u8);
+u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
+void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
+void sub_8197434(u8 a0, u8 a1);
+void SetStandardWindowBorderStyle(u8 a0, u8 a1);
+void sub_8197930(void);
+u8 GetPlayerTextSpeed(void);
+void sub_81978B0(u16 arg0);
+
+void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);
void sub_8198070(u8 windowId, bool8 copyToVram);
void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
void schedule_bg_copy_tilemap_to_vram(u8 bgNum);
-void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs);
-void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8);
+void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs);
+u8 InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 windowId, u8 numItems, u8 initialCursorPos);
u8 GetMenuCursorPos(void);
s8 ProcessMenuInput(void);
s8 ProcessMenuInputNoWrapAround(void);
void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y);
void reset_temp_tile_data_buffers(void);
-int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode);
+void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size, u16 offset, u8 mode);
bool8 free_temp_tile_data_buffers_if_possible(void);
-u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
+struct WindowTemplate sub_8198A50(u8, u8, u8, u8, u8, u8, u16);
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
-void copy_decompressed_tile_data_to_vram_autofree(u8 arg0, const void *arg1, bool32 arg2, u16 arg3, u8 arg4);
+void copy_decompressed_tile_data_to_vram_autofree(u8 bgId, const void *src, int size, u16 offset, u8 mode);
s8 ProcessMenuInputNoWrap_(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);
void clear_scheduled_bg_copies_to_vram(void);
-void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
-void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
+void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str);
+void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u8 a3);
void sub_81995E4(u8 windowId, u8 optionsNo, const struct MenuAction *actions, const u8 *actionIds);
void sub_8197DF8(u8 windowId, bool8 copyToVram);
+u16 sub_8198AA4(u8, u8, u8, u8, u8, u8, u16);
+void *malloc_and_decompress(const void *src, int *sizeOut);
+u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode);
+void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 14b6d32ca..048a4aa43 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -1,6 +1,8 @@
#ifndef GUARD_MENU_HELPERS_H
#define GUARD_MENU_HELPERS_H
+#include "task.h"
+
// Exported type declarations
struct YesNoFuncTable
@@ -17,6 +19,7 @@ void sub_812225C(u16 *, u16 *, u8, u8);
void sub_8122298(u16 *, u16 *, u8, u8, u8);
void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
bool8 sub_81221AC(void);
+bool8 sub_81221EC(void);
void ResetVramOamAndBgCntRegs(void);
void SetVBlankHBlankCallbacksToNull(void);
void ResetAllBgsCoordinates(void);
@@ -27,5 +30,7 @@ void sub_81223FC(u8 *a0, u8 count, u8 a2);
void sub_8122448(u8 *a0, u8 count, u16 x, u16 y);
void DisplayMessageAndContinueTask(u8 taskId, u8 arg1, u16 arg2, u8 arg3, u8 arg4, u8 textSpeed, const u8 *string, void *taskFunc);
void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+u8 GetLRKeysState(void);
+u8 sub_812210C(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
deleted file mode 100644
index c01cab440..000000000
--- a/include/new_menu_helpers.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef GUARD_NEW_MENU_HELPERS_H
-#define GUARD_NEW_MENU_HELPERS_H
-
-#include "text.h"
-#include "task.h"
-
-extern const u16 gUnknown_0860F074[];
-
-void sub_81971D0(void);
-void sub_8197200(void);
-void sub_81973A4(void);
-void sub_81973C4(u8, u8);
-void sub_819746C(u8 windowId, bool8 copyToVram);
-void sub_81973FC(u8, u8);
-u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor);
-void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
-void sub_8197434(u8 a0, u8 a1);
-void SetStandardWindowBorderStyle(u8 a0, u8 a1);
-void sub_8197930(void);
-u8 GetPlayerTextSpeed(void);
-void sub_81978B0(u16 arg0);
-u16 sub_8197224(void);
-int sub_8196094(void);
-void sub_8196080(u8*);
-void AddTextPrinterForMessage(u8);
-
-#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/palette.h b/include/palette.h
index cb03699a6..41cef4048 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -67,5 +67,6 @@ void BeginFastPaletteFade(u8);
void BeginHardwarePaletteFade(u8, u8, u8, u8, u8);
void BlendPalettes(u32, u8, u16);
void BlendPalettesUnfaded(u32, u8, u16);
+void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7);
#endif // GUARD_PALETTE_H
diff --git a/include/pokemon.h b/include/pokemon.h
index cdab96687..de52696dd 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -1,6 +1,8 @@
#ifndef GUARD_POKEMON_H
#define GUARD_POKEMON_H
+#include "constants/pokemon.h"
+
#define MON_DATA_PERSONALITY 0
#define MON_DATA_OT_ID 1
#define MON_DATA_NICKNAME 2
@@ -107,82 +109,11 @@
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
-#define TYPE_NORMAL 0x00
-#define TYPE_FIGHTING 0x01
-#define TYPE_FLYING 0x02
-#define TYPE_POISON 0x03
-#define TYPE_GROUND 0x04
-#define TYPE_ROCK 0x05
-#define TYPE_BUG 0x06
-#define TYPE_GHOST 0x07
-#define TYPE_STEEL 0x08
-#define TYPE_MYSTERY 0x09
-#define TYPE_FIRE 0x0a
-#define TYPE_WATER 0x0b
-#define TYPE_GRASS 0x0c
-#define TYPE_ELECTRIC 0x0d
-#define TYPE_PSYCHIC 0x0e
-#define TYPE_ICE 0x0f
-#define TYPE_DRAGON 0x10
-#define TYPE_DARK 0x11
-
-#define NUMBER_OF_MON_TYPES 0x12
-
-#define PARTY_SIZE 6
#define MAX_TOTAL_EVS 510
#define NUM_STATS 6
#define UNOWN_FORM_COUNT 28
#define MAX_MON_LEVEL 100
-enum
-{
- EGG_GROUP_NONE,
- EGG_GROUP_MONSTER,
- EGG_GROUP_WATER_1,
- EGG_GROUP_BUG,
- EGG_GROUP_FLYING,
- EGG_GROUP_FIELD,
- EGG_GROUP_FAIRY,
- EGG_GROUP_GRASS,
- EGG_GROUP_HUMAN_LIKE,
- EGG_GROUP_WATER_3,
- EGG_GROUP_MINERAL,
- EGG_GROUP_AMORPHOUS,
- EGG_GROUP_WATER_2,
- EGG_GROUP_DITTO,
- EGG_GROUP_DRAGON,
- EGG_GROUP_UNDISCOVERED
-};
-
-enum
-{
- NATURE_HARDY,
- NATURE_LONELY,
- NATURE_BRAVE,
- NATURE_ADAMANT,
- NATURE_NAUGHTY,
- NATURE_BOLD,
- NATURE_DOCILE,
- NATURE_RELAXED,
- NATURE_IMPISH,
- NATURE_LAX,
- NATURE_TIMID,
- NATURE_HASTY,
- NATURE_SERIOUS,
- NATURE_JOLLY,
- NATURE_NAIVE,
- NATURE_MODEST,
- NATURE_MILD,
- NATURE_QUIET,
- NATURE_BASHFUL,
- NATURE_RASH,
- NATURE_CALM,
- NATURE_GENTLE,
- NATURE_SASSY,
- NATURE_CAREFUL,
- NATURE_QUIRKY,
-};
-
struct PokemonSubstruct0
{
u16 species;
@@ -375,28 +306,6 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
-enum
-{
- STAT_STAGE_HP, // 0
- STAT_STAGE_ATK, // 1
- STAT_STAGE_DEF, // 2
- STAT_STAGE_SPEED, // 3
- STAT_STAGE_SPATK, // 4
- STAT_STAGE_SPDEF, // 5
- STAT_STAGE_ACC, // 6
- STAT_STAGE_EVASION, // 7
-};
-
-enum
-{
- STAT_HP, // 0
- STAT_ATK, // 1
- STAT_DEF, // 2
- STAT_SPD, // 3
- STAT_SPATK, // 4
- STAT_SPDEF, // 5
-};
-
struct BaseStats
{
/* 0x00 */ u8 baseHP;
@@ -511,18 +420,13 @@ struct Evolution
#define EVOS_PER_MON 5
-struct EvolutionData
-{
- struct Evolution evolutions[EVOS_PER_MON];
-};
-
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern u8 gEnemyPartyCount;
extern struct Pokemon gEnemyParty[PARTY_SIZE];
extern const struct BaseStats gBaseStats[];
extern const u8 *const gItemEffectTable[];
-extern const struct EvolutionData gEvolutionTable[];
+extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
extern struct PokemonStorage* gPokemonStoragePtr;
extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
@@ -631,7 +535,7 @@ bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
bool8 IsTradedMon(struct Pokemon *mon);
void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
-s32 GetBankMultiplayerId(u16 a1);
+s32 GetBattlerMultiplayerId(u16 a1);
bool16 sub_806D82C(u8 id);
u16 MonTryLearningNewMove(struct Pokemon* mon, bool8);
void sub_8068AA4(void); // sets stats for deoxys
diff --git a/include/rayquaza_scene.h b/include/rayquaza_scene.h
new file mode 100644
index 000000000..fe66b3df0
--- /dev/null
+++ b/include/rayquaza_scene.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_RAYQUAZA_SCENE_H
+#define GUARD_RAYQUAZA_SCENE_H
+
+void DoRayquazaScene(u8 animId, bool8 onlyOneAnim, void (*callback)(void));
+
+enum
+{
+ RAY_ANIM_DUO_FIGHT_PRE,
+ RAY_ANIM_DUO_FIGHT,
+ RAY_ANIM_TAKES_FLIGHT,
+ RAY_ANIM_DESCENDS,
+ RAY_ANIM_CHARGES,
+ RAY_ANIM_CHACES_AWAY,
+ RAY_ANIM_END
+};
+
+#endif // GUARD_RAYQUAZA_SCENE_H
diff --git a/include/recorded_battle.h b/include/recorded_battle.h
index adc4c6c85..8b1fa258d 100644
--- a/include/recorded_battle.h
+++ b/include/recorded_battle.h
@@ -7,9 +7,9 @@ extern u8 gUnknown_0203C7B4;
void sub_8184DA4(u8 arg0);
void sub_8184E58(void);
-void RecordedBattle_SetBankAction(u8 bank, u8 action);
-void RecordedBattle_ClearBankAction(u8 bank, u8 bytesToClear);
-u8 RecordedBattle_ReadBankAction(u8 bank);
+void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action);
+void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear);
+u8 RecordedBattle_GetBattlerAction(u8 battlerId);
u8 sub_81850D0(void);
u8 sub_81850DC(u8 *arg0);
void sub_81851A8(u8 *arg0);
@@ -19,13 +19,13 @@ void PlayRecordedBattle(void (*CB2_After)(void));
u8 sub_8185EA0(void);
u8 sub_8185EAC(void);
void RecordedBattle_SaveParties(void);
-u8 GetActiveBankLinkPlayerGender(void);
+u8 GetActiveBattlerLinkPlayerGender(void);
void sub_8185F84(void);
void sub_8185F90(u16 arg0);
u8 sub_8185FAC(void);
u8 GetBattleStyleInRecordedBattle(void);
u8 GetTextSpeedInRecordedBattle(void);
-void RecordedBattle_CopyBankMoves(void);
+void RecordedBattle_CopyBattlerMoves(void);
void sub_818603C(u8 arg0);
u32 GetAiScriptsInRecordedBattle(void);
void sub_8186444(void);
diff --git a/include/region_map.h b/include/region_map.h
index e8cc80f82..af331ad81 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -93,5 +93,6 @@ void CreateRegionMapPlayerIcon(u16 x, u16 y);
void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId);
+u8 *sub_81245DC(u8 *dest, u16 mapSecId);
#endif //GUARD_REGION_MAP_H
diff --git a/include/reset_rtc_screen.h b/include/reset_rtc_screen.h
new file mode 100644
index 000000000..5807dec99
--- /dev/null
+++ b/include/reset_rtc_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_RESET_RTC_SCREEN_H
+#define GUARD_RESET_RTC_SCREEN_H
+
+void CB2_InitResetRtcScreen(void);
+
+#endif // GUARD_RESET_RTC_SCREEN_H
diff --git a/include/scanline_effect.h b/include/scanline_effect.h
index 54dfe17bd..eb837e7e2 100644
--- a/include/scanline_effect.h
+++ b/include/scanline_effect.h
@@ -1,7 +1,7 @@
#ifndef GUARD_SCANLINE_EFFECT_H
#define GUARD_SCANLINE_EFFECT_H
-// DMA control value to ransfer a single 16-bit value at HBlank
+// DMA control value to transfer a single 16-bit value at HBlank
#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1)
#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS)
@@ -36,7 +36,7 @@ struct ScanlineEffect
extern struct ScanlineEffect gScanlineEffect;
-extern u16 gScanlineEffectRegBuffers[][0x3C0];
+extern u16 gScanlineEffectRegBuffers[2][0x3C0];
void ScanlineEffect_Stop(void);
void ScanlineEffect_Clear(void);
diff --git a/include/strings.h b/include/strings.h
index 11ecf098f..24b2d3e6f 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -157,6 +157,19 @@ extern const u8 gText_EggNickname[];
extern const u8 gText_Pokemon[];
extern const u8 gText_InGameClockUsable[];
+// reset rtc screen texts
+extern const u8 gText_Day[];
+extern const u8 gText_Colon3[];
+extern const u8 gText_Confirm2[];
+extern const u8 gText_PresentTime[];
+extern const u8 gText_PreviousTime[];
+extern const u8 gText_ResetRTCConfirmCancel[];
+extern const u8 gText_NoSaveFileCantSetTime[];
+extern const u8 gText_PleaseResetTime[];
+extern const u8 gText_ClockHasBeenReset[];
+extern const u8 gText_SaveCompleted[];
+extern const u8 gText_SaveFailed[];
+
// menu texts
extern const u8 gText_MenuPokedex[];
extern const u8 gText_MenuPokemon[];
@@ -207,6 +220,9 @@ extern const u8 gText_ButtonMode[];
extern const u8 gText_MaleSymbol[];
extern const u8 gText_FemaleSymbol[];
+extern const u8 gText_SelectorArrow3[];
+extern const u8 gText_YesNo[];
+
// mystery event menu text
extern const u8 gText_EventSafelyLoaded[];
extern const u8 gText_LoadErrorEndingSession[];
@@ -215,4 +231,17 @@ extern const u8 gText_LoadingEvent[];
extern const u8 gText_DontRemoveCableTurnOff[];
extern const u8 gText_LinkStandby2[];
+// berry tag screen text
+extern const u8 gBerryFirmnessString_VerySoft[];
+extern const u8 gBerryFirmnessString_Soft[];
+extern const u8 gBerryFirmnessString_Hard[];
+extern const u8 gBerryFirmnessString_VeryHard[];
+extern const u8 gBerryFirmnessString_SuperHard[];
+extern const u8 gText_BerryTag[];
+extern const u8 gText_UnkF908Var1Var2[];
+extern const u8 gText_SizeSlash[];
+extern const u8 gText_Var1DotVar2[];
+extern const u8 gText_ThreeMarks[];
+extern const u8 gText_FirmSlash[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/text.h b/include/text.h
index b5fc5b58a..e073c3762 100644
--- a/include/text.h
+++ b/include/text.h
@@ -75,6 +75,10 @@
#define CHAR_NEWLINE 0xFE
#define EOS 0xFF // end of string
+#define EXT_CTRL_CODE_COLOR 0x1
+#define EXT_CTRL_CODE_HIGHLIGHT 0x2
+#define EXT_CTRL_CODE_SHADOW 0x3
+
#define TEXT_COLOR_TRANSPARENT 0x0
#define TEXT_COLOR_WHITE 0x1
#define TEXT_COLOR_DARK_GREY 0x2
@@ -116,7 +120,7 @@ struct TextSubPrinter // TODO: Better name
u8 letterSpacing;
u8 lineSpacing;
u8 fontColor_l:4; // 0xC
- u8 fontColor_h:4;
+ u8 fgColor:4;
u8 bgColor:4;
u8 shadowColor:4;
};
@@ -149,7 +153,7 @@ struct FontInfo
u8 letterSpacing;
u8 lineSpacing;
u8 fontColor_l:4;
- u8 fontColor_h:4;
+ u8 fgColor:4;
u8 bgColor:4;
u8 shadowColor:4;
};
@@ -178,20 +182,6 @@ typedef struct {
extern TextFlags gTextFlags;
-struct __attribute__((packed)) TextColor
-{
- u8 fgColor;
- u8 bgColor;
- u8 shadowColor;
-};
-
-struct AlignedTextColor // because sometimes it's necessary
-{
- u8 fgColor;
- u8 bgColor;
- u8 shadowColor;
-};
-
extern u8 gStringVar1[];
extern u8 gStringVar2[];
extern u8 gStringVar3[];
diff --git a/include/title_screen.h b/include/title_screen.h
new file mode 100644
index 000000000..b660792fc
--- /dev/null
+++ b/include/title_screen.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_TITLE_SCREEN_H
+#define GUARD_TITLE_SCREEN_H
+
+extern const u16 gUnknown_0853FF70[];
+
+void CB2_InitTitleScreen(void);
+
+#endif // GUARD_TITLE_SCREEN_H
diff --git a/include/window.h b/include/window.h
index d52f07e94..1a6ff3808 100644
--- a/include/window.h
+++ b/include/window.h
@@ -52,7 +52,7 @@ void PutWindowTilemap(u8 windowId);
void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 palette);
void ClearWindowTilemap(u8 windowId);
void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height);
-void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height);
+void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height);
void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);
void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset);
diff --git a/ld_script.txt b/ld_script.txt
index 481076961..81d8cf9ca 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -62,7 +62,7 @@ SECTIONS {
src/decompress.o(.text);
asm/rom_8034C54.o(.text);
src/battle_bg.o(.text);
- src/battle_2.o(.text);
+ src/battle_main.o(.text);
src/battle_util.o(.text);
src/battle_script_commands.o(.text);
src/battle_util2.o(.text);
@@ -111,7 +111,7 @@ SECTIONS {
src/coord_event_weather.o(.text);
asm/field_tasks.o(.text);
src/clock.o(.text);
- asm/reset_rtc_screen.o(.text);
+ src/reset_rtc_screen.o(.text);
src/start_menu.o(.text);
asm/start_menu.o(.text);
src/tileset_anims.o(.text);
@@ -122,7 +122,7 @@ SECTIONS {
src/task.o(.text);
src/reshow_battle_screen.o(.text);
asm/battle_anim_80A9C70.o(.text);
- asm/title_screen.o(.text);
+ src/title_screen.o(.text);
asm/field_screen.o(.text);
src/battle_setup.o(.text);
asm/cable_club.o(.text);
@@ -232,7 +232,7 @@ SECTIONS {
asm/credits.o(.text);
src/lottery_corner.o(.text);
src/diploma.o(.text);
- asm/berry_tag_screen.o(.text);
+ src/berry_tag_screen.o(.text);
src/mystery_event_menu.o(.text);
src/save_failed_screen.o(.text);
src/braille_puzzles.o(.text);
@@ -250,15 +250,14 @@ SECTIONS {
src/battle_dome_cards.o(.text);
src/lilycove_lady.o(.text);
asm/battle_frontier_1.o(.text);
- asm/new_menu_helpers.o(.text);
- asm/menu.o(.text);
+ src/menu.o(.text);
asm/battle_frontier_2.o(.text);
asm/item_menu.o(.text);
asm/list_menu.o(.text);
asm/menu_indicators.o(.text);
src/unk_text_util.o(.text);
src/save_location.o(.text);
- asm/item_icon.o(.text);
+ src/item_icon.o(.text);
asm/party_menu.o(.text);
asm/battle_tent.o(.text);
src/unk_text_util_2.o(.text);
@@ -272,7 +271,6 @@ SECTIONS {
asm/pokemon_summary_screen.o(.text);
asm/pokenav.o(.text);
src/rayquaza_scene.o(.text);
- asm/rayquaza_scene.o(.text);
src/walda_phrase.o(.text);
asm/contest_link_81D9DE4.o(.text);
asm/trainer_rematch.o(.text);
@@ -382,7 +380,7 @@ SECTIONS {
data/main_menu.o(.rodata);
data/battle_1.o(.rodata);
data/data2b.o(.rodata);
- src/battle_2.o(.rodata);
+ src/battle_main.o(.rodata);
src/battle_util.o(.rodata);
src/battle_script_commands.o(.rodata);
src/battle_controller_player.o(.rodata);
@@ -390,6 +388,8 @@ SECTIONS {
src/battle_controller_opponent.o(.rodata);
src/battle_controller_link_opponent.o(.rodata);
data/data2c.o(.rodata);
+ src/pokemon_1.o(.rodata);
+ data/data2e.o(.rodata);
src/trig.o(.rodata);
src/util.o(.rodata);
src/daycare.o(.rodata);
@@ -414,7 +414,7 @@ SECTIONS {
src/scrcmd.o(.rodata);
src/coord_event_weather.o(.rodata);
data/field_tasks.o(.rodata);
- data/reset_rtc_screen.o(.rodata);
+ src/reset_rtc_screen.o(.rodata);
src/start_menu.o(.rodata);
src/tileset_anims.o(.rodata);
src/palette.o(.rodata);
@@ -424,12 +424,12 @@ SECTIONS {
data/rom_8525F58.o(.rodata);
data/map_events.o(.rodata);
data/battle_anim_80A9C70.o(.rodata);
- data/title_screen.o(.rodata);
+ src/title_screen.o(.rodata);
data/field_screen.o(.rodata);
src/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
src/trainer_see.o(.rodata);
- data/wild_encounter.o(.rodata);
+ src/wild_encounter.o(.rodata);
data/field_effect.o(.rodata);
src/option_menu.o(.rodata);
src/pokedex.o(.rodata);
@@ -509,7 +509,7 @@ SECTIONS {
src/lottery_corner.o(.rodata);
src/diploma.o(.rodata);
data/strings.o(.rodata);
- data/berry_tag_screen.o(.rodata);
+ src/berry_tag_screen.o(.rodata);
src/mystery_event_menu.o(.rodata);
src/save_failed_screen.o(.rodata);
data/braille_puzzles.o(.rodata);
@@ -525,12 +525,13 @@ SECTIONS {
src/battle_dome_cards.o(.rodata);
src/lilycove_lady.o(.rodata);
data/battle_frontier_1.o(.rodata);
- data/new_menu_helpers.o(.rodata);
+ src/menu.o(.rodata);
data/battle_frontier_2.o(.rodata);
data/item_menu.o(.rodata);
data/menu_indicators.o(.rodata);
src/save_location.o(.rodata);
data/item_icon.o(.rodata);
+ src/item_icon.o(.rodata);
data/party_menu.o(.rodata);
data/battle_tent.o(.rodata);
src/unk_text_util_2.o(.rodata);
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 42cf0595f..d6ccf9305 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -2,6 +2,7 @@
#include "battle_ai_script_commands.h"
#include "pokemon.h"
#include "battle.h"
+#include "battle_setup.h"
#include "constants/species.h"
#include "constants/abilities.h"
#include "random.h"
@@ -44,26 +45,7 @@ in order to read the next command correctly. refer to battle_ai_scripts.s for th
AI scripts.
*/
-extern u32 gBattleTypeFlags;
-extern u8 gActiveBank;
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u16 gCurrentMove;
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u16 gLastMoves[BATTLE_BANKS_COUNT];
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u32 gStatuses3[BATTLE_BANKS_COUNT];
-extern u16 gSideAffecting[2];
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u16 gDynamicBasePower;
-extern u8 gBattleMoveFlags;
-extern s32 gBattleMoveDamage;
-extern u8 gCritMultiplier;
-extern u16 gBattleWeather;
-
extern const struct BattleMove gBattleMoves[];
-extern const struct BaseStats gBaseStats[];
extern const u8 * const gBattleAI_ScriptsTable[];
extern u32 GetAiScriptsInRecordedBattle();
@@ -179,7 +161,7 @@ static void BattleAICmd_if_holds_item(void);
// ewram
EWRAM_DATA const u8 *gAIScriptPtr = NULL;
-EWRAM_DATA static u8 sBank_AI = 0;
+EWRAM_DATA static u8 sBattler_AI = 0;
// const rom data
@@ -352,7 +334,7 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves)
defaultScoreMoves >>= 1;
}
- moveLimitations = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ moveLimitations = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
// ignore moves that aren't possible to use
for (i = 0; i < 4; i++)
@@ -363,18 +345,18 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves)
AI_THINKING_STRUCT->simulatedRNG[i] = 100 - (Random() % 16);
}
gBattleResources->AI_ScriptsStack->size = 0;
- sBank_AI = gActiveBank;
+ sBattler_AI = gActiveBattler;
// decide a random target bank in doubles
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- gBankTarget = (Random() & BIT_MON) + (GetBankSide(gActiveBank) ^ BIT_SIDE);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget ^= BIT_MON;
+ gBattlerTarget = (Random() & BIT_FLANK) + (GetBattlerSide(gActiveBattler) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ gBattlerTarget ^= BIT_FLANK;
}
// in singles there's only one choice
else
{
- gBankTarget = sBank_AI ^ BIT_SIDE;
+ gBattlerTarget = sBattler_AI ^ BIT_SIDE;
}
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
@@ -444,7 +426,7 @@ static u8 BattleAI_ChooseMoveOrAction_Singles(void)
for (i = 1; i < 4; i++)
{
- if (gBattleMons[sBank_AI].moves[i] != 0) // emerald adds an extra move ID check for some reason.
+ if (gBattleMons[sBattler_AI].moves[i] != 0) // emerald adds an extra move ID check for some reason.
{
// in ruby, the order of these if statements are reversed.
if (currentMoveArray[0] == AI_THINKING_STRUCT->score[i])
@@ -479,7 +461,7 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
for (i = 0; i < 4; i++)
{
- if (i == sBank_AI || gBattleMons[i].hp == 0)
+ if (i == sBattler_AI || gBattleMons[i].hp == 0)
{
actionOrMoveIndex[i] = -1;
bestMovePointsForTarget[i] = -1;
@@ -491,9 +473,9 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
else
BattleAI_SetupAIData(0xF);
- gBankTarget = i;
+ gBattlerTarget = i;
- if ((i & BIT_SIDE) != (sBank_AI & BIT_SIDE))
+ if ((i & BIT_SIDE) != (sBattler_AI & BIT_SIDE))
RecordLastUsedMoveByTarget();
AI_THINKING_STRUCT->aiLogicId = 0;
@@ -521,7 +503,7 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
mostViableMovesNo = 1;
for (j = 1; j < 4; j++)
{
- if (gBattleMons[sBank_AI].moves[j] != 0)
+ if (gBattleMons[sBattler_AI].moves[j] != 0)
{
if (mostViableMovesScores[0] == AI_THINKING_STRUCT->score[j])
{
@@ -542,7 +524,7 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
bestMovePointsForTarget[i] = mostViableMovesScores[0];
// don't use a move against ally if it has less than 100 pts
- if (i == (sBank_AI ^ BIT_MON) && bestMovePointsForTarget[i] < 100)
+ if (i == (sBattler_AI ^ BIT_FLANK) && bestMovePointsForTarget[i] < 100)
{
bestMovePointsForTarget[i] = -1;
mostViableMovesScores[0] = mostViableMovesScores[0]; // needed to match
@@ -573,8 +555,8 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
}
}
- gBankTarget = mostViableTargetsArray[Random() % mostViableTargetsNo];
- return actionOrMoveIndex[gBankTarget];
+ gBattlerTarget = mostViableTargetsArray[Random() % mostViableTargetsNo];
+ return actionOrMoveIndex[gBattlerTarget];
}
static void BattleAI_DoAIProcessing(void)
@@ -587,13 +569,13 @@ static void BattleAI_DoAIProcessing(void)
break;
case AIState_SettingUp:
gAIScriptPtr = gBattleAI_ScriptsTable[AI_THINKING_STRUCT->aiLogicId]; // set AI ptr to logic ID.
- if (gBattleMons[sBank_AI].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
+ if (gBattleMons[sBattler_AI].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
{
AI_THINKING_STRUCT->moveConsidered = 0;
}
else
{
- AI_THINKING_STRUCT->moveConsidered = gBattleMons[sBank_AI].moves[AI_THINKING_STRUCT->movesetIndex];
+ AI_THINKING_STRUCT->moveConsidered = gBattleMons[sBattler_AI].moves[AI_THINKING_STRUCT->movesetIndex];
}
AI_THINKING_STRUCT->aiState++;
break;
@@ -627,18 +609,18 @@ static void RecordLastUsedMoveByTarget(void)
for (i = 0; i < 4; i++)
{
- if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastMoves[gBankTarget])
+ if (gBattleResources->battleHistory->usedMoves[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget])
break;
- if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastMoves[gBankTarget] // HACK: This redundant condition is a hack to make the asm match.
- && gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0)
+ if (gBattleResources->battleHistory->usedMoves[gBattlerTarget].moves[i] != gLastMoves[gBattlerTarget] // HACK: This redundant condition is a hack to make the asm match.
+ && gBattleResources->battleHistory->usedMoves[gBattlerTarget].moves[i] == 0)
{
- gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastMoves[gBankTarget];
+ gBattleResources->battleHistory->usedMoves[gBattlerTarget].moves[i] = gLastMoves[gBattlerTarget];
break;
}
}
}
-void ClearBankMoveHistory(u8 bank)
+void ClearBattlerMoveHistory(u8 bank)
{
s32 i;
@@ -651,7 +633,7 @@ void RecordAbilityBattle(u8 bank, u8 abilityId)
gBattleResources->battleHistory->abilities[bank] = abilityId;
}
-void ClearBankAbilityHistory(u8 bank)
+void ClearBattlerAbilityHistory(u8 bank)
{
gBattleResources->battleHistory->abilities[bank] = 0;
}
@@ -721,9 +703,9 @@ static void BattleAICmd_if_hp_less_than(void)
u16 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if ((u32)(100 * gBattleMons[bank].hp / gBattleMons[bank].maxHP) < gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
@@ -736,9 +718,9 @@ static void BattleAICmd_if_hp_more_than(void)
u16 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if ((u32)(100 * gBattleMons[bank].hp / gBattleMons[bank].maxHP) > gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
@@ -751,9 +733,9 @@ static void BattleAICmd_if_hp_equal(void)
u16 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if ((u32)(100 * gBattleMons[bank].hp / gBattleMons[bank].maxHP) == gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
@@ -766,9 +748,9 @@ static void BattleAICmd_if_hp_not_equal(void)
u16 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if ((u32)(100 * gBattleMons[bank].hp / gBattleMons[bank].maxHP) != gAIScriptPtr[2])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
@@ -782,9 +764,9 @@ static void BattleAICmd_if_status(void)
u32 status;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
status = AIScriptRead32(gAIScriptPtr + 2);
@@ -800,9 +782,9 @@ static void BattleAICmd_if_not_status(void)
u32 status;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
status = AIScriptRead32(gAIScriptPtr + 2);
@@ -818,9 +800,9 @@ static void BattleAICmd_if_status2(void)
u32 status;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
status = AIScriptRead32(gAIScriptPtr + 2);
@@ -836,9 +818,9 @@ static void BattleAICmd_if_not_status2(void)
u32 status;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
status = AIScriptRead32(gAIScriptPtr + 2);
@@ -854,9 +836,9 @@ static void BattleAICmd_if_status3(void)
u32 status;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
status = AIScriptRead32(gAIScriptPtr + 2);
@@ -872,9 +854,9 @@ static void BattleAICmd_if_not_status3(void)
u32 status;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
status = AIScriptRead32(gAIScriptPtr + 2);
@@ -890,14 +872,14 @@ static void BattleAICmd_if_side_affecting(void)
u32 side, status;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
- side = GET_BANK_SIDE(bank);
+ side = GET_BATTLER_SIDE(bank);
status = AIScriptRead32(gAIScriptPtr + 2);
- if ((gSideAffecting[side] & status) != 0)
+ if ((gSideStatuses[side] & status) != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -909,14 +891,14 @@ static void BattleAICmd_if_not_side_affecting(void)
u32 side, status;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
- side = GET_BANK_SIDE(bank);
+ side = GET_BATTLER_SIDE(bank);
status = AIScriptRead32(gAIScriptPtr + 2);
- if ((gSideAffecting[side] & status) == 0)
+ if ((gSideStatuses[side] & status) == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 6);
else
gAIScriptPtr += 10;
@@ -1084,8 +1066,8 @@ static void BattleAICmd_if_user_has_attacking_move(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[sBank_AI].moves[i] != 0
- && gBattleMoves[gBattleMons[sBank_AI].moves[i]].power != 0)
+ if (gBattleMons[sBattler_AI].moves[i] != 0
+ && gBattleMoves[gBattleMons[sBattler_AI].moves[i]].power != 0)
break;
}
if (i == 4)
@@ -1100,8 +1082,8 @@ static void BattleAICmd_if_user_has_no_attacking_moves(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[sBank_AI].moves[i] != 0
- && gBattleMoves[gBattleMons[sBank_AI].moves[i]].power != 0)
+ if (gBattleMons[sBattler_AI].moves[i] != 0
+ && gBattleMoves[gBattleMons[sBattler_AI].moves[i]].power != 0)
break;
}
if (i != 4)
@@ -1123,16 +1105,16 @@ static void BattleAICmd_get_type(void)
switch (typeVar)
{
case AI_TYPE1_USER: // AI user primary type
- AI_THINKING_STRUCT->funcResult = gBattleMons[sBank_AI].type1;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[sBattler_AI].type1;
break;
case AI_TYPE1_TARGET: // target primary type
- AI_THINKING_STRUCT->funcResult = gBattleMons[gBankTarget].type1;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type1;
break;
case AI_TYPE2_USER: // AI user secondary type
- AI_THINKING_STRUCT->funcResult = gBattleMons[sBank_AI].type2;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[sBattler_AI].type2;
break;
case AI_TYPE2_TARGET: // target secondary type
- AI_THINKING_STRUCT->funcResult = gBattleMons[gBankTarget].type2;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type2;
break;
case AI_TYPE_MOVE: // type of move being pointed to
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].type;
@@ -1146,14 +1128,14 @@ static u8 BattleAI_GetWantedBank(u8 bank)
switch (bank)
{
case AI_USER:
- return sBank_AI;
+ return sBattler_AI;
case AI_TARGET:
default:
- return gBankTarget;
+ return gBattlerTarget;
case AI_USER_PARTNER:
- return sBank_AI ^ BIT_MON;
+ return sBattler_AI ^ BIT_FLANK;
case AI_TARGET_PARTNER:
- return gBankTarget ^ BIT_MON;
+ return gBattlerTarget ^ BIT_FLANK;
}
}
@@ -1196,24 +1178,24 @@ static void BattleAICmd_get_how_powerful_move_is(void)
gDynamicBasePower = 0;
*(&gBattleStruct->dynamicMoveType) = 0;
gBattleScripting.dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
for (checkedMove = 0; checkedMove < 4; checkedMove++)
{
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
{
- if (gBattleMoves[gBattleMons[sBank_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
+ if (gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
break;
}
- if (gBattleMons[sBank_AI].moves[checkedMove] != MOVE_NONE
+ if (gBattleMons[sBattler_AI].moves[checkedMove] != MOVE_NONE
&& sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
- && gBattleMoves[gBattleMons[sBank_AI].moves[checkedMove]].power > 1)
+ && gBattleMoves[gBattleMons[sBattler_AI].moves[checkedMove]].power > 1)
{
- gCurrentMove = gBattleMons[sBank_AI].moves[checkedMove];
- AI_CalcDmg(sBank_AI, gBankTarget);
- TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
+ gCurrentMove = gBattleMons[sBattler_AI].moves[checkedMove];
+ AI_CalcDmg(sBattler_AI, gBattlerTarget);
+ TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget);
moveDmgs[checkedMove] = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[checkedMove] / 100;
if (moveDmgs[checkedMove] == 0)
moveDmgs[checkedMove] = 1;
@@ -1246,9 +1228,9 @@ static void BattleAICmd_get_how_powerful_move_is(void)
static void BattleAICmd_get_last_used_bank_move(void)
{
if (gAIScriptPtr[1] == AI_USER)
- AI_THINKING_STRUCT->funcResult = gLastMoves[sBank_AI];
+ AI_THINKING_STRUCT->funcResult = gLastMoves[sBattler_AI];
else
- AI_THINKING_STRUCT->funcResult = gLastMoves[gBankTarget];
+ AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerTarget];
gAIScriptPtr += 2;
}
@@ -1271,7 +1253,7 @@ static void BattleAICmd_if_not_equal_(void) // same as if_not_equal
static void BattleAICmd_if_user_goes(void)
{
- if (GetWhoStrikesFirst(sBank_AI, gBankTarget, TRUE) == gAIScriptPtr[1])
+ if (GetWhoStrikesFirst(sBattler_AI, gBattlerTarget, TRUE) == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1279,7 +1261,7 @@ static void BattleAICmd_if_user_goes(void)
static void BattleAICmd_if_user_doesnt_go(void)
{
- if (GetWhoStrikesFirst(sBank_AI, gBankTarget, TRUE) != gAIScriptPtr[1])
+ if (GetWhoStrikesFirst(sBattler_AI, gBattlerTarget, TRUE) != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1303,26 +1285,26 @@ static void BattleAICmd_count_usable_party_mons(void)
AI_THINKING_STRUCT->funcResult = 0;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(bank) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- u32 identity;
- bankOnField1 = gBattlePartyID[bank];
- identity = GetBankIdentity(bank) ^ BIT_MON;
- bankOnField2 = gBattlePartyID[GetBankByIdentity(identity)];
+ u32 position;
+ bankOnField1 = gBattlerPartyIndexes[bank];
+ position = GetBattlerPosition(bank) ^ BIT_FLANK;
+ bankOnField2 = gBattlerPartyIndexes[GetBattlerAtPosition(position)];
}
else // in singles there's only one bank by side
{
- bankOnField1 = gBattlePartyID[bank];
- bankOnField2 = gBattlePartyID[bank];
+ bankOnField1 = gBattlerPartyIndexes[bank];
+ bankOnField2 = gBattlerPartyIndexes[bank];
}
for (i = 0; i < PARTY_SIZE; i++)
@@ -1356,11 +1338,11 @@ static void BattleAICmd_get_ability(void)
u8 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
- if (gActiveBank != bank)
+ if (gActiveBattler != bank)
{
if (BATTLE_HISTORY->abilities[bank] != 0)
{
@@ -1482,18 +1464,18 @@ static void BattleAICmd_get_highest_type_effectiveness(void)
dynamicMoveType = &gBattleStruct->dynamicMoveType;
*dynamicMoveType = 0;
gBattleScripting.dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
AI_THINKING_STRUCT->funcResult = 0;
for (i = 0; i < 4; i++)
{
gBattleMoveDamage = AI_EFFECTIVENESS_x1;
- gCurrentMove = gBattleMons[sBank_AI].moves[i];
+ gCurrentMove = gBattleMons[sBattler_AI].moves[i];
if (gCurrentMove)
{
- TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
+ TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget);
// reduce by 1/3.
if (gBattleMoveDamage == 120)
@@ -1505,7 +1487,7 @@ static void BattleAICmd_get_highest_type_effectiveness(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = AI_EFFECTIVENESS_x0_25;
- if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
gBattleMoveDamage = AI_EFFECTIVENESS_x0;
if (AI_THINKING_STRUCT->funcResult < gBattleMoveDamage)
@@ -1522,13 +1504,13 @@ static void BattleAICmd_if_type_effectiveness(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleScripting.dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gBattleMoveDamage = AI_EFFECTIVENESS_x1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
- TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
+ TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget);
if (gBattleMoveDamage == 120)
gBattleMoveDamage = AI_EFFECTIVENESS_x2;
@@ -1539,7 +1521,7 @@ static void BattleAICmd_if_type_effectiveness(void)
if (gBattleMoveDamage == 15)
gBattleMoveDamage = AI_EFFECTIVENESS_x0_25;
- if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
gBattleMoveDamage = AI_EFFECTIVENESS_x0;
// store gBattleMoveDamage in a u8 variable because gAIScriptPtr[1] is a u8.
@@ -1569,14 +1551,14 @@ static void BattleAICmd_if_status_in_party(void)
switch(gAIScriptPtr[1])
{
case AI_USER:
- bank = sBank_AI;
+ bank = sBattler_AI;
break;
default:
- bank = gBankTarget;
+ bank = gBattlerTarget;
break;
}
- party = (GetBankSide(bank) == SIDE_PLAYER) ? gPlayerParty : gEnemyParty;
+ party = (GetBattlerSide(bank) == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty;
statusToCompareTo = AIScriptRead32(gAIScriptPtr + 2);
@@ -1606,14 +1588,14 @@ static void BattleAICmd_if_status_not_in_party(void)
switch(gAIScriptPtr[1])
{
case 1:
- bank = sBank_AI;
+ bank = sBattler_AI;
break;
default:
- bank = gBankTarget;
+ bank = gBattlerTarget;
break;
}
- party = (GetBankSide(bank) == SIDE_PLAYER) ? gPlayerParty : gEnemyParty;
+ party = (GetBattlerSide(bank) == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty;
statusToCompareTo = AIScriptRead32(gAIScriptPtr + 2);
@@ -1667,9 +1649,9 @@ static void BattleAICmd_if_stat_level_less_than(void)
u32 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if (gBattleMons[bank].statStages[gAIScriptPtr[2]] < gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
@@ -1682,9 +1664,9 @@ static void BattleAICmd_if_stat_level_more_than(void)
u32 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if (gBattleMons[bank].statStages[gAIScriptPtr[2]] > gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
@@ -1697,9 +1679,9 @@ static void BattleAICmd_if_stat_level_equal(void)
u32 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if (gBattleMons[bank].statStages[gAIScriptPtr[2]] == gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
@@ -1712,9 +1694,9 @@ static void BattleAICmd_if_stat_level_not_equal(void)
u32 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if (gBattleMons[bank].statStages[gAIScriptPtr[2]] != gAIScriptPtr[3])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 4);
@@ -1733,11 +1715,11 @@ static void BattleAICmd_if_can_faint(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleScripting.dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
- AI_CalcDmg(sBank_AI, gBankTarget);
- TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
+ AI_CalcDmg(sBattler_AI, gBattlerTarget);
+ TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget);
gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
@@ -1745,7 +1727,7 @@ static void BattleAICmd_if_can_faint(void)
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[gBankTarget].hp <= gBattleMoveDamage)
+ if (gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1762,17 +1744,17 @@ static void BattleAICmd_if_cant_faint(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleScripting.dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
- AI_CalcDmg(sBank_AI, gBankTarget);
- TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
+ AI_CalcDmg(sBattler_AI, gBattlerTarget);
+ TypeCalc(gCurrentMove, sBattler_AI, gBattlerTarget);
gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100;
// this macro is missing the damage 0 = 1 assumption.
- if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -1788,7 +1770,7 @@ static void BattleAICmd_if_has_move(void)
case AI_USER:
for (i = 0; i < 4; i++)
{
- if (gBattleMons[sBank_AI].moves[i] == *movePtr)
+ if (gBattleMons[sBattler_AI].moves[i] == *movePtr)
break;
}
if (i == 4)
@@ -1802,7 +1784,7 @@ static void BattleAICmd_if_has_move(void)
return;
}
case AI_USER_PARTNER:
- if (gBattleMons[sBank_AI ^ BIT_MON].hp == 0)
+ if (gBattleMons[sBattler_AI ^ BIT_FLANK].hp == 0)
{
gAIScriptPtr += 8;
return;
@@ -1811,7 +1793,7 @@ static void BattleAICmd_if_has_move(void)
{
for (i = 0; i < 4; i++)
{
- if (gBattleMons[sBank_AI ^ BIT_MON].moves[i] == *movePtr)
+ if (gBattleMons[sBattler_AI ^ BIT_FLANK].moves[i] == *movePtr)
break;
}
}
@@ -1829,7 +1811,7 @@ static void BattleAICmd_if_has_move(void)
case AI_TARGET_PARTNER:
for (i = 0; i < 4; i++)
{
- if (BATTLE_HISTORY->usedMoves[gBankTarget].moves[i] == *movePtr)
+ if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == *movePtr)
break;
}
if (i == 4)
@@ -1856,7 +1838,7 @@ static void BattleAICmd_if_doesnt_have_move(void)
case AI_USER_PARTNER: // UB: no separate check for user partner
for (i = 0; i < 4; i++)
{
- if (gBattleMons[sBank_AI].moves[i] == *movePtr)
+ if (gBattleMons[sBattler_AI].moves[i] == *movePtr)
break;
}
if (i != 4)
@@ -1873,7 +1855,7 @@ static void BattleAICmd_if_doesnt_have_move(void)
case AI_TARGET_PARTNER:
for (i = 0; i < 4; i++)
{
- if (BATTLE_HISTORY->usedMoves[gBankTarget].moves[i] == *movePtr)
+ if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] == *movePtr)
break;
}
if (i != 4)
@@ -1899,7 +1881,7 @@ static void BattleAICmd_if_has_move_with_effect(void)
case AI_USER_PARTNER:
for (i = 0; i < 4; i++)
{
- if (gBattleMons[sBank_AI].moves[i] != 0 && gBattleMoves[gBattleMons[sBank_AI].moves[i]].effect == gAIScriptPtr[2])
+ if (gBattleMons[sBattler_AI].moves[i] != 0 && gBattleMoves[gBattleMons[sBattler_AI].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i == 4)
@@ -1911,8 +1893,8 @@ static void BattleAICmd_if_has_move_with_effect(void)
case AI_TARGET_PARTNER:
for (i = 0; i < 4; i++)
{
- // UB: checks sBank_AI instead of gBankTarget
- if (gBattleMons[sBank_AI].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBankTarget].moves[i]].effect == gAIScriptPtr[2])
+ // UB: checks sBattler_AI instead of gBattlerTarget
+ if (gBattleMons[sBattler_AI].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i == 4)
@@ -1933,7 +1915,7 @@ static void BattleAICmd_if_doesnt_have_move_with_effect(void)
case AI_USER_PARTNER:
for (i = 0; i < 4; i++)
{
- if(gBattleMons[sBank_AI].moves[i] != 0 && gBattleMoves[gBattleMons[sBank_AI].moves[i]].effect == gAIScriptPtr[2])
+ if(gBattleMons[sBattler_AI].moves[i] != 0 && gBattleMoves[gBattleMons[sBattler_AI].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i != 4)
@@ -1945,7 +1927,7 @@ static void BattleAICmd_if_doesnt_have_move_with_effect(void)
case AI_TARGET_PARTNER:
for (i = 0; i < 4; i++)
{
- if (BATTLE_HISTORY->usedMoves[gBankTarget].moves[i] && gBattleMoves[BATTLE_HISTORY->usedMoves[gBankTarget].moves[i]].effect == gAIScriptPtr[2])
+ if (BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i] && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget].moves[i]].effect == gAIScriptPtr[2])
break;
}
if (i != 4)
@@ -1961,9 +1943,9 @@ static void BattleAICmd_if_any_move_disabled_or_encored(void)
u8 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
if (gAIScriptPtr[2] == 0)
{
@@ -1993,7 +1975,7 @@ static void BattleAICmd_if_curr_move_disabled_or_encored(void)
switch (gAIScriptPtr[1])
{
case 0:
- if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBattler].disabledMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2001,7 +1983,7 @@ static void BattleAICmd_if_curr_move_disabled_or_encored(void)
gAIScriptPtr += 6;
return;
case 1:
- if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBattler].encoredMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2039,11 +2021,11 @@ static void BattleAICmd_get_hold_effect(void)
u8 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
- if (gActiveBank != bank)
+ if (gActiveBattler != bank)
AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(BATTLE_HISTORY->itemEffects[bank]);
else
AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[bank].item);
@@ -2057,7 +2039,7 @@ static void BattleAICmd_if_holds_item(void)
u16 item;
u8 var1, var2;
- if ((bank & BIT_SIDE) == (sBank_AI & BIT_SIDE))
+ if ((bank & BIT_SIDE) == (sBattler_AI & BIT_SIDE))
item = gBattleMons[bank].item;
else
item = BATTLE_HISTORY->itemEffects[bank];
@@ -2077,9 +2059,9 @@ static void BattleAICmd_get_gender(void)
u8 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
AI_THINKING_STRUCT->funcResult = GetGenderFromSpeciesAndPersonality(gBattleMons[bank].species, gBattleMons[bank].personality);
@@ -2091,9 +2073,9 @@ static void BattleAICmd_is_first_turn_for(void)
u8 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
AI_THINKING_STRUCT->funcResult = gDisableStructs[bank].isFirstTurn;
@@ -2105,9 +2087,9 @@ static void BattleAICmd_get_stockpile_count(void)
u8 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
AI_THINKING_STRUCT->funcResult = gDisableStructs[bank].stockpileCounter;
@@ -2126,9 +2108,9 @@ static void BattleAICmd_get_used_held_item(void)
u8 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
// This is likely a leftover from Ruby's code and its ugly ewram access
#ifdef NONMATCHING
@@ -2166,9 +2148,9 @@ static void BattleAICmd_get_protect_count(void)
u8 bank;
if (gAIScriptPtr[1] == AI_USER)
- bank = sBank_AI;
+ bank = sBattler_AI;
else
- bank = gBankTarget;
+ bank = gBattlerTarget;
AI_THINKING_STRUCT->funcResult = gDisableStructs[bank].protectUses;
@@ -2221,7 +2203,7 @@ static void BattleAICmd_if_level_cond(void)
switch (gAIScriptPtr[1])
{
case 0: // greater than
- if (gBattleMons[sBank_AI].level > gBattleMons[gBankTarget].level)
+ if (gBattleMons[sBattler_AI].level > gBattleMons[gBattlerTarget].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2229,7 +2211,7 @@ static void BattleAICmd_if_level_cond(void)
gAIScriptPtr += 6;
return;
case 1: // less than
- if (gBattleMons[sBank_AI].level < gBattleMons[gBankTarget].level)
+ if (gBattleMons[sBattler_AI].level < gBattleMons[gBattlerTarget].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2237,7 +2219,7 @@ static void BattleAICmd_if_level_cond(void)
gAIScriptPtr += 6;
return;
case 2: // equal
- if (gBattleMons[sBank_AI].level == gBattleMons[gBankTarget].level)
+ if (gBattleMons[sBattler_AI].level == gBattleMons[gBattlerTarget].level)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -2249,7 +2231,7 @@ static void BattleAICmd_if_level_cond(void)
static void BattleAICmd_if_target_taunted(void)
{
- if (gDisableStructs[gBankTarget].tauntTimer1 != 0)
+ if (gDisableStructs[gBattlerTarget].tauntTimer1 != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -2257,7 +2239,7 @@ static void BattleAICmd_if_target_taunted(void)
static void BattleAICmd_if_target_not_taunted(void)
{
- if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
+ if (gDisableStructs[gBattlerTarget].tauntTimer1 == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -2265,7 +2247,7 @@ static void BattleAICmd_if_target_not_taunted(void)
static void BattleAICmd_if_target_is_ally(void)
{
- if ((sBank_AI & BIT_SIDE) == (gBankTarget & BIT_SIDE))
+ if ((sBattler_AI & BIT_SIDE) == (gBattlerTarget & BIT_SIDE))
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index b3fccb17f..b0fcc2e29 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -10,21 +10,7 @@
#include "constants/items.h"
#include "pokemon_item_effects.h"
-extern u8 gActiveBank;
-extern u8 gAbsentBankFlags;
-extern u32 gBattleTypeFlags;
-extern u32 gStatuses3[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT];
-extern u8 gLastHitBy[BATTLE_BANKS_COUNT];
-extern u16 gDynamicBasePower;
-extern u8 gBattleMoveFlags;
-extern u8 gCritMultiplier;
-extern s32 gBattleMoveDamage;
-
extern const struct BattleMove gBattleMoves[];
-extern const struct BaseStats gBaseStats[];
extern const u8 gTypeEffectiveness[];
extern const u8 * const gItemEffectTable[]; // todo: fix once struct is declared
@@ -35,11 +21,11 @@ static bool8 ShouldUseItem(void);
static bool8 ShouldSwitchIfPerishSong(void)
{
- if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG
- && gDisableStructs[gActiveBank].perishSongTimer1 == 0)
+ if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG
+ && gDisableStructs[gActiveBattler].perishSongTimer1 == 0)
{
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
- EmitTwoReturnValues(1, ACTION_SWITCH, 0);
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -48,7 +34,7 @@ static bool8 ShouldSwitchIfPerishSong(void)
static bool8 ShouldSwitchIfWonderGuard(void)
{
- u8 opposingIdentity;
+ u8 opposingPosition;
u8 opposingBank;
u8 moveFlags;
s32 i, j;
@@ -60,27 +46,27 @@ static bool8 ShouldSwitchIfWonderGuard(void)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
return FALSE;
- opposingIdentity = GetBankIdentity(gActiveBank) ^ BIT_SIDE;
+ opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler));
- if (gBattleMons[GetBankByIdentity(opposingIdentity)].ability != ABILITY_WONDER_GUARD)
+ if (gBattleMons[GetBattlerAtPosition(opposingPosition)].ability != ABILITY_WONDER_GUARD)
return FALSE;
// check if pokemon has a super effective move
- for (opposingBank = GetBankByIdentity(opposingIdentity), i = 0; i < 4; i++)
+ for (opposingBank = GetBattlerAtPosition(opposingPosition), i = 0; i < 4; i++)
{
- move = gBattleMons[gActiveBank].moves[i];
+ move = gBattleMons[gActiveBattler].moves[i];
if (move == MOVE_NONE)
continue;
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
- if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
return FALSE;
}
// get party information
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if ((gActiveBank & BIT_MON) == 0)
+ if ((gActiveBattler & BIT_FLANK) == 0)
firstId = 0, lastId = 3;
else
firstId = 3, lastId = 6;
@@ -90,7 +76,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
firstId = 0, lastId = 6;
}
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -104,24 +90,24 @@ static bool8 ShouldSwitchIfWonderGuard(void)
continue;
if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
continue;
- if (i == gBattlePartyID[gActiveBank])
+ if (i == gBattlerPartyIndexes[gActiveBattler])
continue;
GetMonData(&party[i], MON_DATA_SPECIES); // unused return value
GetMonData(&party[i], MON_DATA_ALT_ABILITY); // unused return value
- for (opposingBank = GetBankByIdentity(opposingIdentity), j = 0; j < 4; j++)
+ for (opposingBank = GetBattlerAtPosition(opposingPosition), j = 0; j < 4; j++)
{
move = GetMonData(&party[i], MON_DATA_MOVE1 + j);
if (move == MOVE_NONE)
continue;
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
- if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % 3 < 2)
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % 3 < 2)
{
// we found a mon
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = i;
- EmitTwoReturnValues(1, ACTION_SWITCH, 0);
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -141,42 +127,42 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0)
return FALSE;
- if (gLastLandedMoves[gActiveBank] == 0)
+ if (gLastLandedMoves[gActiveBattler] == 0)
return FALSE;
- if (gLastLandedMoves[gActiveBank] == 0xFFFF)
+ if (gLastLandedMoves[gActiveBattler] == 0xFFFF)
return FALSE;
- if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0)
+ if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- bankIn1 = gActiveBank;
- if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
- bankIn2 = gActiveBank;
+ bankIn1 = gActiveBattler;
+ if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))])
+ bankIn2 = gActiveBattler;
else
- bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+ bankIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)));
}
else
{
- bankIn1 = gActiveBank;
- bankIn2 = gActiveBank;
+ bankIn1 = gActiveBattler;
+ bankIn2 = gActiveBattler;
}
- if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_FIRE)
+ if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_FIRE)
absorbingTypeAbility = ABILITY_FLASH_FIRE;
- else if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_WATER)
+ else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_WATER)
absorbingTypeAbility = ABILITY_WATER_ABSORB;
- else if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_ELECTRIC)
+ else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].type == TYPE_ELECTRIC)
absorbingTypeAbility = ABILITY_VOLT_ABSORB;
else
return FALSE;
- if (gBattleMons[gActiveBank].ability == absorbingTypeAbility)
+ if (gBattleMons[gActiveBattler].ability == absorbingTypeAbility)
return FALSE;
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if ((gActiveBank & BIT_MON) == 0)
+ if ((gActiveBattler & BIT_FLANK) == 0)
firstId = 0, lastId = 3;
else
firstId = 3, lastId = 6;
@@ -186,7 +172,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
firstId = 0, lastId = 6;
}
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -202,9 +188,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
continue;
if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
continue;
- if (i == gBattlePartyID[bankIn1])
+ if (i == gBattlerPartyIndexes[bankIn1])
continue;
- if (i == gBattlePartyID[bankIn2])
+ if (i == gBattlerPartyIndexes[bankIn2])
continue;
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1))
continue;
@@ -220,8 +206,8 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
if (absorbingTypeAbility == monAbility && Random() & 1)
{
// we found a mon
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = i;
- EmitTwoReturnValues(1, ACTION_SWITCH, 0);
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -231,34 +217,34 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
static bool8 ShouldSwitchIfNaturalCure(void)
{
- if (!(gBattleMons[gActiveBank].status1 & STATUS_SLEEP))
+ if (!(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP))
return FALSE;
- if (gBattleMons[gActiveBank].ability != ABILITY_NATURAL_CURE)
+ if (gBattleMons[gActiveBattler].ability != ABILITY_NATURAL_CURE)
return FALSE;
- if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2)
+ if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 2)
return FALSE;
- if ((gLastLandedMoves[gActiveBank] == 0 || gLastLandedMoves[gActiveBank] == 0xFFFF) && Random() & 1)
+ if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1)
{
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
- EmitTwoReturnValues(1, ACTION_SWITCH, 0);
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
- else if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0 && Random() & 1)
+ else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
{
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
- EmitTwoReturnValues(1, ACTION_SWITCH, 0);
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
- if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 1))
+ if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 1))
return TRUE;
- if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 1))
+ if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 1))
return TRUE;
if (Random() & 1)
{
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
- EmitTwoReturnValues(1, ACTION_SWITCH, 0);
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
@@ -267,25 +253,25 @@ static bool8 ShouldSwitchIfNaturalCure(void)
static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
{
- u8 opposingIdentity;
+ u8 opposingPosition;
u8 opposingBank;
s32 i;
u8 moveFlags;
u16 move;
- opposingIdentity = GetBankIdentity(gActiveBank) ^ BIT_SIDE;
- opposingBank = GetBankByIdentity(opposingIdentity);
+ opposingPosition = BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler));
+ opposingBank = GetBattlerAtPosition(opposingPosition);
- if (!(gAbsentBankFlags & gBitTable[opposingBank]))
+ if (!(gAbsentBattlerFlags & gBitTable[opposingBank]))
{
for (i = 0; i < 4; i++)
{
- move = gBattleMons[gActiveBank].moves[i];
+ move = gBattleMons[gActiveBattler].moves[i];
if (move == MOVE_NONE)
continue;
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
- if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
{
if (noRng)
return TRUE;
@@ -297,18 +283,18 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
return FALSE;
- opposingBank = GetBankByIdentity(opposingIdentity ^ BIT_MON);
+ opposingBank = GetBattlerAtPosition(BATTLE_PARTNER(opposingPosition));
- if (!(gAbsentBankFlags & gBitTable[opposingBank]))
+ if (!(gAbsentBattlerFlags & gBitTable[opposingBank]))
{
for (i = 0; i < 4; i++)
{
- move = gBattleMons[gActiveBank].moves[i];
+ move = gBattleMons[gActiveBattler].moves[i];
if (move == MOVE_NONE)
continue;
moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
- if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE)
{
if (noRng)
return TRUE;
@@ -328,8 +314,8 @@ static bool8 AreStatsRaised(void)
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- if (gBattleMons[gActiveBank].statStages[i] > 6)
- buffedStatsValue += gBattleMons[gActiveBank].statStages[i] - 6;
+ if (gBattleMons[gActiveBattler].statStages[i] > 6)
+ buffedStatsValue += gBattleMons[gActiveBattler].statStages[i] - 6;
}
return (buffedStatsValue > 3);
@@ -345,32 +331,32 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
u16 move;
u8 moveFlags;
- if (gLastLandedMoves[gActiveBank] == 0)
+ if (gLastLandedMoves[gActiveBattler] == 0)
return FALSE;
- if (gLastLandedMoves[gActiveBank] == 0xFFFF)
+ if (gLastLandedMoves[gActiveBattler] == 0xFFFF)
return FALSE;
- if (gLastHitBy[gActiveBank] == 0xFF)
+ if (gLastHitBy[gActiveBattler] == 0xFF)
return FALSE;
- if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0)
+ if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- bankIn1 = gActiveBank;
- if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
- bankIn2 = gActiveBank;
+ bankIn1 = gActiveBattler;
+ if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))])
+ bankIn2 = gActiveBattler;
else
- bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+ bankIn2 = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)));
}
else
{
- bankIn1 = gActiveBank;
- bankIn2 = gActiveBank;
+ bankIn1 = gActiveBattler;
+ bankIn2 = gActiveBattler;
}
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if ((gActiveBank & BIT_MON) == 0)
+ if ((gActiveBattler & BIT_FLANK) == 0)
firstId = 0, lastId = 3;
else
firstId = 3, lastId = 6;
@@ -380,7 +366,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
firstId = 0, lastId = 6;
}
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -396,9 +382,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
continue;
if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
continue;
- if (i == gBattlePartyID[bankIn1])
+ if (i == gBattlerPartyIndexes[bankIn1])
continue;
- if (i == gBattlePartyID[bankIn2])
+ if (i == gBattlerPartyIndexes[bankIn2])
continue;
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1))
continue;
@@ -411,10 +397,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
else
monAbility = gBaseStats[species].ability1;
- moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBank], species, monAbility);
+ moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBattler], species, monAbility);
if (moveFlags & flags)
{
- bankIn1 = gLastHitBy[gActiveBank];
+ bankIn1 = gLastHitBy[gActiveBattler];
for (j = 0; j < 4; j++)
{
@@ -423,10 +409,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
continue;
moveFlags = AI_TypeCalc(move, gBattleMons[bankIn1].species, gBattleMons[bankIn1].ability);
- if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % moduloPercent == 0)
+ if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0)
{
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = i;
- EmitTwoReturnValues(1, ACTION_SWITCH, 0);
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
return TRUE;
}
}
@@ -446,19 +432,19 @@ static bool8 ShouldSwitch(void)
s32 i;
s32 availableToSwitch;
- if (gBattleMons[*(activeBankPtr = &gActiveBank)].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ if (gBattleMons[*(activeBankPtr = &gActiveBattler)].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
return FALSE;
- if (gStatuses3[gActiveBank] & STATUS3_ROOTED)
+ if (gStatuses3[gActiveBattler] & STATUS3_ROOTED)
return FALSE;
- if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_SHADOW_TAG, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_SHADOW_TAG, 0, 0))
return FALSE;
- if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_ARENA_TRAP, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_ARENA_TRAP, 0, 0))
return FALSE; // misses the flying or levitate check
if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MAGNET_PULL, 0, 0))
{
- if (gBattleMons[gActiveBank].type1 == TYPE_STEEL)
+ if (gBattleMons[gActiveBattler].type1 == TYPE_STEEL)
return FALSE;
- if (gBattleMons[gActiveBank].type2 == TYPE_STEEL)
+ if (gBattleMons[gActiveBattler].type2 == TYPE_STEEL)
return FALSE;
}
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
@@ -468,10 +454,10 @@ static bool8 ShouldSwitch(void)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
bankIn1 = *activeBankPtr;
- if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(*activeBankPtr) ^ BIT_MON)])
+ if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(*activeBankPtr) ^ BIT_FLANK)])
bankIn2 = *activeBankPtr;
else
- bankIn2 = GetBankByIdentity(GetBankIdentity(*activeBankPtr) ^ BIT_MON);
+ bankIn2 = GetBattlerAtPosition(GetBattlerPosition(*activeBankPtr) ^ BIT_FLANK);
}
else
{
@@ -481,7 +467,7 @@ static bool8 ShouldSwitch(void)
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if ((gActiveBank & BIT_MON) == 0)
+ if ((gActiveBattler & BIT_FLANK) == 0)
firstId = 0, lastId = 3;
else
firstId = 3, lastId = 6;
@@ -491,7 +477,7 @@ static bool8 ShouldSwitch(void)
firstId = 0, lastId = 6;
}
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -504,9 +490,9 @@ static bool8 ShouldSwitch(void)
continue;
if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
continue;
- if (i == gBattlePartyID[bankIn1])
+ if (i == gBattlerPartyIndexes[bankIn1])
continue;
- if (i == gBattlePartyID[bankIn2])
+ if (i == gBattlerPartyIndexes[bankIn2])
continue;
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1))
continue;
@@ -530,8 +516,8 @@ static bool8 ShouldSwitch(void)
return FALSE;
if (AreStatsRaised())
return FALSE;
- if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 2)
- || FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 3))
+ if (FindMonWithFlagsAndSuperEffective(MOVE_RESULT_DOESNT_AFFECT_FOE, 2)
+ || FindMonWithFlagsAndSuperEffective(MOVE_RESULT_NOT_VERY_EFFECTIVE, 3))
return TRUE;
return FALSE;
@@ -543,9 +529,9 @@ void AI_TrySwitchOrUseItem(void)
u8 bankIn1, bankIn2;
s32 firstId;
s32 lastId; // + 1
- u8 bankIdentity = GetBankIdentity(gActiveBank);
+ u8 bankIdentity = GetBattlerPosition(gActiveBattler);
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -554,25 +540,25 @@ void AI_TrySwitchOrUseItem(void)
{
if (ShouldSwitch())
{
- if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) == 6)
+ if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == 6)
{
s32 monToSwitchId = GetMostSuitableMonToSwitchInto();
if (monToSwitchId == 6)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- bankIn1 = GetBankByIdentity(bankIdentity);
+ bankIn1 = GetBattlerAtPosition(bankIdentity);
bankIn2 = bankIn1;
}
else
{
- bankIn1 = GetBankByIdentity(bankIdentity);
- bankIn2 = GetBankByIdentity(bankIdentity ^ BIT_MON);
+ bankIn1 = GetBattlerAtPosition(bankIdentity);
+ bankIn2 = GetBattlerAtPosition(bankIdentity ^ BIT_FLANK);
}
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if ((gActiveBank & BIT_MON) == 0)
+ if ((gActiveBattler & BIT_FLANK) == 0)
firstId = 0, lastId = 3;
else
firstId = 3, lastId = 6;
@@ -586,9 +572,9 @@ void AI_TrySwitchOrUseItem(void)
{
if (GetMonData(&party[monToSwitchId], MON_DATA_HP) == 0)
continue;
- if (monToSwitchId == gBattlePartyID[bankIn1])
+ if (monToSwitchId == gBattlerPartyIndexes[bankIn1])
continue;
- if (monToSwitchId == gBattlePartyID[bankIn2])
+ if (monToSwitchId == gBattlerPartyIndexes[bankIn2])
continue;
if (monToSwitchId == *(gBattleStruct->monToSwitchIntoId + bankIn1))
continue;
@@ -599,10 +585,10 @@ void AI_TrySwitchOrUseItem(void)
}
}
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = monToSwitchId;
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = monToSwitchId;
}
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank);
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler);
return;
}
else if (ShouldUseItem())
@@ -611,7 +597,7 @@ void AI_TrySwitchOrUseItem(void)
}
}
- EmitTwoReturnValues(1, ACTION_USE_MOVE, (gActiveBank ^ BIT_SIDE) << 8);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8);
}
static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var)
@@ -651,34 +637,34 @@ u8 GetMostSuitableMonToSwitchInto(void)
u8 invalidMons;
u16 move;
- if (*(gBattleStruct->monToSwitchIntoId + gActiveBank) != 6)
- return *(gBattleStruct->monToSwitchIntoId + gActiveBank);
+ if (*(gBattleStruct->monToSwitchIntoId + gActiveBattler) != 6)
+ return *(gBattleStruct->monToSwitchIntoId + gActiveBattler);
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
- return gBattlePartyID[gActiveBank] + 1;
+ return gBattlerPartyIndexes[gActiveBattler] + 1;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- bankIn1 = gActiveBank;
- if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
- bankIn2 = gActiveBank;
+ bankIn1 = gActiveBattler;
+ if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK)])
+ bankIn2 = gActiveBattler;
else
- bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+ bankIn2 = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_FLANK);
// UB: It considers the opponent only player's side even though it can battle alongside player;
- opposingBank = Random() & BIT_MON;
- if (gAbsentBankFlags & gBitTable[opposingBank])
- opposingBank ^= BIT_MON;
+ opposingBank = Random() & BIT_FLANK;
+ if (gAbsentBattlerFlags & gBitTable[opposingBank])
+ opposingBank ^= BIT_FLANK;
}
else
{
- opposingBank = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_SIDE);
- bankIn1 = gActiveBank;
- bankIn2 = gActiveBank;
+ opposingBank = GetBattlerAtPosition(GetBattlerPosition(gActiveBattler) ^ BIT_SIDE);
+ bankIn1 = gActiveBattler;
+ bankIn2 = gActiveBattler;
}
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if ((gActiveBank & BIT_MON) == 0)
+ if ((gActiveBattler & BIT_FLANK) == 0)
firstId = 0, lastId = 3;
else
firstId = 3, lastId = 6;
@@ -688,7 +674,7 @@ u8 GetMostSuitableMonToSwitchInto(void)
firstId = 0, lastId = 6;
}
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -706,8 +692,8 @@ u8 GetMostSuitableMonToSwitchInto(void)
if (species != SPECIES_NONE
&& GetMonData(&party[i], MON_DATA_HP) != 0
&& !(gBitTable[i] & invalidMons)
- && gBattlePartyID[bankIn1] != i
- && gBattlePartyID[bankIn2] != i
+ && gBattlerPartyIndexes[bankIn1] != i
+ && gBattlerPartyIndexes[bankIn2] != i
&& i != *(gBattleStruct->monToSwitchIntoId + bankIn1)
&& i != *(gBattleStruct->monToSwitchIntoId + bankIn2))
{
@@ -734,7 +720,7 @@ u8 GetMostSuitableMonToSwitchInto(void)
for (i = 0; i < 4; i++)
{
move = GetMonData(&party[bestMonId], MON_DATA_MOVE1 + i);
- if (move != MOVE_NONE && TypeCalc(move, gActiveBank, opposingBank) & MOVESTATUS_SUPEREFFECTIVE)
+ if (move != MOVE_NONE && TypeCalc(move, gActiveBattler, opposingBank) & MOVE_RESULT_SUPER_EFFECTIVE)
break;
}
@@ -752,7 +738,7 @@ u8 GetMostSuitableMonToSwitchInto(void)
gDynamicBasePower = 0;
gBattleStruct->dynamicMoveType = 0;
gBattleScripting.dmgMultiplier = 1;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gCritMultiplier = 1;
bestDmg = 0;
bestMonId = 6;
@@ -764,9 +750,9 @@ u8 GetMostSuitableMonToSwitchInto(void)
continue;
if (GetMonData(&party[i], MON_DATA_HP) == 0)
continue;
- if (gBattlePartyID[bankIn1] == i)
+ if (gBattlerPartyIndexes[bankIn1] == i)
continue;
- if (gBattlePartyID[bankIn2] == i)
+ if (gBattlerPartyIndexes[bankIn2] == i)
continue;
if (i == *(gBattleStruct->monToSwitchIntoId + bankIn1))
continue;
@@ -779,8 +765,8 @@ u8 GetMostSuitableMonToSwitchInto(void)
gBattleMoveDamage = 0;
if (move != MOVE_NONE && gBattleMoves[move].power != 1)
{
- AI_CalcDmg(gActiveBank, opposingBank);
- TypeCalc(move, gActiveBank, opposingBank);
+ AI_CalcDmg(gActiveBattler, opposingBank);
+ TypeCalc(move, gActiveBattler, opposingBank);
}
if (bestDmg < gBattleMoveDamage)
{
@@ -817,10 +803,10 @@ static bool8 ShouldUseItem(void)
u8 validMons = 0;
bool8 shouldUse = FALSE;
- if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON2)
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT)
return FALSE;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -855,14 +841,14 @@ static bool8 ShouldUseItem(void)
else
itemEffects = gItemEffectTable[item - 13];
- *(gBattleStruct->AI_itemType + gActiveBank / 2) = GetAI_ItemType(item, itemEffects);
+ *(gBattleStruct->AI_itemType + gActiveBattler / 2) = GetAI_ItemType(item, itemEffects);
- switch (*(gBattleStruct->AI_itemType + gActiveBank / 2))
+ switch (*(gBattleStruct->AI_itemType + gActiveBattler / 2))
{
case AI_ITEM_FULL_RESTORE:
- if (gBattleMons[gActiveBank].hp >= gBattleMons[gActiveBank].maxHP / 4)
+ if (gBattleMons[gActiveBattler].hp >= gBattleMons[gActiveBattler].maxHP / 4)
break;
- if (gBattleMons[gActiveBank].hp == 0)
+ if (gBattleMons[gActiveBattler].hp == 0)
break;
shouldUse = TRUE;
break;
@@ -870,65 +856,65 @@ static bool8 ShouldUseItem(void)
paramOffset = GetItemEffectParamOffset(item, 4, 4);
if (paramOffset == 0)
break;
- if (gBattleMons[gActiveBank].hp == 0)
+ if (gBattleMons[gActiveBattler].hp == 0)
break;
- if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 4 || gBattleMons[gActiveBank].maxHP - gBattleMons[gActiveBank].hp > itemEffects[paramOffset])
+ if (gBattleMons[gActiveBattler].hp < gBattleMons[gActiveBattler].maxHP / 4 || gBattleMons[gActiveBattler].maxHP - gBattleMons[gActiveBattler].hp > itemEffects[paramOffset])
shouldUse = TRUE;
break;
case AI_ITEM_CURE_CONDITION:
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) = 0;
- if (itemEffects[3] & 0x20 && gBattleMons[gActiveBank].status1 & STATUS_SLEEP)
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0;
+ if (itemEffects[3] & 0x20 && gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
{
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x20;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBank].status1 & STATUS_POISON || gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON))
+ if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBattler].status1 & STATUS1_POISON || gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON))
{
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x10;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x10;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x8 && gBattleMons[gActiveBank].status1 & STATUS_BURN)
+ if (itemEffects[3] & 0x8 && gBattleMons[gActiveBattler].status1 & STATUS1_BURN)
{
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x8;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x4 && gBattleMons[gActiveBank].status1 & STATUS_FREEZE)
+ if (itemEffects[3] & 0x4 && gBattleMons[gActiveBattler].status1 & STATUS1_FREEZE)
{
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x4;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x4;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x2 && gBattleMons[gActiveBank].status1 & STATUS_PARALYSIS)
+ if (itemEffects[3] & 0x2 && gBattleMons[gActiveBattler].status1 & STATUS1_PARALYSIS)
{
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x2;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x2;
shouldUse = TRUE;
}
- if (itemEffects[3] & 0x1 && gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
+ if (itemEffects[3] & 0x1 && gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
{
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x1;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x1;
shouldUse = TRUE;
}
break;
case AI_ITEM_X_STAT:
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) = 0;
- if (gDisableStructs[gActiveBank].isFirstTurn == 0)
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) = 0;
+ if (gDisableStructs[gActiveBattler].isFirstTurn == 0)
break;
if (itemEffects[0] & 0xF)
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x1;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x1;
if (itemEffects[1] & 0xF0)
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x2;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x2;
if (itemEffects[1] & 0xF)
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x4;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x4;
if (itemEffects[2] & 0xF)
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x8;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8;
if (itemEffects[2] & 0xF0)
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x20;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20;
if (itemEffects[0] & 0x30)
- *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x80;
+ *(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x80;
shouldUse = TRUE;
break;
case AI_ITEM_GUARD_SPECS:
- bankSide = GetBankSide(gActiveBank);
- if (gDisableStructs[gActiveBank].isFirstTurn != 0 && gSideTimers[bankSide].mistTimer == 0)
+ bankSide = GetBattlerSide(gActiveBattler);
+ if (gDisableStructs[gActiveBattler].isFirstTurn != 0 && gSideTimers[bankSide].mistTimer == 0)
shouldUse = TRUE;
break;
case AI_ITEM_NOT_RECOGNIZABLE:
@@ -937,8 +923,8 @@ static bool8 ShouldUseItem(void)
if (shouldUse)
{
- EmitTwoReturnValues(1, ACTION_USE_ITEM, 0);
- *(gBattleStruct->chosenItem + (gActiveBank / 2) * 2) = item;
+ BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
+ *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2) = item;
gBattleResources->battleHistory->trainerItems[i] = 0;
return shouldUse;
}
diff --git a/src/battle_anim.c b/src/battle_anim.c
index d991a702d..7606f701d 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -25,8 +25,6 @@
#define ANIM_SPRITE_INDEX_COUNT 8
-extern u8 gBankAttacker;
-extern u8 gBankTarget;
extern u16 gBattle_WIN0H;
extern u16 gBattle_WIN0V;
extern u16 gBattle_WIN1H;
@@ -35,12 +33,9 @@ extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
-extern u8 gDecompressionBuffer[];
extern const u16 gUnknown_082C8D64[];
extern const u8 * const gBattleAnims_Moves[];
@@ -130,9 +125,9 @@ EWRAM_DATA static u8 sMonAnimTaskIdArray[2] = {0};
EWRAM_DATA u8 gAnimMoveTurn = 0;
EWRAM_DATA static u8 sAnimBackgroundFadeState = 0;
EWRAM_DATA static u16 sAnimMoveIndex = 0; // set but unused.
-EWRAM_DATA u8 gAnimBankAttacker = 0;
-EWRAM_DATA u8 gAnimBankTarget = 0;
-EWRAM_DATA u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT] = {0};
+EWRAM_DATA u8 gBattleAnimAttacker = 0;
+EWRAM_DATA u8 gBattleAnimTarget = 0;
+EWRAM_DATA u16 gAnimSpeciesByBanks[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA u8 gUnknown_02038440 = 0;
// const rom data
@@ -214,15 +209,15 @@ void ClearBattleAnimationVars(void)
gAnimMoveTurn = 0;
sAnimBackgroundFadeState = 0;
sAnimMoveIndex = 0;
- gAnimBankAttacker = 0;
- gAnimBankTarget = 0;
+ gBattleAnimAttacker = 0;
+ gBattleAnimTarget = 0;
gUnknown_02038440 = 0;
}
void DoMoveAnim(u16 move)
{
- gAnimBankAttacker = gBankAttacker;
- gAnimBankTarget = gBankTarget;
+ gBattleAnimAttacker = gBattlerAttacker;
+ gBattleAnimTarget = gBattlerTarget;
LaunchBattleAnimation(gBattleAnims_Moves, move, TRUE);
}
@@ -234,12 +229,12 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo
{
sub_80A8278();
UpdateOamPriorityInAllHealthboxes(0);
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- if (GetBankSide(i) != 0)
- gAnimSpeciesByBanks[i] = GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_SPECIES);
+ if (GetBattlerSide(i) != 0)
+ gAnimSpeciesByBanks[i] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
else
- gAnimSpeciesByBanks[i] = GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_SPECIES);
+ gAnimSpeciesByBanks[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_SPECIES);
}
}
else
@@ -409,7 +404,7 @@ static void ScriptCmd_createsprite(void)
else
argVar *= -1;
- subpriority = sub_80A82E4(gAnimBankTarget) + (s8)(argVar);
+ subpriority = sub_80A82E4(gBattleAnimTarget) + (s8)(argVar);
}
else
{
@@ -418,13 +413,13 @@ static void ScriptCmd_createsprite(void)
else
argVar *= -1;
- subpriority = sub_80A82E4(gAnimBankAttacker) + (s8)(argVar);
+ subpriority = sub_80A82E4(gBattleAnimAttacker) + (s8)(argVar);
}
if (subpriority < 3)
subpriority = 3;
- CreateSpriteAndAnimate(template, GetBankPosition(gAnimBankTarget, 2), GetBankPosition(gAnimBankTarget, 3), subpriority);
+ CreateSpriteAndAnimate(template, GetBattlerSpriteCoord(gBattleAnimTarget, 2), GetBattlerSpriteCoord(gBattleAnimTarget, 3), subpriority);
gAnimVisualTaskCount++;
}
@@ -565,7 +560,7 @@ static void sub_80A40F4(u8 taskId)
u8 newTaskId;
s16 *selfData = gTasks[taskId].data;
- u8 bankSpriteId = gBankSpriteIds[selfData[t1_MONBG_BANK]];
+ u8 bankSpriteId = gBattlerSpriteIds[selfData[t1_MONBG_BANK]];
gSprites[bankSpriteId].invisible = 1;
if (!selfData[t1_CREATE_ANOTHER_TASK])
@@ -607,14 +602,14 @@ static void ScriptCmd_monbg(void)
animBank = sBattleAnimScriptPtr[0];
if (animBank & ANIM_TARGET)
- bank = gAnimBankTarget;
+ bank = gBattleAnimTarget;
else
- bank = gAnimBankAttacker;
+ bank = gBattleAnimAttacker;
- if (IsAnimBankSpriteVisible(bank))
+ if (IsBattlerSpriteVisible(bank))
{
- u8 identity = GetBankIdentity(bank);
- if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ u8 position = GetBattlerPosition(bank);
+ if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
@@ -629,11 +624,11 @@ static void ScriptCmd_monbg(void)
}
- bank ^= BIT_MON;
- if (IsAnimBankSpriteVisible(bank))
+ bank ^= BIT_FLANK;
+ if (IsBattlerSpriteVisible(bank))
{
- u8 identity = GetBankIdentity(bank);
- if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ u8 position = GetBattlerPosition(bank);
+ if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
@@ -652,20 +647,20 @@ static void ScriptCmd_monbg(void)
gAnimScriptCallback = WaitAnimFrameCount;
}
-bool8 IsAnimBankSpriteVisible(u8 bank)
+bool8 IsBattlerSpriteVisible(u8 bank)
{
if (IsContest())
{
- if (bank == gAnimBankAttacker)
+ if (bank == gBattleAnimAttacker)
return TRUE;
else
return FALSE;
}
- if (!IsBankSpritePresent(bank))
+ if (!IsBattlerSpritePresent(bank))
return FALSE;
if (IsContest())
return TRUE; // this line wont ever be reached.
- if (!gBattleSpritesDataPtr->bankData[bank].invisible || !gSprites[gBankSpriteIds[bank]].invisible)
+ if (!gBattleSpritesDataPtr->battlerData[bank].invisible || !gSprites[gBattlerSpriteIds[bank]].invisible)
return TRUE;
return FALSE;
@@ -699,7 +694,7 @@ void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible)
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0);
- bankSpriteId = gBankSpriteIds[bank];
+ bankSpriteId = gBattlerSpriteIds[bank];
gBattle_BG1_X = -(gSprites[bankSpriteId].pos1.x + gSprites[bankSpriteId].pos2.x) + 0x20;
if (IsContest() && IsSpeciesNotUnown(gContestResources->field_18->field_0))
@@ -707,7 +702,7 @@ void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible)
gBattle_BG1_Y = -(gSprites[bankSpriteId].pos1.y + gSprites[bankSpriteId].pos2.y) + 0x20;
if (setSpriteInvisible)
- gSprites[gBankSpriteIds[bank]].invisible = 1;
+ gSprites[gBattlerSpriteIds[bank]].invisible = 1;
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
@@ -718,7 +713,7 @@ void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible)
if (IsContest())
bankIdentity = 0;
else
- bankIdentity = GetBankIdentity(bank);
+ bankIdentity = GetBattlerPosition(bank);
sub_8118FBC(1, 0, 0, bankIdentity, unknownStruct.unk8, unknownStruct.unk0, unknownStruct.unk4, unknownStruct.unkA);
@@ -736,13 +731,13 @@ void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible)
SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1);
SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0);
- bankSpriteId = gBankSpriteIds[bank];
+ bankSpriteId = gBattlerSpriteIds[bank];
gBattle_BG2_X = -(gSprites[bankSpriteId].pos1.x + gSprites[bankSpriteId].pos2.x) + 0x20;
gBattle_BG2_Y = -(gSprites[bankSpriteId].pos1.y + gSprites[bankSpriteId].pos2.y) + 0x20;
if (setSpriteInvisible)
- gSprites[gBankSpriteIds[bank]].invisible = 1;
+ gSprites[gBattlerSpriteIds[bank]].invisible = 1;
SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
@@ -750,7 +745,7 @@ void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible)
LoadPalette(&gPlttBufferUnfaded[0x100 + bank * 16], 0x90, 0x20);
CpuCopy32(&gPlttBufferUnfaded[0x100 + bank * 16], (void*)(BG_PLTT + 0x120), 0x20);
- sub_8118FBC(2, 0, 0, GetBankIdentity(bank), unknownStruct.unk8, unknownStruct.unk0 + 0x1000, unknownStruct.unk4 + 0x400, unknownStruct.unkA);
+ sub_8118FBC(2, 0, 0, GetBattlerPosition(bank), unknownStruct.unk8, unknownStruct.unk0 + 0x1000, unknownStruct.unk4 + 0x400, unknownStruct.unkA);
}
}
@@ -869,14 +864,14 @@ static void ScriptCmd_clearmonbg(void)
animBankId = ANIM_DEF_PARTNER;
if (animBankId == ANIM_ATTACKER || animBankId == ANIM_ATK_PARTNER)
- bank = gAnimBankAttacker;
+ bank = gBattleAnimAttacker;
else
- bank = gAnimBankTarget;
+ bank = gBattleAnimTarget;
if (sMonAnimTaskIdArray[0] != 0xFF)
- gSprites[gBankSpriteIds[bank]].invisible = 0;
+ gSprites[gBattlerSpriteIds[bank]].invisible = 0;
if (animBankId > 1 && sMonAnimTaskIdArray[1] != 0xFF)
- gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0;
+ gSprites[gBattlerSpriteIds[bank ^ BIT_FLANK]].invisible = 0;
else
animBankId = 0;
@@ -893,8 +888,8 @@ static void sub_80A4980(u8 taskId)
if (gTasks[taskId].data[1] != 1)
{
u8 to_BG2;
- u8 identity = GetBankIdentity(gTasks[taskId].data[2]);
- if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ u8 position = GetBattlerPosition(gTasks[taskId].data[2]);
+ if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
to_BG2 = FALSE;
else
to_BG2 = TRUE;
@@ -931,14 +926,14 @@ static void ScriptCmd_monbg_22(void)
animBankId = ANIM_DEF_PARTNER;
if (animBankId == ANIM_ATTACKER || animBankId == ANIM_ATK_PARTNER)
- bank = gAnimBankAttacker;
+ bank = gBattleAnimAttacker;
else
- bank = gAnimBankTarget;
+ bank = gBattleAnimTarget;
- if (IsAnimBankSpriteVisible(bank))
+ if (IsBattlerSpriteVisible(bank))
{
- u8 identity = GetBankIdentity(bank);
- if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ u8 position = GetBattlerPosition(bank);
+ if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
@@ -946,11 +941,11 @@ static void ScriptCmd_monbg_22(void)
sub_80A438C(bank, toBG_2, FALSE);
}
- bank ^= BIT_MON;
- if (animBankId > 1 && IsAnimBankSpriteVisible(bank))
+ bank ^= BIT_FLANK;
+ if (animBankId > 1 && IsBattlerSpriteVisible(bank))
{
- u8 identity = GetBankIdentity(bank);
- if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ u8 position = GetBattlerPosition(bank);
+ if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
@@ -976,14 +971,14 @@ static void ScriptCmd_clearmonbg_23(void)
animBankId = ANIM_DEF_PARTNER;
if (animBankId == ANIM_ATTACKER || animBankId == ANIM_ATK_PARTNER)
- bank = gAnimBankAttacker;
+ bank = gBattleAnimAttacker;
else
- bank = gAnimBankTarget;
+ bank = gBattleAnimTarget;
- if (IsAnimBankSpriteVisible(bank))
- gSprites[gBankSpriteIds[bank]].invisible = 0;
- if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ BIT_MON))
- gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0;
+ if (IsBattlerSpriteVisible(bank))
+ gSprites[gBattlerSpriteIds[bank]].invisible = 0;
+ if (animBankId > 1 && IsBattlerSpriteVisible(bank ^ BIT_FLANK))
+ gSprites[gBattlerSpriteIds[bank ^ BIT_FLANK]].invisible = 0;
else
animBankId = 0;
@@ -1001,15 +996,15 @@ static void sub_80A4BB0(u8 taskId)
{
bool8 toBG_2;
u8 bank = gTasks[taskId].data[2];
- u8 identity = GetBankIdentity(bank);
- if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ u8 position = GetBattlerPosition(bank);
+ if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
toBG_2 = FALSE;
else
toBG_2 = TRUE;
- if (IsAnimBankSpriteVisible(bank))
+ if (IsBattlerSpriteVisible(bank))
sub_80A477C(toBG_2);
- if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(bank ^ BIT_MON))
+ if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(bank ^ BIT_FLANK))
sub_80A477C(toBG_2 ^ 1);
DestroyTask(taskId);
@@ -1145,7 +1140,7 @@ static void ScriptCmd_fadetobgfromset(void)
if (IsContest())
gTasks[taskId].tBackgroundId = bg3;
- else if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
gTasks[taskId].tBackgroundId = bg2;
else
gTasks[taskId].tBackgroundId = bg1;
@@ -1270,21 +1265,21 @@ static void ScriptCmd_changebg(void)
s8 BattleAnimAdjustPanning(s8 pan)
{
- if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].statusAnimActive)
+ if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gBattleAnimAttacker].statusAnimActive)
{
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
pan = PAN_SIDE_OPPONENT;
else
pan = PAN_SIDE_PLAYER;
}
else if (IsContest())
{
- if (gAnimBankAttacker != gAnimBankTarget || gAnimBankAttacker != 2 || pan != PAN_SIDE_OPPONENT)
+ if (gBattleAnimAttacker != gBattleAnimTarget || gBattleAnimAttacker != 2 || pan != PAN_SIDE_OPPONENT)
pan *= -1;
}
- else if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER)
+ else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
{
- if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
{
if (pan == PAN_SIDE_OPPONENT)
pan = PAN_SIDE_PLAYER;
@@ -1292,7 +1287,7 @@ s8 BattleAnimAdjustPanning(s8 pan)
pan *= -1;
}
}
- else if (GetBankSide(gAnimBankTarget) == SIDE_OPPONENT)
+ else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
{
if (pan == PAN_SIDE_PLAYER)
pan = PAN_SIDE_OPPONENT;
@@ -1312,16 +1307,16 @@ s8 BattleAnimAdjustPanning(s8 pan)
s8 BattleAnimAdjustPanning2(s8 pan)
{
- if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].statusAnimActive)
+ if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gBattleAnimAttacker].statusAnimActive)
{
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
pan = PAN_SIDE_OPPONENT;
else
pan = PAN_SIDE_PLAYER;
}
else
{
- if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER || IsContest())
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest())
pan = -pan;
}
return pan;
@@ -1701,12 +1696,12 @@ static void ScriptCmd_monbgprio_28(void)
sBattleAnimScriptPtr += 2;
if (wantedBank != ANIM_ATTACKER)
- bank = gAnimBankTarget;
+ bank = gBattleAnimTarget;
else
- bank = gAnimBankAttacker;
+ bank = gBattleAnimAttacker;
- bankIdentity = GetBankIdentity(bank);
- if (!IsContest() && (bankIdentity == IDENTITY_PLAYER_MON1 || bankIdentity == IDENTITY_OPPONENT_MON2))
+ bankIdentity = GetBattlerPosition(bank);
+ if (!IsContest() && (bankIdentity == B_POSITION_PLAYER_LEFT || bankIdentity == B_POSITION_OPPONENT_RIGHT))
{
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
@@ -1731,15 +1726,15 @@ static void ScriptCmd_monbgprio_2A(void)
wantedBank = sBattleAnimScriptPtr[1];
sBattleAnimScriptPtr += 2;
- if (GetBankSide(gAnimBankAttacker) != GetBankSide(gAnimBankTarget))
+ if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget))
{
if (wantedBank != ANIM_ATTACKER)
- bank = gAnimBankTarget;
+ bank = gBattleAnimTarget;
else
- bank = gAnimBankAttacker;
+ bank = gBattleAnimAttacker;
- bankIdentity = GetBankIdentity(bank);
- if (!IsContest() && (bankIdentity == IDENTITY_PLAYER_MON1 || bankIdentity == IDENTITY_OPPONENT_MON2))
+ bankIdentity = GetBattlerPosition(bank);
+ if (!IsContest() && (bankIdentity == B_POSITION_PLAYER_LEFT || bankIdentity == B_POSITION_OPPONENT_RIGHT))
{
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
@@ -1751,7 +1746,7 @@ static void ScriptCmd_invisible(void)
{
u8 spriteId;
- spriteId = GetAnimBankSpriteId(sBattleAnimScriptPtr[1]);
+ spriteId = GetAnimBattlerSpriteId(sBattleAnimScriptPtr[1]);
if (spriteId != 0xFF)
gSprites[spriteId].invisible = 1;
@@ -1762,7 +1757,7 @@ static void ScriptCmd_visible(void)
{
u8 spriteId;
- spriteId = GetAnimBankSpriteId(sBattleAnimScriptPtr[1]);
+ spriteId = GetAnimBattlerSpriteId(sBattleAnimScriptPtr[1]);
if (spriteId != 0xFF)
gSprites[spriteId].invisible = 0;
@@ -1778,17 +1773,17 @@ static void ScriptCmd_doublebattle_2D(void)
wantedBank = sBattleAnimScriptPtr[1];
sBattleAnimScriptPtr += 2;
if (!IsContest() && IsDoubleBattle()
- && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
{
if (wantedBank == ANIM_ATTACKER)
{
- r4 = sub_80A8364(gAnimBankAttacker);
- spriteId = GetAnimBankSpriteId(ANIM_ATTACKER);
+ r4 = sub_80A8364(gBattleAnimAttacker);
+ spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
}
else
{
- r4 = sub_80A8364(gAnimBankTarget);
- spriteId = GetAnimBankSpriteId(ANIM_TARGET);
+ r4 = sub_80A8364(gBattleAnimTarget);
+ spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
}
if (spriteId != 0xFF)
{
@@ -1813,17 +1808,17 @@ static void ScriptCmd_doublebattle_2E(void)
wantedBank = sBattleAnimScriptPtr[1];
sBattleAnimScriptPtr += 2;
if (!IsContest() && IsDoubleBattle()
- && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget))
{
if (wantedBank == ANIM_ATTACKER)
{
- r4 = sub_80A8364(gAnimBankAttacker);
- spriteId = GetAnimBankSpriteId(ANIM_ATTACKER);
+ r4 = sub_80A8364(gBattleAnimAttacker);
+ spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
}
else
{
- r4 = sub_80A8364(gAnimBankTarget);
- spriteId = GetAnimBankSpriteId(ANIM_TARGET);
+ r4 = sub_80A8364(gBattleAnimTarget);
+ spriteId = GetAnimBattlerSpriteId(ANIM_TARGET);
}
if (spriteId != 0xFF && r4 == 2)
diff --git a/src/battle_bg.c b/src/battle_bg.c
index 5d5bbf0e9..f493bafea 100644
--- a/src/battle_bg.c
+++ b/src/battle_bg.c
@@ -17,7 +17,8 @@
#include "strings.h"
#include "window.h"
#include "text_window.h"
-#include "new_menu_helpers.h"
+#include "menu.h"
+#include "battle_setup.h"
struct BattleBackground
{
@@ -35,13 +36,10 @@ extern const struct BgTemplate gUnknown_0831AA08[4];
extern const struct WindowTemplate *gUnknown_0831ABA0[];
extern const struct BattleBackground gBattleTerrainTable[];
-extern u8 gBattleTerrain;
-extern u16 gTrainerBattleOpponent_A;
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
-extern u16 gPartnerTrainerId;
extern u8 GetCurrentMapBattleScene(void);
@@ -273,13 +271,13 @@ static void sub_8035AE4(u8 taskId, u8 bank, u8 bgId, u8 destX, u8 destY)
static void sub_8035C4C(void)
{
- if (gBattleOutcome == BATTLE_DREW)
+ if (gBattleOutcome == B_OUTCOME_DREW)
{
BattleHandleAddTextPrinter(gText_Draw, 0x15);
}
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (gBattleOutcome == BATTLE_WON)
+ if (gBattleOutcome == B_OUTCOME_WON)
{
switch (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18)
{
@@ -324,7 +322,7 @@ static void sub_8035C4C(void)
}
}
}
- else if (gBattleOutcome == BATTLE_WON)
+ else if (gBattleOutcome == B_OUTCOME_WON)
{
if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 != 0)
{
@@ -363,7 +361,7 @@ void sub_8035D74(u8 taskId)
case 0:
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
name = gLinkPlayers[i].name;
linkPlayer = &gLinkPlayers[i];
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index cb510bb5b..290236f4a 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -12,6 +12,7 @@
#include "util.h"
#include "main.h"
#include "constants/songs.h"
+#include "constants/trainers.h"
#include "sound.h"
#include "window.h"
#include "m4a.h"
@@ -23,47 +24,23 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gNoOfAllBanks;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern struct SpriteTemplate gUnknown_0202499C;
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct UnusedControllerStruct gUnknown_02022D0C;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct BattleMove gBattleMoves[];
-extern const u8 gUnknown_0831F578[];
+extern const u8 gFacilityClassToPicIndex[];
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
extern void sub_81851A8(u8 *);
extern u16 sub_8068B48(void);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void LinkOpponentHandleGetMonData(void);
@@ -203,15 +180,15 @@ static void nullsub_28(void)
void SetControllerToLinkOpponent(void)
{
- gBattleBankFunc[gActiveBank] = LinkOpponentBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = LinkOpponentBufferRunCommand;
}
static void LinkOpponentBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sLinkOpponentBufferCommands))
- sLinkOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkOpponentBufferCommands))
+ sLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
LinkOpponentBufferExecCompleted();
}
@@ -219,32 +196,32 @@ static void LinkOpponentBufferRunCommand(void)
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
LinkOpponentBufferExecCompleted();
}
static void CompleteOnBankSpriteCallbackDummy2(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
LinkOpponentBufferExecCompleted();
}
static void sub_8064470(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- FreeTrainerFrontPicPalette(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeTrainerFrontPicPalette(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
LinkOpponentBufferExecCompleted();
}
}
static void sub_80644D8(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
LinkOpponentBufferExecCompleted();
}
}
@@ -256,13 +233,13 @@ static void sub_8064520(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r8 = TRUE;
}
else
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthBoxesIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]].callback == SpriteCallbackDummy)
{
r8 = TRUE;
}
@@ -271,39 +248,39 @@ static void sub_8064520(void)
if (r8)
{
- if (r4 || !IsAnimBankSpriteVisible(gActiveBank ^ BIT_MON))
+ if (r4 || !IsBattlerSpriteVisible(BATTLE_PARTNER(gActiveBattler)))
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
return;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- if (GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON2)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)
{
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
}
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3;
- gBattleBankFunc[gActiveBank] = sub_80644D8;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80644D8;
}
}
@@ -311,48 +288,48 @@ static void sub_8064734(void)
{
bool32 r10 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
+ && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].flag_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1)
{
- sub_8172EF0(gActiveBank ^ BIT_MON, &gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
+ sub_8172EF0(BATTLE_PARTNER(gActiveBattler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]);
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank ^ BIT_MON], &gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank ^ BIT_MON);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank ^ BIT_MON]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], HEALTHBOX_ALL);
+ sub_8076918(BATTLE_PARTNER(gActiveBattler));
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(gActiveBattler)]);
}
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 1;
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x40
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x40
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x40
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x40
&& !IsCryPlayingOrClearCrySongs())
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- if (GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON1)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
m4aMPlayContinue(&gMPlayInfo_BGM);
}
else
@@ -361,56 +338,56 @@ static void sub_8064734(void)
}
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 1;
r10 = TRUE;
}
if (r10)
{
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON2)
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)
{
- if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 1)
+ if (++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 1)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
}
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank ^ BIT_MON, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]], MON_DATA_SPECIES));
+ DestroySprite(&gSprites[gUnknown_03005D7C[BATTLE_PARTNER(gActiveBattler)]]);
+ SetBattlerShadowSpriteCallback(BATTLE_PARTNER(gActiveBattler), GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]], MON_DATA_SPECIES));
}
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 0;
- gBattleBankFunc[gActiveBank] = sub_8064520;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064520;
}
}
}
static void sub_8064B04(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
{
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
else
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
LinkOpponentBufferExecCompleted();
@@ -421,13 +398,13 @@ static void sub_8064B04(void)
static void CompleteOnHealthbarDone(void)
{
- s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], HEALTH_BAR, 0);
+ s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
if (hpValue != -1)
{
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], hpValue, HP_CURRENT);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
}
else
{
@@ -437,21 +414,21 @@ static void CompleteOnHealthbarDone(void)
static void sub_8064C14(void)
{
- if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
+ if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
{
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkOpponentBufferExecCompleted();
}
}
static void sub_8064C58(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- EnemyShadowCallbackToSetInvisible(gActiveBank);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ HideBattlerShadowSprite(gActiveBattler);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkOpponentBufferExecCompleted();
}
}
@@ -464,7 +441,7 @@ static void CompleteOnInactiveTextPrinter(void)
static void DoHitAnimBlinkSpriteEffect(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBattlerSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -483,21 +460,21 @@ static void DoHitAnimBlinkSpriteEffect(void)
static void sub_8064D60(void)
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleBankFunc[gActiveBank] = sub_8064DD0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064DD0;
}
}
static void sub_8064DD0(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive && !IsCryPlayingOrClearCrySongs())
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs())
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- || gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy_2)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ || gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy_2)
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
LinkOpponentBufferExecCompleted();
@@ -507,67 +484,67 @@ static void sub_8064DD0(void)
static void sub_8064E50(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
- CopyBattleSpriteInvisibility(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_8064D60;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
+ CopyBattleSpriteInvisibility(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064D60;
}
}
static void sub_8064F40(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
{
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8064E50;
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064E50;
}
}
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
LinkOpponentBufferExecCompleted();
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
LinkOpponentBufferExecCompleted();
}
static void LinkOpponentBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = LinkOpponentBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = LinkOpponentBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
@@ -578,13 +555,13 @@ static void LinkOpponentHandleGetMonData(void)
u8 monToCheck;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- size += CopyLinkOpponentMonData(gBattlePartyID[gActiveBank], monData);
+ size += CopyLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler], monData);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -592,7 +569,7 @@ static void LinkOpponentHandleGetMonData(void)
monToCheck >>= 1;
}
}
- EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(1, size, monData);
LinkOpponentBufferExecCompleted();
}
@@ -606,7 +583,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
battleMon.species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES);
@@ -672,7 +649,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE);
+ data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE);
dst[0] = data16;
dst[1] = data16 >> 8;
size = 2;
@@ -687,7 +664,7 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE);
+ dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE);
size = 1;
break;
case REQUEST_OTID_BATTLE:
@@ -912,13 +889,13 @@ static void LinkOpponentHandleSetMonData(void)
u8 monToCheck;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- SetLinkOpponentMonData(gBattlePartyID[gActiveBank]);
+ SetLinkOpponentMonData(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -931,11 +908,11 @@ static void LinkOpponentHandleSetMonData(void)
static void SetLinkOpponentMonData(u8 monId)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
{
@@ -976,10 +953,10 @@ static void SetLinkOpponentMonData(u8 monId)
}
break;
case REQUEST_SPECIES_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HELDITEM_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MOVES_PP_BATTLE:
for (i = 0; i < 4; i++)
@@ -993,196 +970,196 @@ static void SetLinkOpponentMonData(u8 monId)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PP_DATA_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case REQUEST_PPMOVE1_BATTLE:
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_OTID_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_EXP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_FRIENDSHIP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKERUS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LOCATION_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LEVEL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_GAME_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKEBALL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ALL_IVS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case REQUEST_HP_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PERSONALITY_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CHECKSUM_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_STATUS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_LEVEL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MAX_HP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SHEEN_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
}
static void LinkOpponentHandleSetRawMonData(void)
{
- u8 *dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBattler][3 + i];
LinkOpponentBufferExecCompleted();
}
static void LinkOpponentHandleLoadMonSprite(void)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_806A068(species, GetBankIdentity(gActiveBank));
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_806A068(species, GetBattlerPosition(gActiveBattler));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(gActiveBank, 2),
- GetBankSpriteDefault_Y(gActiveBank),
- sub_80A82E4(gActiveBank));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ GetBattlerSpriteDefault_Y(gActiveBattler),
+ sub_80A82E4(gActiveBattler));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8064B04;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064B04;
}
static void LinkOpponentHandleSwitchInAnim(void)
{
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_8066494(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_8064F40;
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ sub_8066494(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064F40;
}
static void sub_8066494(u8 bank, bool8 dontClearSubstituteBit)
@@ -1190,66 +1167,66 @@ static void sub_8066494(u8 bank, bool8 dontClearSubstituteBit)
u16 species;
ClearTemporarySpeciesSpriteData(bank, dontClearSubstituteBit);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank);
- sub_806A068(species, GetBankIdentity(bank));
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[bank]], bank);
+ sub_806A068(species, GetBattlerPosition(bank));
- gBankSpriteIds[bank] = CreateSprite(
+ gBattlerSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- GetBankPosition(bank, 2),
- GetBankSpriteDefault_Y(bank),
+ GetBattlerSpriteCoord(bank, 2),
+ GetBattlerSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBattlerSpriteIds[bank];
gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[2] = species;
+ gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void LinkOpponentHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = DoSwitchOutAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- EnemyShadowCallbackToSetInvisible(gActiveBank);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ HideBattlerShadowSprite(gActiveBattler);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkOpponentBufferExecCompleted();
}
}
static void DoSwitchOutAnimation(void)
{
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON);
- gBattleBankFunc[gActiveBank] = sub_8064C58;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064C58;
}
break;
}
@@ -1262,39 +1239,39 @@ static void LinkOpponentHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if ((GetBankIdentity(gActiveBank) & BIT_MON) != 0) // second mon
+ if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
xPos = 152;
else // first mon
xPos = 200;
if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
{
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_A);
else
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_B);
}
else
{
- if ((gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_FIRE_RED
- || (gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_LEAF_GREEN)
+ if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_FIRE_RED
+ || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_LEAF_GREEN)
{
- if (gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender != 0)
- trainerPicId = gUnknown_0831F578[0x4F];
+ if (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender != 0)
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_10];
else
- trainerPicId = gUnknown_0831F578[0x4E];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_9];
}
- else if ((gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_RUBY
- || (gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_SAPPHIRE)
+ else if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
+ || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE)
{
- if (gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender != 0)
- trainerPicId = gUnknown_0831F578[0x51];
+ if (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender != 0)
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_12];
else
- trainerPicId = gUnknown_0831F578[0x50];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_11];
}
else
{
- trainerPicId = PlayerGenderToFrontTrainerPicId(gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender);
+ trainerPicId = PlayerGenderToFrontTrainerPicId(gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender);
}
}
}
@@ -1309,17 +1286,17 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|| (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_LEAF_GREEN)
{
if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != 0)
- trainerPicId = gUnknown_0831F578[0x4F];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_10];
else
- trainerPicId = gUnknown_0831F578[0x4E];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_9];
}
else if ((gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_RUBY
|| (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].version & 0xFF) == VERSION_SAPPHIRE)
{
if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != 0)
- trainerPicId = gUnknown_0831F578[0x51];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_12];
else
- trainerPicId = gUnknown_0831F578[0x50];
+ trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PKMN_TRAINER_11];
}
else
{
@@ -1327,73 +1304,73 @@ static void LinkOpponentHandleDrawTrainerPic(void)
}
}
- DecompressTrainerFrontPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
+ DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBank));
+ sub_80A82E4(gActiveBattler));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void LinkOpponentHandleTrainerSlide(void)
{
u32 trainerPicId;
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_A);
else
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_B);
- DecompressTrainerFrontPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
+ DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 96;
- gSprites[gBankSpriteIds[gActiveBank]].pos1.x += 32;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy2; // this line is redundant, because LinkOpponentBufferExecCompleted changes the battle bank function
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2; // this line is redundant, because LinkOpponentBufferExecCompleted changes the battle bank function
LinkOpponentBufferExecCompleted();
}
static void LinkOpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_8064470;
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064470;
}
static void LinkOpponentHandleFaintAnimation(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++;
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039934;
- gBattleBankFunc[gActiveBank] = sub_8064C14;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039934;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064C14;
}
}
}
@@ -1420,25 +1397,25 @@ static void LinkOpponentHandlePause(void)
static void LinkOpponentHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
LinkOpponentBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = LinkOpponentDoMoveAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = LinkOpponentDoMoveAnimation;
sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
}
}
@@ -1446,26 +1423,26 @@ static void LinkOpponentHandleMoveAnimation(void)
static void LinkOpponentDoMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 multihit = gBattleBufferA[gActiveBank][11];
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 multihit = gBattleBufferA[gActiveBattler][11];
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute
- && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
+ && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
{
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
break;
case 2:
@@ -1473,20 +1450,20 @@ static void LinkOpponentDoMoveAnimation(void)
if (!gAnimScriptActive)
{
sub_805EB9C(1);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
CopyAllBattleSpritesInvisibilities();
- TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
LinkOpponentBufferExecCompleted();
}
break;
@@ -1499,10 +1476,10 @@ static void LinkOpponentHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
sub_817C95C(*stringId);
}
@@ -1546,23 +1523,23 @@ static void LinkOpponentHandleHealthBarUpdate(void)
s16 hpVal;
LoadBattleBarGfx(0);
- hpVal = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (hpVal != INSTANT_HP_BAR_DROP)
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
}
- gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void LinkOpponentHandleExpUpdate(void)
@@ -1572,24 +1549,24 @@ static void LinkOpponentHandleExpUpdate(void)
static void LinkOpponentHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
u8 bank;
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_STATUS_ICON);
- bank = gActiveBank;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
+ bank = gActiveBattler;
gBattleSpritesDataPtr->healthBoxesData[bank].statusAnimActive = 0;
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
static void LinkOpponentHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
@@ -1646,7 +1623,7 @@ static void LinkOpponentHandleCmd37(void)
static void LinkOpponentHandleCmd38(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
LinkOpponentBufferExecCompleted();
}
@@ -1664,16 +1641,16 @@ static void LinkOpponentHandleCmd40(void)
static void LinkOpponentHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
LinkOpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- DoHitAnimHealthboxEffect(gActiveBank);
- gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ DoHitAnimHealthboxEffect(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect;
}
}
@@ -1686,25 +1663,25 @@ static void LinkOpponentHandlePlaySE(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
pan = PAN_SIDE_PLAYER;
else
pan = PAN_SIDE_OPPONENT;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
LinkOpponentBufferExecCompleted();
}
static void LinkOpponentHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
LinkOpponentBufferExecCompleted();
@@ -1712,7 +1689,7 @@ static void LinkOpponentHandlePlayFanfareOrBGM(void)
static void LinkOpponentHandleFaintingCry(void)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry3(species, 25, 5);
LinkOpponentBufferExecCompleted();
@@ -1720,8 +1697,8 @@ static void LinkOpponentHandleFaintingCry(void)
static void LinkOpponentHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
LinkOpponentBufferExecCompleted();
}
@@ -1730,46 +1707,46 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_80676FC);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80676FC);
taskId = CreateTask(sub_8067618, 5);
- gTasks[taskId].data[0] = gActiveBank;
+ gTasks[taskId].data[0] = gActiveBattler;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_28;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_28;
}
static void sub_8067618(u8 taskId)
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_8066494(gActiveBank, FALSE);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_8066494(gActiveBattler, FALSE);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_8066494(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_8066494(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_8066494(gActiveBattler, FALSE);
+ gActiveBattler = BATTLE_PARTNER(gActiveBattler);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_8066494(gActiveBattler, FALSE);
+ gActiveBattler = BATTLE_PARTNER(gActiveBattler);
}
- gBattleBankFunc[gActiveBank] = sub_8064734;
- gActiveBank = savedActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8064734;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
@@ -1782,50 +1759,50 @@ static void sub_80676FC(struct Sprite *sprite)
static void LinkOpponentHandleDrawPartyStatusSummary(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
LinkOpponentBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
- if (gBattleBufferA[gActiveBank][2] != 0)
+ if (gBattleBufferA[gActiveBattler][2] != 0)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E < 2)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E < 2)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E++;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E++;
return;
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0;
}
}
- gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0x5D;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_806782C;
+ gBattlerControllerFuncs[gActiveBattler] = sub_806782C;
}
}
static void sub_806782C(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
LinkOpponentBufferExecCompleted();
}
}
static void LinkOpponentHandleCmd49(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
LinkOpponentBufferExecCompleted();
}
@@ -1836,25 +1813,25 @@ static void LinkOpponentHandleCmd50(void)
static void LinkOpponentHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank))
+ if (IsBattlerSpritePresent(gActiveBattler))
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- CopyBattleSpriteInvisibility(gActiveBank);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ CopyBattleSpriteInvisibility(gActiveBattler);
}
LinkOpponentBufferExecCompleted();
}
static void LinkOpponentHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
LinkOpponentBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
sub_817E32C(animationId);
}
@@ -1862,7 +1839,7 @@ static void LinkOpponentHandleBattleAnimation(void)
static void LinkOpponentHandleLinkStandbyMsg(void)
{
- sub_81851A8(&gBattleBufferA[gActiveBank][2]);
+ sub_81851A8(&gBattleBufferA[gActiveBattler][2]);
LinkOpponentBufferExecCompleted();
}
@@ -1873,18 +1850,18 @@ static void LinkOpponentHandleResetActionMoveSelection(void)
static void LinkOpponentHandleCmd55(void)
{
- sub_81851A8(&gBattleBufferA[gActiveBank][4]);
+ sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
- if (gBattleBufferA[gActiveBank][1] == BATTLE_DREW)
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ if (gBattleBufferA[gActiveBattler][1] == B_OUTCOME_DREW)
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
else
- gBattleOutcome = gBattleBufferA[gActiveBank][1] ^ BATTLE_DREW;
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW;
- gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBank][2];
+ gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
LinkOpponentBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
static void nullsub_92(void)
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 082b134b4..9d2c79922 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -23,34 +23,11 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gNoOfAllBanks;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern struct SpriteTemplate gUnknown_0202499C;
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
@@ -60,6 +37,7 @@ extern const struct BattleMove gBattleMoves[];
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
extern void sub_81851A8(u8 *);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void LinkPartnerHandleGetMonData(void);
@@ -198,15 +176,15 @@ static void nullsub_112(void)
void SetControllerToLinkPartner(void)
{
- gBattleBankFunc[gActiveBank] = LinkPartnerBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = LinkPartnerBufferRunCommand;
}
static void LinkPartnerBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sLinkPartnerBufferCommands))
- sLinkPartnerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkPartnerBufferCommands))
+ sLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
LinkPartnerBufferExecCompleted();
}
@@ -214,26 +192,26 @@ static void LinkPartnerBufferRunCommand(void)
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
LinkPartnerBufferExecCompleted();
}
static void sub_814AF54(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
nullsub_25(0);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
LinkPartnerBufferExecCompleted();
}
}
static void sub_814AFBC(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
LinkPartnerBufferExecCompleted();
}
}
@@ -244,13 +222,13 @@ static void sub_814B004(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
else
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthBoxesIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
r6 = TRUE;
}
@@ -261,84 +239,84 @@ static void sub_814B004(void)
if (r6)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3;
- gBattleBankFunc[gActiveBank] = sub_814AFBC;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
+ gBattlerControllerFuncs[gActiveBattler] = sub_814AFBC;
}
}
static void sub_814B0E8(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive
- && gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- && ++gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 != 1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive
+ && gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 != 1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]]);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank ^ BIT_MON], &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank ^ BIT_MON);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank ^ BIT_MON]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler ^ BIT_FLANK);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleBankFunc[gActiveBank] = sub_814B004;
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B004;
}
}
static void sub_814B290(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].animEnded && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
LinkPartnerBufferExecCompleted();
}
static void CompleteOnHealthbarDone(void)
{
- s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], HEALTH_BAR, 0);
+ s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
if (hpValue != -1)
{
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], hpValue, HP_CURRENT);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
}
else
{
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
LinkPartnerBufferExecCompleted();
}
}
static void sub_814B340(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
nullsub_24(species);
- FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkPartnerBufferExecCompleted();
}
}
static void sub_814B3DC(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkPartnerBufferExecCompleted();
}
}
@@ -351,7 +329,7 @@ static void CompleteOnInactiveTextPrinter(void)
static void DoHitAnimBlinkSpriteEffect(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBattlerSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -370,20 +348,20 @@ static void DoHitAnimBlinkSpriteEffect(void)
static void sub_814B4E0(void)
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- CopyBattleSpriteInvisibility(gActiveBank);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
+ CopyBattleSpriteInvisibility(gActiveBattler);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleBankFunc[gActiveBank] = sub_814B554;
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B554;
}
}
static void sub_814B554(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
LinkPartnerBufferExecCompleted();
}
@@ -391,66 +369,66 @@ static void sub_814B554(void)
static void sub_814B5A8(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
CreateTask(c3_0802FDF4, 10);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattleBankFunc[gActiveBank] = sub_814B4E0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B4E0;
}
}
static void sub_814B69C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- gBattleBankFunc[gActiveBank] = sub_814B5A8;
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B5A8;
}
}
static void LinkPartnerBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = LinkPartnerBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = LinkPartnerBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
LinkPartnerBufferExecCompleted();
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
LinkPartnerBufferExecCompleted();
}
@@ -461,13 +439,13 @@ static void LinkPartnerHandleGetMonData(void)
u8 monToCheck;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- size += CopyLinkPartnerMonData(gBattlePartyID[gActiveBank], monData);
+ size += CopyLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler], monData);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -475,7 +453,7 @@ static void LinkPartnerHandleGetMonData(void)
monToCheck >>= 1;
}
}
- EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(1, size, monData);
LinkPartnerBufferExecCompleted();
}
@@ -489,7 +467,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
@@ -555,7 +533,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE);
+ data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE);
dst[0] = data16;
dst[1] = data16 >> 8;
size = 2;
@@ -570,7 +548,7 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE);
+ dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE);
size = 1;
break;
case REQUEST_OTID_BATTLE:
@@ -795,13 +773,13 @@ static void LinkPartnerHandleSetMonData(void)
u8 monToCheck;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- SetLinkPartnerMonData(gBattlePartyID[gActiveBank]);
+ SetLinkPartnerMonData(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -814,11 +792,11 @@ static void LinkPartnerHandleSetMonData(void)
static void SetLinkPartnerMonData(u8 monId)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
{
@@ -859,10 +837,10 @@ static void SetLinkPartnerMonData(u8 monId)
}
break;
case REQUEST_SPECIES_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HELDITEM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MOVES_PP_BATTLE:
for (i = 0; i < 4; i++)
@@ -876,167 +854,167 @@ static void SetLinkPartnerMonData(u8 monId)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PP_DATA_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case REQUEST_PPMOVE1_BATTLE:
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_OTID_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_EXP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_FRIENDSHIP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKERUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LOCATION_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_GAME_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKEBALL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ALL_IVS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case REQUEST_HP_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PERSONALITY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CHECKSUM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_STATUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MAX_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SHEEN_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
static void LinkPartnerHandleSetRawMonData(void)
{
- u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBattler][3 + i];
LinkPartnerBufferExecCompleted();
}
@@ -1045,28 +1023,28 @@ static void LinkPartnerHandleLoadMonSprite(void)
{
u16 species;
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_806A068(species, GetBankIdentity(gActiveBank));
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
+ sub_806A068(species, GetBattlerPosition(gActiveBattler));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(gActiveBank, 2),
- GetBankSpriteDefault_Y(gActiveBank),
- sub_80A82E4(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
- gBattleBankFunc[gActiveBank] = sub_814B290;
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ GetBattlerSpriteDefault_Y(gActiveBattler),
+ sub_80A82E4(gActiveBattler));
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B290;
}
static void LinkPartnerHandleSwitchInAnim(void)
{
- ClearTemporarySpeciesSpriteData(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_814CC98(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_814B69C;
+ ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_814CC98(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B69C;
}
static void sub_814CC98(u8 bank, bool8 dontClearSubstituteBit)
@@ -1074,64 +1052,64 @@ static void sub_814CC98(u8 bank, bool8 dontClearSubstituteBit)
u16 species;
ClearTemporarySpeciesSpriteData(bank, dontClearSubstituteBit);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
- sub_806A068(species, GetBankIdentity(bank));
+ sub_806A068(species, GetBattlerPosition(bank));
- gBankSpriteIds[bank] = CreateSprite(
+ gBattlerSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- GetBankPosition(bank, 2),
- GetBankSpriteDefault_Y(bank),
+ GetBattlerSpriteCoord(bank, 2),
+ GetBattlerSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBattlerSpriteIds[bank];
gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[2] = species;
+ gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void LinkPartnerHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = DoSwitchOutAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkPartnerBufferExecCompleted();
}
}
static void DoSwitchOutAnimation(void)
{
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattleBankFunc[gActiveBank] = sub_814B3DC;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B3DC;
}
break;
}
@@ -1144,7 +1122,7 @@ static void LinkPartnerHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if ((GetBankIdentity(gActiveBank) & BIT_MON) != 0) // second mon
+ if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
xPos = 90;
else // first mon
xPos = 32;
@@ -1154,31 +1132,31 @@ static void LinkPartnerHandleDrawTrainerPic(void)
xPos = 80;
}
- if ((gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_FIRE_RED
- || (gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_LEAF_GREEN)
+ if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_FIRE_RED
+ || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_LEAF_GREEN)
{
- trainerPicId = gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender + BACK_PIC_RED;
+ trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + BACK_PIC_RED;
}
- else if ((gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_RUBY
- || (gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_SAPPHIRE)
+ else if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
+ || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE)
{
- trainerPicId = gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender + BACK_PIC_RS_BRENDAN;
+ trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + BACK_PIC_RS_BRENDAN;
}
else
{
- trainerPicId = gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender;
+ trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
}
- DecompressTrainerBackPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, sub_80A82E4(gActiveBank));
+ DecompressTrainerBackPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, sub_80A82E4(gActiveBattler));
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void LinkPartnerHandleTrainerSlide(void)
@@ -1188,34 +1166,34 @@ static void LinkPartnerHandleTrainerSlide(void)
static void LinkPartnerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_814AF54;
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattlerControllerFuncs[gActiveBattler] = sub_814AF54;
}
static void LinkPartnerHandleFaintAnimation(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++;
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039C00;
- gBattleBankFunc[gActiveBank] = sub_814B340;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00;
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B340;
}
}
}
@@ -1242,25 +1220,25 @@ static void LinkPartnerHandlePause(void)
static void LinkPartnerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
LinkPartnerBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = LinkPartnerDoMoveAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = LinkPartnerDoMoveAnimation;
sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
}
}
@@ -1268,26 +1246,26 @@ static void LinkPartnerHandleMoveAnimation(void)
static void LinkPartnerDoMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 multihit = gBattleBufferA[gActiveBank][11];
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 multihit = gBattleBufferA[gActiveBattler][11];
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute
- && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
+ && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
{
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
break;
case 2:
@@ -1295,20 +1273,20 @@ static void LinkPartnerDoMoveAnimation(void)
if (!gAnimScriptActive)
{
sub_805EB9C(1);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
CopyAllBattleSpritesInvisibilities();
- TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
LinkPartnerBufferExecCompleted();
}
break;
@@ -1321,10 +1299,10 @@ static void LinkPartnerHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
sub_817C95C(*stringId);
}
@@ -1368,23 +1346,23 @@ static void LinkPartnerHandleHealthBarUpdate(void)
s16 hpVal;
LoadBattleBarGfx(0);
- hpVal = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (hpVal != INSTANT_HP_BAR_DROP)
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
}
- gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void LinkPartnerHandleExpUpdate(void)
@@ -1394,24 +1372,24 @@ static void LinkPartnerHandleExpUpdate(void)
static void LinkPartnerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
u8 bank;
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_STATUS_ICON);
- bank = gActiveBank;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
+ bank = gActiveBattler;
gBattleSpritesDataPtr->healthBoxesData[bank].statusAnimActive = 0;
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
static void LinkPartnerHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
@@ -1468,7 +1446,7 @@ static void LinkPartnerHandleCmd37(void)
static void LinkPartnerHandleCmd38(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
LinkPartnerBufferExecCompleted();
}
@@ -1486,16 +1464,16 @@ static void LinkPartnerHandleCmd40(void)
static void LinkPartnerHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
LinkPartnerBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- DoHitAnimHealthboxEffect(gActiveBank);
- gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ DoHitAnimHealthboxEffect(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect;
}
}
@@ -1508,25 +1486,25 @@ static void LinkPartnerHandlePlaySE(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
pan = PAN_SIDE_PLAYER;
else
pan = PAN_SIDE_OPPONENT;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
LinkPartnerBufferExecCompleted();
}
static void LinkPartnerHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
LinkPartnerBufferExecCompleted();
@@ -1534,7 +1512,7 @@ static void LinkPartnerHandlePlayFanfareOrBGM(void)
static void LinkPartnerHandleFaintingCry(void)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry3(species, -25, 5);
LinkPartnerBufferExecCompleted();
@@ -1542,8 +1520,8 @@ static void LinkPartnerHandleFaintingCry(void)
static void LinkPartnerHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
LinkPartnerBufferExecCompleted();
}
@@ -1553,46 +1531,46 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
u8 taskId;
u32 trainerPicId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F9);
- if ((gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_FIRE_RED
- || (gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_LEAF_GREEN)
+ if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_FIRE_RED
+ || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_LEAF_GREEN)
{
- trainerPicId = gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender + BACK_PIC_RED;
+ trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + BACK_PIC_RED;
}
- else if ((gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_RUBY
- || (gLinkPlayers[GetBankMultiplayerId(gActiveBank)].version & 0xFF) == VERSION_SAPPHIRE)
+ else if ((gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_RUBY
+ || (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].version & 0xFF) == VERSION_SAPPHIRE)
{
- trainerPicId = gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender + BACK_PIC_RS_BRENDAN;
+ trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender + BACK_PIC_RS_BRENDAN;
}
else
{
- trainerPicId = gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender;
+ trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
}
LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
taskId = CreateTask(sub_814DCCC, 5);
- gTasks[taskId].data[0] = gActiveBank;
+ gTasks[taskId].data[0] = gActiveBattler;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_112;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_112;
}
static void sub_814DCCC(u8 taskId)
@@ -1603,62 +1581,62 @@ static void sub_814DCCC(u8 taskId)
}
else
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_814CC98(gActiveBank, FALSE);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_814CC98(gActiveBattler, FALSE);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_814CC98(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_814CC98(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_814CC98(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_814CC98(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
}
- gBattleBankFunc[gActiveBank] = sub_814B0E8;
- gActiveBank = savedActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = sub_814B0E8;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
}
static void LinkPartnerHandleDrawPartyStatusSummary(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
LinkPartnerBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
- gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0x5D;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_814DE9C;
+ gBattlerControllerFuncs[gActiveBattler] = sub_814DE9C;
}
}
static void sub_814DE9C(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
LinkPartnerBufferExecCompleted();
}
}
static void LinkPartnerHandleCmd49(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
LinkPartnerBufferExecCompleted();
}
@@ -1669,25 +1647,25 @@ static void LinkPartnerHandleCmd50(void)
static void LinkPartnerHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank))
+ if (IsBattlerSpritePresent(gActiveBattler))
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- CopyBattleSpriteInvisibility(gActiveBank);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ CopyBattleSpriteInvisibility(gActiveBattler);
}
LinkPartnerBufferExecCompleted();
}
static void LinkPartnerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
LinkPartnerBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
sub_817E32C(animationId);
}
@@ -1695,7 +1673,7 @@ static void LinkPartnerHandleBattleAnimation(void)
static void LinkPartnerHandleLinkStandbyMsg(void)
{
- sub_81851A8(&gBattleBufferA[gActiveBank][2]);
+ sub_81851A8(&gBattleBufferA[gActiveBattler][2]);
LinkPartnerBufferExecCompleted();
}
@@ -1706,13 +1684,13 @@ static void LinkPartnerHandleResetActionMoveSelection(void)
static void LinkPartnerHandleCmd55(void)
{
- sub_81851A8(&gBattleBufferA[gActiveBank][4]);
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
- gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBank][2];
+ sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
+ gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
LinkPartnerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
static void nullsub_113(void)
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 30414d53a..5a3732f8b 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -27,33 +27,13 @@
#include "random.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern bool8 gDoingBattleAnim;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern void *gUnknown_020244D8;
-extern void *gUnknown_020244DC;
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
extern struct SpriteTemplate gUnknown_0202499C;
-extern struct UnusedControllerStruct gUnknown_02022D0C;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_020244B4[];
-extern void (*gPreBattleCallback1)(void);
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct BattleMove gBattleMoves[];
@@ -207,15 +187,15 @@ static void nullsub_26(void)
void SetControllerToOpponent(void)
{
- gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = OpponentBufferRunCommand;
}
static void OpponentBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sOpponentBufferCommands))
- sOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sOpponentBufferCommands))
+ sOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
OpponentBufferExecCompleted();
}
@@ -223,32 +203,32 @@ static void OpponentBufferRunCommand(void)
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
}
static void CompleteOnBankSpriteCallbackDummy2(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
}
static void sub_805F240(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- FreeTrainerFrontPicPalette(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeTrainerFrontPicPalette(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
OpponentBufferExecCompleted();
}
}
static void sub_805F2A8(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
OpponentBufferExecCompleted();
}
}
@@ -260,42 +240,42 @@ static void sub_805F2F0(void)
if (!IsDoubleBattle() || ((IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)) || (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)))
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
var = TRUE;
var2 = FALSE;
}
else
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthBoxesIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
var = TRUE;
var2 = TRUE;
}
- gUnknown_020244D8 = &gBattleSpritesDataPtr->healthBoxesData[gActiveBank];
- gUnknown_020244DC = &gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON];
+ gUnknown_020244D8 = &gBattleSpritesDataPtr->healthBoxesData[gActiveBattler];
+ gUnknown_020244DC = &gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK];
if (var)
{
if (var2 == TRUE)
{
- if (var2 && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 && gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
+ if (var2 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
}
else
return;
}
- else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ else if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{
- if (GetBankIdentity(gActiveBank) == 3)
+ if (GetBattlerPosition(gActiveBattler) == 3)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 == 0 && gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1 == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 == 0 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 == 0)
{
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
@@ -303,14 +283,14 @@ static void sub_805F2F0(void)
else
return;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
}
else
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3;
- gBattleBankFunc[gActiveBank] = sub_805F2A8;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
+ gBattlerControllerFuncs[gActiveBattler] = sub_805F2A8;
}
}
@@ -319,60 +299,60 @@ static void sub_805F560(void)
bool32 sp = FALSE;
bool32 r10 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
- sub_8172EF0(gActiveBank ^ BIT_MON, &gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
+ sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank ^ BIT_MON], &gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank ^ BIT_MON);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank ^ BIT_MON]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler ^ BIT_FLANK);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 1;
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x40
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x40
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x40
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x40
&& !IsCryPlayingOrClearCrySongs())
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- if (GetBankIdentity(gActiveBank) == 1)
+ if (GetBattlerPosition(gActiveBattler) == 1)
m4aMPlayContinue(&gMPlayInfo_BGM);
}
else
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 1;
sp = TRUE;
}
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
r10 = TRUE;
}
}
else
{
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
r10 = TRUE;
}
@@ -382,29 +362,29 @@ static void sub_805F560(void)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank ^ BIT_MON, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]], MON_DATA_SPECIES));
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
+ SetBattlerShadowSpriteCallback(gActiveBattler ^ BIT_FLANK, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], MON_DATA_SPECIES));
}
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 0;
- gBattleBankFunc[gActiveBank] = sub_805F2F0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_805F2F0;
}
}
static void sub_805F994(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
OpponentBufferExecCompleted();
@@ -413,11 +393,11 @@ static void sub_805F994(void)
static void CompleteOnHealthbarDone(void)
{
- s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], HEALTH_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
if (hpValue != -1)
{
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], hpValue, HP_CURRENT);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
}
else
OpponentBufferExecCompleted();
@@ -425,21 +405,21 @@ static void CompleteOnHealthbarDone(void)
static void sub_805FAC4(void)
{
- if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
+ if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
{
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
OpponentBufferExecCompleted();
}
}
static void sub_805FB08(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- EnemyShadowCallbackToSetInvisible(gActiveBank);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ HideBattlerShadowSprite(gActiveBattler);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
OpponentBufferExecCompleted();
}
}
@@ -452,7 +432,7 @@ static void CompleteOnInactiveTextPrinter(void)
static void DoHitAnimBlinkSpriteEffect(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBattlerSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -471,19 +451,19 @@ static void DoHitAnimBlinkSpriteEffect(void)
static void sub_805FC10(void)
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleBankFunc[gActiveBank] = sub_805FC80;
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
+ gBattlerControllerFuncs[gActiveBattler] = sub_805FC80;
}
}
static void sub_805FC80(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive && !IsCryPlayingOrClearCrySongs())
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs())
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy || gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy_2)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy || gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy_2)
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
OpponentBufferExecCompleted();
@@ -493,60 +473,60 @@ static void sub_805FC80(void)
static void sub_805FD00(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
- CopyBattleSpriteInvisibility(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_805FC10;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
+ CopyBattleSpriteInvisibility(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = sub_805FC10;
}
}
static void sub_805FDF0(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_805FD00;
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
+ gBattlerControllerFuncs[gActiveBattler] = sub_805FD00;
}
}
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
OpponentBufferExecCompleted();
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
OpponentBufferExecCompleted();
}
static void OpponentBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = OpponentBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
@@ -557,13 +537,13 @@ static void OpponentHandleGetMonData(void)
u8 monToCheck;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- size += GetOpponentMonData(gBattlePartyID[gActiveBank], monData);
+ size += GetOpponentMonData(gBattlerPartyIndexes[gActiveBattler], monData);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -571,7 +551,7 @@ static void OpponentHandleGetMonData(void)
monToCheck >>= 1;
}
}
- EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(1, size, monData);
OpponentBufferExecCompleted();
}
@@ -585,7 +565,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
battleMon.species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES);
@@ -651,7 +631,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE);
+ data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE);
dst[0] = data16;
dst[1] = data16 >> 8;
size = 2;
@@ -666,7 +646,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst)
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE);
+ dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE);
size = 1;
break;
case REQUEST_OTID_BATTLE:
@@ -884,14 +864,14 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst)
static void OpponentHandleGetRawMonData(void)
{
struct BattlePokemon battleMon;
- u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1];
+ u8 *src = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
+ u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
dst[i] = src[i];
- EmitDataTransfer(1, gBattleBufferA[gActiveBank][2], dst);
+ BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
OpponentBufferExecCompleted();
}
@@ -900,13 +880,13 @@ static void OpponentHandleSetMonData(void)
u8 monToCheck;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- SetOpponentMonData(gBattlePartyID[gActiveBank]);
+ SetOpponentMonData(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -919,11 +899,11 @@ static void OpponentHandleSetMonData(void)
static void SetOpponentMonData(u8 monId)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
{
@@ -964,10 +944,10 @@ static void SetOpponentMonData(u8 monId)
}
break;
case REQUEST_SPECIES_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HELDITEM_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MOVES_PP_BATTLE:
for (i = 0; i < 4; i++)
@@ -981,198 +961,198 @@ static void SetOpponentMonData(u8 monId)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PP_DATA_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case REQUEST_PPMOVE1_BATTLE:
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_OTID_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_EXP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_FRIENDSHIP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKERUS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LOCATION_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LEVEL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_GAME_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKEBALL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ALL_IVS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case REQUEST_HP_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PERSONALITY_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CHECKSUM_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_STATUS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_LEVEL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MAX_HP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SHEEN_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
}
static void OpponentHandleSetRawMonData(void)
{
- u8 *dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBattler][3 + i];
OpponentBufferExecCompleted();
}
static void OpponentHandleLoadMonSprite(void)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_806A068(species, GetBankIdentity(gActiveBank));
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_806A068(species, GetBattlerPosition(gActiveBattler));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(gActiveBank, 2),
- GetBankSpriteDefault_Y(gActiveBank),
- sub_80A82E4(gActiveBank));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ GetBattlerSpriteDefault_Y(gActiveBattler),
+ sub_80A82E4(gActiveBattler));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = species;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_805F994;
+ gBattlerControllerFuncs[gActiveBattler] = sub_805F994;
}
static void OpponentHandleSwitchInAnim(void)
{
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = 6;
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80613DC(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_805FDF0;
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ sub_80613DC(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_805FDF0;
}
static void sub_80613DC(u8 bank, bool8 dontClearSubstituteBit)
@@ -1180,66 +1160,66 @@ static void sub_80613DC(u8 bank, bool8 dontClearSubstituteBit)
u16 species;
ClearTemporarySpeciesSpriteData(bank, dontClearSubstituteBit);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank);
- sub_806A068(species, GetBankIdentity(bank));
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[bank]], bank);
+ sub_806A068(species, GetBattlerPosition(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(bank, 2),
- GetBankSpriteDefault_Y(bank),
+ gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(bank, 2),
+ GetBattlerSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
+ gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[2] = species;
- gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBattlerSpriteIds[bank];
gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void OpponentHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = DoSwitchOutAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- EnemyShadowCallbackToSetInvisible(gActiveBank);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ HideBattlerShadowSprite(gActiveBattler);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
OpponentBufferExecCompleted();
}
}
static void DoSwitchOutAnimation(void)
{
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON);
- gBattleBankFunc[gActiveBank] = sub_805FB08;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON);
+ gBattlerControllerFuncs[gActiveBattler] = sub_805FB08;
}
break;
}
@@ -1262,7 +1242,7 @@ static void OpponentHandleDrawTrainerPic(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
trainerPicId = sub_81D5588(gTrainerBattleOpponent_A);
else
trainerPicId = sub_81D5588(gTrainerBattleOpponent_B);
@@ -1276,7 +1256,7 @@ static void OpponentHandleDrawTrainerPic(void)
{
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_A);
else
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_B);
@@ -1292,7 +1272,7 @@ static void OpponentHandleDrawTrainerPic(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
- if (gActiveBank != 1)
+ if (gActiveBattler != 1)
trainerPicId = gTrainers[gTrainerBattleOpponent_B].trainerPic;
else
trainerPicId = gTrainers[gTrainerBattleOpponent_A].trainerPic;
@@ -1304,7 +1284,7 @@ static void OpponentHandleDrawTrainerPic(void)
if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS))
{
- if ((GetBankIdentity(gActiveBank) & BIT_MON) != 0) // second mon
+ if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
xPos = 152;
else // first mon
xPos = 200;
@@ -1314,20 +1294,20 @@ static void OpponentHandleDrawTrainerPic(void)
xPos = 176;
}
- DecompressTrainerFrontPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
+ DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBank));
+ sub_80A82E4(gActiveBattler));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void OpponentHandleTrainerSlide(void)
@@ -1346,7 +1326,7 @@ static void OpponentHandleTrainerSlide(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
trainerPicId = sub_81D5588(gTrainerBattleOpponent_A);
else
trainerPicId = sub_81D5588(gTrainerBattleOpponent_B);
@@ -1360,7 +1340,7 @@ static void OpponentHandleTrainerSlide(void)
{
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_A);
else
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_B);
@@ -1376,7 +1356,7 @@ static void OpponentHandleTrainerSlide(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
- if (gActiveBank != 1)
+ if (gActiveBattler != 1)
trainerPicId = gTrainers[gTrainerBattleOpponent_B].trainerPic;
else
trainerPicId = gTrainers[gTrainerBattleOpponent_A].trainerPic;
@@ -1386,47 +1366,47 @@ static void OpponentHandleTrainerSlide(void)
trainerPicId = gTrainers[gTrainerBattleOpponent_A].trainerPic;
}
- DecompressTrainerFrontPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
+ DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, 176, (8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40, 0x1E);
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 96;
- gSprites[gBankSpriteIds[gActiveBank]].pos1.x += 32;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.x += 32;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy2;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2;
}
static void OpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_805F240;
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattlerControllerFuncs[gActiveBattler] = sub_805F240;
}
static void OpponentHandleFaintAnimation(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++;
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039934;
- gBattleBankFunc[gActiveBank] = sub_805FAC4;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039934;
+ gBattlerControllerFuncs[gActiveBattler] = sub_805FAC4;
}
}
}
@@ -1453,51 +1433,51 @@ static void OpponentHandlePause(void)
static void OpponentHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
OpponentBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = OpponentDoMoveAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = OpponentDoMoveAnimation;
}
}
}
static void OpponentDoMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 multihit = gBattleBufferA[gActiveBank][11];
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 multihit = gBattleBufferA[gActiveBattler][11];
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute
- && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
+ && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
{
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
break;
case 2:
@@ -1505,20 +1485,20 @@ static void OpponentDoMoveAnimation(void)
if (!gAnimScriptActive)
{
sub_805EB9C(1);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
CopyAllBattleSpritesInvisibilities();
- TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
OpponentBufferExecCompleted();
}
break;
@@ -1531,11 +1511,11 @@ static void OpponentHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
- sub_81A57E4(gActiveBank, *stringId);
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
+ sub_81A57E4(gActiveBattler, *stringId);
}
static void OpponentHandlePrintSelectionString(void)
@@ -1558,13 +1538,13 @@ static void OpponentHandleChooseMove(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
OpponentBufferExecCompleted();
}
else
{
u8 chosenMoveId;
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
if (gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_SAFARI | BATTLE_TYPE_ROAMER))
{
@@ -1575,24 +1555,24 @@ static void OpponentHandleChooseMove(void)
switch (chosenMoveId)
{
case 5:
- EmitTwoReturnValues(1, ACTION_WATCHES_CAREFULLY, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
break;
case 4:
- EmitTwoReturnValues(1, ACTION_RUN, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
break;
case 6:
- EmitTwoReturnValues(1, 15, gBankTarget);
+ BtlController_EmitTwoReturnValues(1, 15, gBattlerTarget);
break;
default:
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER | MOVE_TARGET_x10))
- gBankTarget = gActiveBank;
+ gBattlerTarget = gActiveBattler;
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH)
{
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
- EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBankTarget << 8));
+ BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8));
break;
}
OpponentBufferExecCompleted();
@@ -1607,11 +1587,11 @@ static void OpponentHandleChooseMove(void)
} while (move == MOVE_NONE);
if (gBattleMoves[move].target & (MOVE_TARGET_USER | MOVE_TARGET_x10))
- EmitTwoReturnValues(1, 10, (chosenMoveId) | (gActiveBank << 8));
+ BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gActiveBattler << 8));
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBankByIdentity(Random() & 2) << 8));
+ BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(Random() & 2) << 8));
else
- EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBankByIdentity(IDENTITY_PLAYER_MON1) << 8));
+ BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8));
OpponentBufferExecCompleted();
}
@@ -1620,7 +1600,7 @@ static void OpponentHandleChooseMove(void)
static void OpponentHandleChooseItem(void)
{
- EmitOneReturnValue(1, *(gBattleStruct->chosenItem + (gActiveBank / 2) * 2));
+ BtlController_EmitOneReturnValue(1, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2));
OpponentBufferExecCompleted();
}
@@ -1628,7 +1608,7 @@ static void OpponentHandleChoosePokemon(void)
{
s32 chosenMonId;
- if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) == 6)
+ if (*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) == 6)
{
chosenMonId = GetMostSuitableMonToSwitchInto();
@@ -1638,17 +1618,17 @@ static void OpponentHandleChoosePokemon(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- bank2 = bank1 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ bank2 = bank1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
}
else
{
- bank1 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- bank2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ bank1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ bank2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
{
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
firstId = 0, lastId = 3;
else
firstId = 3, lastId = 6;
@@ -1661,8 +1641,8 @@ static void OpponentHandleChoosePokemon(void)
for (chosenMonId = firstId; chosenMonId < lastId; chosenMonId++)
{
if (GetMonData(&gEnemyParty[chosenMonId], MON_DATA_HP) != 0
- && chosenMonId != gBattlePartyID[bank1]
- && chosenMonId != gBattlePartyID[bank2])
+ && chosenMonId != gBattlerPartyIndexes[bank1]
+ && chosenMonId != gBattlerPartyIndexes[bank2])
{
break;
}
@@ -1671,13 +1651,13 @@ static void OpponentHandleChoosePokemon(void)
}
else
{
- chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank);
- *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
+ chosenMonId = *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler);
+ *(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = 6;
}
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = chosenMonId;
- EmitChosenMonReturnValue(1, chosenMonId, NULL);
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
+ BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL);
OpponentBufferExecCompleted();
}
@@ -1691,23 +1671,23 @@ static void OpponentHandleHealthBarUpdate(void)
s16 hpVal;
LoadBattleBarGfx(0);
- hpVal = (gBattleBufferA[gActiveBank][3] << 8) | gBattleBufferA[gActiveBank][2];
+ hpVal = (gBattleBufferA[gActiveBattler][3] << 8) | gBattleBufferA[gActiveBattler][2];
if (hpVal != INSTANT_HP_BAR_DROP)
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
}
- gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void OpponentHandleExpUpdate(void)
@@ -1717,24 +1697,24 @@ static void OpponentHandleExpUpdate(void)
static void OpponentHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
u8 bank;
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_STATUS_ICON);
- bank = gActiveBank;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
+ bank = gActiveBattler;
gBattleSpritesDataPtr->healthBoxesData[bank].statusAnimActive = 0;
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
static void OpponentHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
@@ -1791,7 +1771,7 @@ static void OpponentHandleCmd37(void)
static void OpponentHandleCmd38(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
OpponentBufferExecCompleted();
}
@@ -1809,16 +1789,16 @@ static void OpponentHandleCmd40(void)
static void OpponentHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
OpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- DoHitAnimHealthboxEffect(gActiveBank);
- gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ DoHitAnimHealthboxEffect(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect;
}
}
@@ -1831,25 +1811,25 @@ static void OpponentHandlePlaySE(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
pan = PAN_SIDE_PLAYER;
else
pan = PAN_SIDE_OPPONENT;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
OpponentBufferExecCompleted();
}
static void OpponentHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
OpponentBufferExecCompleted();
@@ -1857,7 +1837,7 @@ static void OpponentHandlePlayFanfareOrBGM(void)
static void OpponentHandleFaintingCry(void)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry3(species, 25, 5);
OpponentBufferExecCompleted();
@@ -1865,8 +1845,8 @@ static void OpponentHandleFaintingCry(void)
static void OpponentHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
OpponentBufferExecCompleted();
}
@@ -1875,23 +1855,23 @@ static void OpponentHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_806280C);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_806280C);
taskId = CreateTask(sub_8062828, 5);
- gTasks[taskId].data[0] = gActiveBank;
+ gTasks[taskId].data[0] = gActiveBattler;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_26;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_26;
}
static void sub_806280C(struct Sprite *sprite)
@@ -1903,79 +1883,79 @@ static void sub_806280C(struct Sprite *sprite)
static void sub_8062828(u8 taskId)
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80613DC(gActiveBank, FALSE);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_80613DC(gActiveBattler, FALSE);
}
else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80613DC(gActiveBank, FALSE);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_80613DC(gActiveBattler, FALSE);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80613DC(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80613DC(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_80613DC(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_80613DC(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
}
- gBattleBankFunc[gActiveBank] = sub_805F560;
- gActiveBank = savedActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = sub_805F560;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
static void OpponentHandleDrawPartyStatusSummary(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
OpponentBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
- if (gBattleBufferA[gActiveBank][2] != 0)
+ if (gBattleBufferA[gActiveBattler][2] != 0)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E < 2)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E < 2)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E++;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E++;
return;
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0;
}
}
- gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0x5D;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_8062A2C;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8062A2C;
}
}
static void sub_8062A2C(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
OpponentBufferExecCompleted();
}
}
static void OpponentHandleCmd49(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
OpponentBufferExecCompleted();
}
@@ -1986,25 +1966,25 @@ static void OpponentHandleCmd50(void)
static void OpponentHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank))
+ if (IsBattlerSpritePresent(gActiveBattler))
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- CopyBattleSpriteInvisibility(gActiveBank);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ CopyBattleSpriteInvisibility(gActiveBattler);
}
OpponentBufferExecCompleted();
}
static void OpponentHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
OpponentBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 2434eb177..8847715f6 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -26,44 +26,19 @@
#include "random.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
+#include "item_use.h"
+#include "recorded_battle.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gAbsentBankFlags;
-extern u8 gNoOfAllBanks;
-extern bool8 gDoingBattleAnim;
-extern u8 gPlayerDpadHoldFrames;
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern u8 gMultiUsePlayerCursor;
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u16 gPartnerTrainerId;
-extern struct SpriteTemplate gUnknown_0202499C;
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u16 gSpecialVar_ItemId;
extern u8 gUnknown_0203CEE8;
extern u8 gUnknown_0203CEE9;
extern u8 gUnknown_0203CF00[];
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleOutcome;
-extern u8 gNumberOfMovesToChoose;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
extern s32 gUnknown_0203CD70;
-extern u8 gBankInMenu;
-extern u32 gBattlePalaceMoveSelectionRngValue;
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
-extern u8 gUnknown_020244B4[];
-extern u16 gUnknown_020243FC;
extern struct UnusedControllerStruct gUnknown_02022D0C;
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+extern struct SpriteTemplate gUnknown_0202499C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -232,7 +207,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
nullsub_22
};
-static const u8 sTargetIdentities[] = {IDENTITY_PLAYER_MON1, IDENTITY_PLAYER_MON2, IDENTITY_OPPONENT_MON2, IDENTITY_OPPONENT_MON1};
+static const u8 sTargetIdentities[] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT};
// unknown unused data
static const u8 sUnknown_0831C5FC[] = {0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58};
@@ -243,33 +218,33 @@ void nullsub_21(void)
void SetControllerToPlayer(void)
{
- gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerBufferRunCommand;
gDoingBattleAnim = FALSE;
gPlayerDpadHoldFrames = 0;
}
static void PlayerBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
static void PlayerBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sPlayerBufferCommands))
- sPlayerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sPlayerBufferCommands))
+ sPlayerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
PlayerBufferExecCompleted();
}
@@ -277,16 +252,16 @@ static void PlayerBufferRunCommand(void)
static void CompleteOnBankSpritePosX_0(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
PlayerBufferExecCompleted();
}
static void HandleInputChooseAction(void)
{
- u16 itemId = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u16 itemId = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
- dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ dp11b_obj_instanciate(gActiveBattler, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBattler, 0, 7, 1);
if (gMain.newAndRepeatedKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == 2)
gPlayerDpadHoldFrames++;
@@ -297,71 +272,71 @@ static void HandleInputChooseAction(void)
{
PlaySE(SE_SELECT);
- switch (gActionSelectionCursor[gActiveBank])
+ switch (gActionSelectionCursor[gActiveBattler])
{
case 0:
- EmitTwoReturnValues(1, ACTION_USE_MOVE, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
break;
case 1:
- EmitTwoReturnValues(1, ACTION_USE_ITEM, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
break;
case 2:
- EmitTwoReturnValues(1, ACTION_SWITCH, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
break;
case 3:
- EmitTwoReturnValues(1, ACTION_RUN, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
break;
}
PlayerBufferExecCompleted();
}
else if (gMain.newKeys & DPAD_LEFT)
{
- if (gActionSelectionCursor[gActiveBank] & 1) // if is ACTION_USE_ITEM or ACTION_RUN
+ if (gActionSelectionCursor[gActiveBattler] & 1) // if is B_ACTION_USE_ITEM or B_ACTION_RUN
{
PlaySE(SE_SELECT);
- ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 1;
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 1;
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_RIGHT)
{
- if (!(gActionSelectionCursor[gActiveBank] & 1)) // if is ACTION_USE_MOVE or ACTION_SWITCH
+ if (!(gActionSelectionCursor[gActiveBattler] & 1)) // if is B_ACTION_USE_MOVE or B_ACTION_SWITCH
{
PlaySE(SE_SELECT);
- ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 1;
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 1;
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_UP)
{
- if (gActionSelectionCursor[gActiveBank] & 2) // if is ACTION_SWITCH or ACTION_RUN
+ if (gActionSelectionCursor[gActiveBattler] & 2) // if is B_ACTION_SWITCH or B_ACTION_RUN
{
PlaySE(SE_SELECT);
- ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 2;
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 2;
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (!(gActionSelectionCursor[gActiveBank] & 2)) // if is ACTION_USE_MOVE or ACTION_USE_ITEM
+ if (!(gActionSelectionCursor[gActiveBattler] & 2)) // if is B_ACTION_USE_MOVE or B_ACTION_USE_ITEM
{
PlaySE(SE_SELECT);
- ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 2;
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 2;
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- && GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON2
- && !(gAbsentBankFlags & gBitTable[GetBankByIdentity(IDENTITY_PLAYER_MON1)])
+ && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT
+ && !(gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)])
&& !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- if (gBattleBufferA[gActiveBank][1] == ACTION_USE_ITEM)
+ if (gBattleBufferA[gActiveBattler][1] == B_ACTION_USE_ITEM)
{
// Add item to bag if it is a ball
if (itemId <= ITEM_PREMIER_BALL)
@@ -370,7 +345,7 @@ static void HandleInputChooseAction(void)
return;
}
PlaySE(SE_SELECT);
- EmitTwoReturnValues(1, ACTION_CANCEL_PARTNER, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_CANCEL_PARTNER, 0);
PlayerBufferExecCompleted();
}
}
@@ -382,9 +357,9 @@ static void HandleInputChooseAction(void)
static void sub_80577F0(void) // unused
{
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- gBattleBankFunc[gActiveBank] = HandleInputChooseTarget;
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseTarget;
}
static void HandleInputChooseTarget(void)
@@ -397,14 +372,14 @@ static void HandleInputChooseTarget(void)
// what a weird loop
i = 0;
- if (gNoOfAllBanks != 0)
+ if (gBattlersCount != 0)
{
do
{
if (i != gMultiUsePlayerCursor)
dp11b_obj_free(i, 1);
i++;
- } while (i < gNoOfAllBanks);
+ } while (i < gBattlersCount);
}
if (gMain.heldKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == 2)
@@ -415,30 +390,30 @@ static void HandleInputChooseTarget(void)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- gSprites[gBankSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
- EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBank] | (gMultiUsePlayerCursor << 8));
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
+ BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
dp11b_obj_free(gMultiUsePlayerCursor, 1);
PlayerBufferExecCompleted();
}
else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59)
{
PlaySE(SE_SELECT);
- gSprites[gBankSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
- gBattleBankFunc[gActiveBank] = HandleInputChooseMove;
- dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
- dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
+ dp11b_obj_instanciate(gActiveBattler, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBattler, 0, 7, 1);
dp11b_obj_free(gMultiUsePlayerCursor, 1);
}
else if (gMain.newKeys & (DPAD_LEFT | DPAD_UP))
{
PlaySE(SE_SELECT);
- gSprites[gBankSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
do
{
- u8 currSelIdentity = GetBankIdentity(gMultiUsePlayerCursor);
+ u8 currSelIdentity = GetBattlerPosition(gMultiUsePlayerCursor);
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (currSelIdentity == identities[i])
break;
@@ -447,40 +422,40 @@ static void HandleInputChooseTarget(void)
{
if (--i < 0)
i = 4; // UB: array out of range
- gMultiUsePlayerCursor = GetBankByIdentity(identities[i]);
- } while (gMultiUsePlayerCursor == gNoOfAllBanks);
+ gMultiUsePlayerCursor = GetBattlerAtPosition(identities[i]);
+ } while (gMultiUsePlayerCursor == gBattlersCount);
i = 0;
- switch (GetBankIdentity(gMultiUsePlayerCursor))
+ switch (GetBattlerPosition(gMultiUsePlayerCursor))
{
- case IDENTITY_PLAYER_MON1:
- case IDENTITY_PLAYER_MON2:
- if (gActiveBank != gMultiUsePlayerCursor)
+ case B_POSITION_PLAYER_LEFT:
+ case B_POSITION_PLAYER_RIGHT:
+ if (gActiveBattler != gMultiUsePlayerCursor)
i++;
- else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank])].target & MOVE_TARGET_USER)
+ else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER)
i++;
break;
- case IDENTITY_OPPONENT_MON1:
- case IDENTITY_OPPONENT_MON2:
+ case B_POSITION_OPPONENT_LEFT:
+ case B_POSITION_OPPONENT_RIGHT:
i++;
break;
}
- if (gAbsentBankFlags & gBitTable[gMultiUsePlayerCursor])
+ if (gAbsentBattlerFlags & gBitTable[gMultiUsePlayerCursor])
i = 0;
} while (i == 0);
- gSprites[gBankSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039AD8;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039AD8;
}
else if (gMain.newKeys & (DPAD_RIGHT | DPAD_DOWN))
{
PlaySE(SE_SELECT);
- gSprites[gBankSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039B2C;
do
{
- u8 currSelIdentity = GetBankIdentity(gMultiUsePlayerCursor);
+ u8 currSelIdentity = GetBattlerPosition(gMultiUsePlayerCursor);
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (currSelIdentity == identities[i])
break;
@@ -489,36 +464,36 @@ static void HandleInputChooseTarget(void)
{
if (++i > 3)
i = 0;
- gMultiUsePlayerCursor = GetBankByIdentity(identities[i]);
- } while (gMultiUsePlayerCursor == gNoOfAllBanks);
+ gMultiUsePlayerCursor = GetBattlerAtPosition(identities[i]);
+ } while (gMultiUsePlayerCursor == gBattlersCount);
i = 0;
- switch (GetBankIdentity(gMultiUsePlayerCursor))
+ switch (GetBattlerPosition(gMultiUsePlayerCursor))
{
- case IDENTITY_PLAYER_MON1:
- case IDENTITY_PLAYER_MON2:
- if (gActiveBank != gMultiUsePlayerCursor)
+ case B_POSITION_PLAYER_LEFT:
+ case B_POSITION_PLAYER_RIGHT:
+ if (gActiveBattler != gMultiUsePlayerCursor)
i++;
- else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank])].target & MOVE_TARGET_USER)
+ else if (gBattleMoves[GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBattler])].target & MOVE_TARGET_USER)
i++;
break;
- case IDENTITY_OPPONENT_MON1:
- case IDENTITY_OPPONENT_MON2:
+ case B_POSITION_OPPONENT_LEFT:
+ case B_POSITION_OPPONENT_RIGHT:
i++;
break;
}
- if (gAbsentBankFlags & gBitTable[gMultiUsePlayerCursor])
+ if (gAbsentBattlerFlags & gBitTable[gMultiUsePlayerCursor])
i = 0;
} while (i == 0);
- gSprites[gBankSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039AD8;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039AD8;
}
}
static void HandleInputChooseMove(void)
{
bool32 canSelectTarget = FALSE;
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
if (gMain.heldKeys & DPAD_ANY && gSaveBlock2Ptr->optionsButtonMode == 2)
gPlayerDpadHoldFrames++;
@@ -530,7 +505,7 @@ static void HandleInputChooseMove(void)
u8 moveTarget;
PlaySE(SE_SELECT);
- if (moveInfo->moves[gMoveSelectionCursor[gActiveBank]] == MOVE_CURSE)
+ if (moveInfo->moves[gMoveSelectionCursor[gActiveBattler]] == MOVE_CURSE)
{
if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST)
moveTarget = MOVE_TARGET_x10;
@@ -539,17 +514,17 @@ static void HandleInputChooseMove(void)
}
else
{
- moveTarget = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBank]]].target;
+ moveTarget = gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].target;
}
if (moveTarget & MOVE_TARGET_x10)
- gMultiUsePlayerCursor = gActiveBank;
+ gMultiUsePlayerCursor = gActiveBattler;
else
- gMultiUsePlayerCursor = GetBankByIdentity((GetBankIdentity(gActiveBank) & BIT_SIDE) ^ BIT_SIDE);
+ gMultiUsePlayerCursor = GetBattlerAtPosition((GetBattlerPosition(gActiveBattler) & BIT_SIDE) ^ BIT_SIDE);
- if (!gBattleBufferA[gActiveBank][1]) // not a double battle
+ if (!gBattleBufferA[gActiveBattler][1]) // not a double battle
{
- if (moveTarget & MOVE_TARGET_USER && !gBattleBufferA[gActiveBank][2])
+ if (moveTarget & MOVE_TARGET_USER && !gBattleBufferA[gActiveBattler][2])
canSelectTarget++;
}
else // double battle
@@ -557,88 +532,88 @@ static void HandleInputChooseMove(void)
if (!(moveTarget & (MOVE_TARGET_RANDOM | MOVE_TARGET_BOTH | MOVE_TARGET_DEPENDS | MOVE_TARGET_FOES_AND_ALLY | MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_x10)))
canSelectTarget++; // either selected or user
- if (moveInfo->currentPp[gMoveSelectionCursor[gActiveBank]] == 0)
+ if (moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]] == 0)
{
canSelectTarget = FALSE;
}
else if (!(moveTarget & (MOVE_TARGET_x10 | MOVE_TARGET_USER)) && CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) <= 1)
{
- gMultiUsePlayerCursor = GetDefaultMoveTarget(gActiveBank);
+ gMultiUsePlayerCursor = GetDefaultMoveTarget(gActiveBattler);
canSelectTarget = FALSE;
}
}
if (!canSelectTarget)
{
- EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBank] | (gMultiUsePlayerCursor << 8));
+ BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
PlayerBufferExecCompleted();
}
else
{
- gBattleBankFunc[gActiveBank] = HandleInputChooseTarget;
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseTarget;
if (moveTarget & (MOVE_TARGET_x10 | MOVE_TARGET_USER))
- gMultiUsePlayerCursor = gActiveBank;
- else if (gAbsentBankFlags & gBitTable[GetBankByIdentity(IDENTITY_OPPONENT_MON1)])
- gMultiUsePlayerCursor = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ gMultiUsePlayerCursor = gActiveBattler;
+ else if (gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)])
+ gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
else
- gMultiUsePlayerCursor = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
- gSprites[gBankSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039AD8;
+ gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = sub_8039AD8;
}
}
else if (gMain.newKeys & B_BUTTON || gPlayerDpadHoldFrames > 59)
{
PlaySE(SE_SELECT);
- EmitTwoReturnValues(1, 10, 0xFFFF);
+ BtlController_EmitTwoReturnValues(1, 10, 0xFFFF);
PlayerBufferExecCompleted();
}
else if (gMain.newKeys & DPAD_LEFT)
{
- if (gMoveSelectionCursor[gActiveBank] & 1)
+ if (gMoveSelectionCursor[gActiveBattler] & 1)
{
- MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 1;
+ MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 1;
PlaySE(SE_SELECT);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
}
}
else if (gMain.newKeys & DPAD_RIGHT)
{
- if (!(gMoveSelectionCursor[gActiveBank] & 1)
- && (gMoveSelectionCursor[gActiveBank] ^ 1) < gNumberOfMovesToChoose)
+ if (!(gMoveSelectionCursor[gActiveBattler] & 1)
+ && (gMoveSelectionCursor[gActiveBattler] ^ 1) < gNumberOfMovesToChoose)
{
- MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 1;
+ MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 1;
PlaySE(SE_SELECT);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
}
}
else if (gMain.newKeys & DPAD_UP)
{
- if (gMoveSelectionCursor[gActiveBank] & 2)
+ if (gMoveSelectionCursor[gActiveBattler] & 2)
{
- MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 2;
+ MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 2;
PlaySE(SE_SELECT);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
}
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (!(gMoveSelectionCursor[gActiveBank] & 2)
- && (gMoveSelectionCursor[gActiveBank] ^ 2) < gNumberOfMovesToChoose)
+ if (!(gMoveSelectionCursor[gActiveBattler] & 2)
+ && (gMoveSelectionCursor[gActiveBattler] ^ 2) < gNumberOfMovesToChoose)
{
- MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 2;
+ MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 2;
PlaySE(SE_SELECT);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
}
@@ -647,16 +622,16 @@ static void HandleInputChooseMove(void)
{
if (gNumberOfMovesToChoose > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK))
{
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 29);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29);
- if (gMoveSelectionCursor[gActiveBank] != 0)
+ if (gMoveSelectionCursor[gActiveBattler] != 0)
gMultiUsePlayerCursor = 0;
else
- gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBank] + 1;
+ gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBattler] + 1;
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
BattleHandleAddTextPrinter(gText_BattleSwitchWhich, 0xB);
- gBattleBankFunc[gActiveBank] = HandleMoveSwitchting;
+ gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitchting;
}
}
}
@@ -677,35 +652,35 @@ u32 sub_8057FBC(void) // unused
gBattle_BG0_Y = 0x140;
var = 0xFF;
}
- if (gMain.newKeys & DPAD_LEFT && gMoveSelectionCursor[gActiveBank] & 1)
+ if (gMain.newKeys & DPAD_LEFT && gMoveSelectionCursor[gActiveBattler] & 1)
{
- MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 1;
+ MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 1;
PlaySE(SE_SELECT);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
}
- if (gMain.newKeys & DPAD_RIGHT && !(gMoveSelectionCursor[gActiveBank] & 1)
- && (gMoveSelectionCursor[gActiveBank] ^ 1) < gNumberOfMovesToChoose)
+ if (gMain.newKeys & DPAD_RIGHT && !(gMoveSelectionCursor[gActiveBattler] & 1)
+ && (gMoveSelectionCursor[gActiveBattler] ^ 1) < gNumberOfMovesToChoose)
{
- MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 1;
+ MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 1;
PlaySE(SE_SELECT);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
}
- if (gMain.newKeys & DPAD_UP && gMoveSelectionCursor[gActiveBank] & 2)
+ if (gMain.newKeys & DPAD_UP && gMoveSelectionCursor[gActiveBattler] & 2)
{
- MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 2;
+ MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 2;
PlaySE(SE_SELECT);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
}
- if (gMain.newKeys & DPAD_DOWN && !(gMoveSelectionCursor[gActiveBank] & 2)
- && (gMoveSelectionCursor[gActiveBank] ^ 2) < gNumberOfMovesToChoose)
+ if (gMain.newKeys & DPAD_DOWN && !(gMoveSelectionCursor[gActiveBattler] & 2)
+ && (gMoveSelectionCursor[gActiveBattler] ^ 2) < gNumberOfMovesToChoose)
{
- MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBank]);
- gMoveSelectionCursor[gActiveBank] ^= 2;
+ MoveSelectionDestroyCursorAt(gMoveSelectionCursor[gActiveBattler]);
+ gMoveSelectionCursor[gActiveBattler] ^= 2;
PlaySE(SE_SELECT);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
}
return var;
@@ -721,73 +696,73 @@ static void HandleMoveSwitchting(void)
{
PlaySE(SE_SELECT);
- if (gMoveSelectionCursor[gActiveBank] != gMultiUsePlayerCursor)
+ if (gMoveSelectionCursor[gActiveBattler] != gMultiUsePlayerCursor)
{
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
s32 i;
// swap moves and pp
- i = moveInfo->moves[gMoveSelectionCursor[gActiveBank]];
- moveInfo->moves[gMoveSelectionCursor[gActiveBank]] = moveInfo->moves[gMultiUsePlayerCursor];
+ i = moveInfo->moves[gMoveSelectionCursor[gActiveBattler]];
+ moveInfo->moves[gMoveSelectionCursor[gActiveBattler]] = moveInfo->moves[gMultiUsePlayerCursor];
moveInfo->moves[gMultiUsePlayerCursor] = i;
- i = moveInfo->currentPp[gMoveSelectionCursor[gActiveBank]];
- moveInfo->currentPp[gMoveSelectionCursor[gActiveBank]] = moveInfo->currentPp[gMultiUsePlayerCursor];
+ i = moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]];
+ moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]] = moveInfo->currentPp[gMultiUsePlayerCursor];
moveInfo->currentPp[gMultiUsePlayerCursor] = i;
- i = moveInfo->maxPp[gMoveSelectionCursor[gActiveBank]];
- moveInfo->maxPp[gMoveSelectionCursor[gActiveBank]] = moveInfo->maxPp[gMultiUsePlayerCursor];
+ i = moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]];
+ moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]] = moveInfo->maxPp[gMultiUsePlayerCursor];
moveInfo->maxPp[gMultiUsePlayerCursor] = i;
- if (gDisableStructs[gActiveBank].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBank]])
+ if (gDisableStructs[gActiveBattler].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBattler]])
{
- gDisableStructs[gActiveBank].unk18_b &= (~gBitTable[gMoveSelectionCursor[gActiveBank]]);
- gDisableStructs[gActiveBank].unk18_b |= gBitTable[gMultiUsePlayerCursor];
+ gDisableStructs[gActiveBattler].unk18_b &= (~gBitTable[gMoveSelectionCursor[gActiveBattler]]);
+ gDisableStructs[gActiveBattler].unk18_b |= gBitTable[gMultiUsePlayerCursor];
}
MoveSelectionDisplayMoveNames();
for (i = 0; i < 4; i++)
- perMovePPBonuses[i] = (gBattleMons[gActiveBank].ppBonuses & (3 << (i * 2))) >> (i * 2);
+ perMovePPBonuses[i] = (gBattleMons[gActiveBattler].ppBonuses & (3 << (i * 2))) >> (i * 2);
- totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]];
- perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gMultiUsePlayerCursor];
+ totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]];
+ perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gMultiUsePlayerCursor];
perMovePPBonuses[gMultiUsePlayerCursor] = totalPPBonuses;
totalPPBonuses = 0;
for (i = 0; i < 4; i++)
totalPPBonuses |= perMovePPBonuses[i] << (i * 2);
- gBattleMons[gActiveBank].ppBonuses = totalPPBonuses;
+ gBattleMons[gActiveBattler].ppBonuses = totalPPBonuses;
for (i = 0; i < 4; i++)
{
- gBattleMons[gActiveBank].moves[i] = moveInfo->moves[i];
- gBattleMons[gActiveBank].pp[i] = moveInfo->currentPp[i];
+ gBattleMons[gActiveBattler].moves[i] = moveInfo->moves[i];
+ gBattleMons[gActiveBattler].pp[i] = moveInfo->currentPp[i];
}
- if (!(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ if (!(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
for (i = 0; i < 4; i++)
{
- moveStruct.moves[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i);
- moveStruct.currentPp[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i);
+ moveStruct.moves[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i);
+ moveStruct.currentPp[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP1 + i);
}
- totalPPBonuses = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES);
+ totalPPBonuses = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP_BONUSES);
for (i = 0; i < 4; i++)
perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2);
- i = moveStruct.moves[gMoveSelectionCursor[gActiveBank]];
- moveStruct.moves[gMoveSelectionCursor[gActiveBank]] = moveStruct.moves[gMultiUsePlayerCursor];
+ i = moveStruct.moves[gMoveSelectionCursor[gActiveBattler]];
+ moveStruct.moves[gMoveSelectionCursor[gActiveBattler]] = moveStruct.moves[gMultiUsePlayerCursor];
moveStruct.moves[gMultiUsePlayerCursor] = i;
- i = moveStruct.currentPp[gMoveSelectionCursor[gActiveBank]];
- moveStruct.currentPp[gMoveSelectionCursor[gActiveBank]] = moveStruct.currentPp[gMultiUsePlayerCursor];
+ i = moveStruct.currentPp[gMoveSelectionCursor[gActiveBattler]];
+ moveStruct.currentPp[gMoveSelectionCursor[gActiveBattler]] = moveStruct.currentPp[gMultiUsePlayerCursor];
moveStruct.currentPp[gMultiUsePlayerCursor] = i;
- totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]];
- perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gMultiUsePlayerCursor];
+ totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]];
+ perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gMultiUsePlayerCursor];
perMovePPBonuses[gMultiUsePlayerCursor] = totalPPBonuses;
totalPPBonuses = 0;
@@ -796,17 +771,17 @@ static void HandleMoveSwitchting(void)
for (i = 0; i < 4; i++)
{
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i, &moveStruct.moves[i]);
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i, &moveStruct.currentPp[i]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i, &moveStruct.moves[i]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP1 + i, &moveStruct.currentPp[i]);
}
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES, &totalPPBonuses);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP_BONUSES, &totalPPBonuses);
}
}
- gBattleBankFunc[gActiveBank] = HandleInputChooseMove;
- gMoveSelectionCursor[gActiveBank] = gMultiUsePlayerCursor;
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
+ gMoveSelectionCursor[gActiveBattler] = gMultiUsePlayerCursor;
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
MoveSelectionDisplayPpString();
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
@@ -815,8 +790,8 @@ static void HandleMoveSwitchting(void)
{
PlaySE(SE_SELECT);
MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor);
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
- gBattleBankFunc[gActiveBank] = HandleInputChooseMove;
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
MoveSelectionDisplayPpString();
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
@@ -825,15 +800,15 @@ static void HandleMoveSwitchting(void)
{
if (gMultiUsePlayerCursor & 1)
{
- if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBank])
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 29);
+ if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler])
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29);
else
MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor);
gMultiUsePlayerCursor ^= 1;
PlaySE(SE_SELECT);
- if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBank])
+ if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler])
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0);
else
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
@@ -843,15 +818,15 @@ static void HandleMoveSwitchting(void)
{
if (!(gMultiUsePlayerCursor & 1) && (gMultiUsePlayerCursor ^ 1) < gNumberOfMovesToChoose)
{
- if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBank])
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 29);
+ if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler])
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29);
else
MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor);
gMultiUsePlayerCursor ^= 1;
PlaySE(SE_SELECT);
- if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBank])
+ if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler])
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0);
else
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
@@ -861,15 +836,15 @@ static void HandleMoveSwitchting(void)
{
if (gMultiUsePlayerCursor & 2)
{
- if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBank])
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 29);
+ if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler])
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29);
else
MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor);
gMultiUsePlayerCursor ^= 2;
PlaySE(SE_SELECT);
- if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBank])
+ if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler])
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0);
else
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
@@ -879,15 +854,15 @@ static void HandleMoveSwitchting(void)
{
if (!(gMultiUsePlayerCursor & 2) && (gMultiUsePlayerCursor ^ 2) < gNumberOfMovesToChoose)
{
- if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBank])
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 29);
+ if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler])
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 29);
else
MoveSelectionDestroyCursorAt(gMultiUsePlayerCursor);
gMultiUsePlayerCursor ^= 2;
PlaySE(SE_SELECT);
- if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBank])
+ if (gMultiUsePlayerCursor == gMoveSelectionCursor[gActiveBattler])
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 0);
else
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
@@ -905,7 +880,7 @@ static void sub_80586F8(void)
gMain.inBattle = 0;
gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(sub_8038D64);
- if (gBattleOutcome == BATTLE_WON)
+ if (gBattleOutcome == B_OUTCOME_WON)
sub_817E3F4();
FreeAllWindowBuffers();
}
@@ -918,7 +893,7 @@ static void sub_80586F8(void)
gMain.inBattle = 0;
gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(sub_8038D64);
- if (gBattleOutcome == BATTLE_WON)
+ if (gBattleOutcome == B_OUTCOME_WON)
sub_817E3F4();
FreeAllWindowBuffers();
}
@@ -938,7 +913,7 @@ void sub_80587B0(void)
else
sub_800ADF8();
- gBattleBankFunc[gActiveBank] = sub_80586F8;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80586F8;
}
}
else
@@ -953,32 +928,32 @@ void sub_80587B0(void)
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
static void CompleteOnBankSpriteCallbackDummy2(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
static void sub_80588B4(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
nullsub_25(gSaveBlock2Ptr->playerGender);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
PlayerBufferExecCompleted();
}
}
static void sub_8058924(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
PlayerBufferExecCompleted();
}
}
@@ -989,33 +964,33 @@ static void sub_805896C(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
var = TRUE;
}
else
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthBoxesIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
var = TRUE;
}
- if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
+ if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
if (IsDoubleBattle())
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], gActiveBank ^ BIT_MON);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], gActiveBattler ^ BIT_FLANK);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3;
- gBattleBankFunc[gActiveBank] = sub_8058924;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8058924;
}
}
@@ -1024,58 +999,58 @@ static void sub_8058B40(void)
bool32 r9 = FALSE;
bool32 r8 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
- sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
- sub_8172EF0(gActiveBank ^ BIT_MON, &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+ sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank ^ BIT_MON], &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank ^ BIT_MON);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank ^ BIT_MON]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler ^ BIT_FLANK);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 1;
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x40
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x40
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x40
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x40
&& !IsCryPlayingOrClearCrySongs())
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
m4aMPlayContinue(&gMPlayInfo_BGM);
else
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 1;
r9 = TRUE;
}
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
r8 = TRUE;
}
}
else
{
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
r8 = TRUE;
}
@@ -1084,63 +1059,63 @@ static void sub_8058B40(void)
if (r9 && r8)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]]);
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 0;
- gBattleBankFunc[gActiveBank] = sub_805896C;
+ gBattlerControllerFuncs[gActiveBattler] = sub_805896C;
}
}
static void sub_8058EDC(void)
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- CopyBattleSpriteInvisibility(gActiveBank);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ CopyBattleSpriteInvisibility(gActiveBattler);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleBankFunc[gActiveBank] = sub_8058FC0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8058FC0;
}
}
static void sub_8058FC0(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive
&& !IsCryPlayingOrClearCrySongs())
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlayerBufferExecCompleted();
}
}
static void sub_805902C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
- gBattleBankFunc[gActiveBank] = sub_8058EDC;
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8058EDC;
}
}
@@ -1155,17 +1130,17 @@ void c3_0802FDF4(u8 taskId)
static void CompleteOnHealthbarDone(void)
{
- s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], HEALTH_BAR, 0);
+ s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
if (hpValue != -1)
{
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], hpValue, HP_CURRENT);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
}
else
{
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlayerBufferExecCompleted();
}
}
@@ -1187,7 +1162,7 @@ static void Task_GiveExpToMon(u8 taskId)
u8 bank = gTasks[taskId].tExpTask_bank;
s16 gainedExp = gTasks[taskId].tExpTask_gainedExp;
- if (IsDoubleBattle() == TRUE || monId != gBattlePartyID[bank]) // give exp without the expbar
+ if (IsDoubleBattle() == TRUE || monId != gBattlerPartyIndexes[bank]) // give exp without the expbar
{
struct Pokemon *mon = &gPlayerParty[monId];
u16 species = GetMonData(mon, MON_DATA_SPECIES);
@@ -1202,13 +1177,13 @@ static void Task_GiveExpToMon(u8 taskId)
SetMonData(mon, MON_DATA_EXP, &nextLvlExp);
CalculateMonStats(mon);
gainedExp -= nextLvlExp - currExp;
- savedActiveBank = gActiveBank;
- gActiveBank = bank;
- EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
- gActiveBank = savedActiveBank;
+ savedActiveBank = gActiveBattler;
+ gActiveBattler = bank;
+ BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
+ gActiveBattler = savedActiveBank;
if (IsDoubleBattle() == TRUE
- && ((u16)(monId) == gBattlePartyID[bank] || (u16)(monId) == gBattlePartyID[bank ^ BIT_MON]))
+ && ((u16)(monId) == gBattlerPartyIndexes[bank] || (u16)(monId) == gBattlerPartyIndexes[bank ^ BIT_FLANK]))
gTasks[taskId].func = sub_8059544;
else
gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter;
@@ -1217,7 +1192,7 @@ static void Task_GiveExpToMon(u8 taskId)
{
currExp += gainedExp;
SetMonData(mon, MON_DATA_EXP, &currExp);
- gBattleBankFunc[bank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[bank] = CompleteOnInactiveTextPrinter;
DestroyTask(taskId);
}
}
@@ -1241,7 +1216,7 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
exp -= currLvlExp;
expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp;
- SetBattleBarStruct(bank, gHealthBoxesIds[bank], expToNextLvl, exp, -gainedExp);
+ SetBattleBarStruct(bank, gHealthboxSpriteIds[bank], expToNextLvl, exp, -gainedExp);
PlaySE(SE_EXP);
gTasks[taskId].func = sub_8059400;
}
@@ -1259,8 +1234,8 @@ static void sub_8059400(u8 taskId)
u8 bank = gTasks[taskId].tExpTask_bank;
s16 r4;
- r4 = sub_8074AA0(bank, gHealthBoxesIds[bank], EXP_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[bank]);
+ r4 = sub_8074AA0(bank, gHealthboxSpriteIds[bank], EXP_BAR, 0);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[bank]);
if (r4 == -1)
{
u8 level;
@@ -1281,17 +1256,17 @@ static void sub_8059400(u8 taskId)
SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl);
CalculateMonStats(&gPlayerParty[monId]);
gainedExp -= expOnNextLvl - currExp;
- savedActiveBank = gActiveBank;
- gActiveBank = bank;
- EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
- gActiveBank = savedActiveBank;
+ savedActiveBank = gActiveBattler;
+ gActiveBattler = bank;
+ BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
+ gActiveBattler = savedActiveBank;
gTasks[taskId].func = sub_8059544;
}
else
{
currExp += gainedExp;
SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &currExp);
- gBattleBankFunc[bank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[bank] = CompleteOnInactiveTextPrinter;
DestroyTask(taskId);
}
}
@@ -1303,8 +1278,8 @@ static void sub_8059544(u8 taskId)
u8 bank = gTasks[taskId].tExpTask_bank;
u8 monIndex = gTasks[taskId].tExpTask_monId;
- if (IsDoubleBattle() == TRUE && monIndex == gBattlePartyID[bank ^ BIT_MON])
- bank ^= BIT_MON;
+ if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[bank ^ BIT_FLANK])
+ bank ^= BIT_FLANK;
InitAndLaunchSpecialAnimation(bank, bank, bank, B_ANIM_LVL_UP);
gTasks[taskId].func = sub_80595A4;
@@ -1320,10 +1295,10 @@ static void sub_80595A4(u8 taskId)
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value
- if (IsDoubleBattle() == TRUE && monIndex == gBattlePartyID[bank ^ BIT_MON])
- UpdateHealthboxAttribute(gHealthBoxesIds[bank ^ BIT_MON], &gPlayerParty[monIndex], HEALTHBOX_ALL);
+ if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[bank ^ BIT_FLANK])
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[bank ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL);
else
- UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[monIndex], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[bank], &gPlayerParty[monIndex], HEALTHBOX_ALL);
gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter;
}
@@ -1337,31 +1312,31 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
monIndex = gTasks[taskId].tExpTask_monId;
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value
bank = gTasks[taskId].tExpTask_bank;
- gBattleBankFunc[bank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[bank] = CompleteOnInactiveTextPrinter;
DestroyTask(taskId);
}
static void sub_80596A8(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
nullsub_24(species);
- FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
PlayerBufferExecCompleted();
}
}
static void sub_8059744(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
PlayerBufferExecCompleted();
}
}
@@ -1378,9 +1353,9 @@ static void sub_80597CC(void)
{
u8 r4;
- gBattleBankFunc[gActiveBank] = sub_8059828;
- r4 = gTasks[gUnknown_03005D7C[gActiveBank]].data[0];
- DestroyTask(gUnknown_03005D7C[gActiveBank]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8059828;
+ r4 = gTasks[gUnknown_03005D7C[gActiveBattler]].data[0];
+ DestroyTask(gUnknown_03005D7C[gActiveBattler]);
FreeAllWindowBuffers();
sub_81B89AC(r4);
}
@@ -1391,11 +1366,11 @@ static void sub_8059828(void)
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
if (gUnknown_0203CEE8 == 1)
- EmitChosenMonReturnValue(1, gUnknown_0203CEE9, gUnknown_0203CF00);
+ BtlController_EmitChosenMonReturnValue(1, gUnknown_0203CEE9, gUnknown_0203CF00);
else
- EmitChosenMonReturnValue(1, 6, NULL);
+ BtlController_EmitChosenMonReturnValue(1, 6, NULL);
- if ((gBattleBufferA[gActiveBank][1] & 0xF) == 1)
+ if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1)
PrintLinkStandbyMsg();
PlayerBufferExecCompleted();
@@ -1406,7 +1381,7 @@ static void OpenBagAndChooseItem(void)
{
if (!gPaletteFade.active)
{
- gBattleBankFunc[gActiveBank] = CompleteWhenChoseItem;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem;
nullsub_35();
FreeAllWindowBuffers();
sub_81AABB0();
@@ -1417,20 +1392,20 @@ static void CompleteWhenChoseItem(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- EmitOneReturnValue(1, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
PlayerBufferExecCompleted();
}
}
static void CompleteOnSpecialAnimDone(void)
{
- if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
PlayerBufferExecCompleted();
}
static void DoHitAnimBlinkSpriteEffect(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBattlerSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -1469,9 +1444,9 @@ static void PlayerHandleUnknownYesNoInput(void)
PlaySE(SE_SELECT);
if (gMultiUsePlayerCursor != 0)
- EmitTwoReturnValues(1, 0xE, 0);
+ BtlController_EmitTwoReturnValues(1, 0xE, 0);
else
- EmitTwoReturnValues(1, 0xD, 0);
+ BtlController_EmitTwoReturnValues(1, 0xD, 0);
PlayerBufferExecCompleted();
}
@@ -1486,7 +1461,7 @@ static void PlayerHandleUnknownYesNoInput(void)
static void MoveSelectionDisplayMoveNames(void)
{
s32 i;
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
gNumberOfMovesToChoose = 0;
for (i = 0; i < 4; i++)
@@ -1510,15 +1485,15 @@ static void MoveSelectionDisplayPpNumber(void)
u8 *txtPtr;
struct ChooseMoveStruct *moveInfo;
- if (gBattleBufferA[gActiveBank][2] == TRUE) // check if we didn't want to display pp number
+ if (gBattleBufferA[gActiveBattler][2] == TRUE) // check if we didn't want to display pp number
return;
SetPpNumbersPaletteInMoveSelection();
- moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
- txtPtr = ConvertIntToDecimalStringN(gDisplayedStringBattle, moveInfo->currentPp[gMoveSelectionCursor[gActiveBank]], STR_CONV_MODE_RIGHT_ALIGN, 2);
+ moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
+ txtPtr = ConvertIntToDecimalStringN(gDisplayedStringBattle, moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2);
txtPtr[0] = CHAR_SLASH;
txtPtr++;
- ConvertIntToDecimalStringN(txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBank]], STR_CONV_MODE_RIGHT_ALIGN, 2);
+ ConvertIntToDecimalStringN(txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 9);
}
@@ -1526,7 +1501,7 @@ static void MoveSelectionDisplayPpNumber(void)
static void MoveSelectionDisplayMoveType(void)
{
u8 *txtPtr;
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
txtPtr = StringCopy(gDisplayedStringBattle, gText_MoveInterfaceType);
txtPtr[0] = EXT_CTRL_CODE_BEGIN;
@@ -1536,7 +1511,7 @@ static void MoveSelectionDisplayMoveType(void)
txtPtr[0] = 1;
txtPtr++;
- StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBank]]].type]);
+ StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 10);
}
@@ -1592,13 +1567,13 @@ void SetCB2ToReshowScreenAfterMenu2(void)
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
PlayerBufferExecCompleted();
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
PlayerBufferExecCompleted();
}
@@ -1619,13 +1594,13 @@ static void PlayerHandleGetMonData(void)
u8 monToCheck;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- size += CopyPlayerMonData(gBattlePartyID[gActiveBank], monData);
+ size += CopyPlayerMonData(gBattlerPartyIndexes[gActiveBattler], monData);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -1633,7 +1608,7 @@ static void PlayerHandleGetMonData(void)
monToCheck >>= 1;
}
}
- EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(1, size, monData);
PlayerBufferExecCompleted();
}
@@ -1647,7 +1622,7 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
@@ -1713,7 +1688,7 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE);
+ data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE);
dst[0] = data16;
dst[1] = data16 >> 8;
size = 2;
@@ -1728,7 +1703,7 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst)
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE);
+ dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE);
size = 1;
break;
case REQUEST_OTID_BATTLE:
@@ -1946,14 +1921,14 @@ static u32 CopyPlayerMonData(u8 monId, u8 *dst)
void PlayerHandleGetRawMonData(void)
{
struct BattlePokemon battleMon;
- u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1];
+ u8 *src = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
+ u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
dst[i] = src[i];
- EmitDataTransfer(1, gBattleBufferA[gActiveBank][2], dst);
+ BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
PlayerBufferExecCompleted();
}
@@ -1962,13 +1937,13 @@ static void PlayerHandleSetMonData(void)
u8 monToCheck;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- SetPlayerMonData(gBattlePartyID[gActiveBank]);
+ SetPlayerMonData(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -1981,11 +1956,11 @@ static void PlayerHandleSetMonData(void)
static void SetPlayerMonData(u8 monId)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
{
@@ -2026,10 +2001,10 @@ static void SetPlayerMonData(u8 monId)
}
break;
case REQUEST_SPECIES_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HELDITEM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MOVES_PP_BATTLE:
for (i = 0; i < 4; i++)
@@ -2043,187 +2018,187 @@ static void SetPlayerMonData(u8 monId)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PP_DATA_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case REQUEST_PPMOVE1_BATTLE:
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_OTID_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_EXP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_FRIENDSHIP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKERUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LOCATION_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_GAME_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKEBALL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ALL_IVS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case REQUEST_HP_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PERSONALITY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CHECKSUM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_STATUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MAX_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SHEEN_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
static void PlayerHandleSetRawMonData(void)
{
- u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBattler][3 + i];
PlayerBufferExecCompleted();
}
static void PlayerHandleLoadMonSprite(void)
{
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpritePosX_0;
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpritePosX_0;
}
static void PlayerHandleSwitchInAnim(void)
{
- ClearTemporarySpeciesSpriteData(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
- sub_805B258(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_805902C;
+ ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ gActionSelectionCursor[gActiveBattler] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
+ sub_805B258(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_805902C;
}
static void sub_805B258(u8 bank, bool8 dontClearSubstituteBit)
@@ -2231,64 +2206,64 @@ static void sub_805B258(u8 bank, bool8 dontClearSubstituteBit)
u16 species;
ClearTemporarySpeciesSpriteData(bank, dontClearSubstituteBit);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
- sub_806A068(species, GetBankIdentity(bank));
+ sub_806A068(species, GetBattlerPosition(bank));
- gBankSpriteIds[bank] = CreateSprite(
+ gBattlerSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- GetBankPosition(bank, 2),
- GetBankSpriteDefault_Y(bank),
+ GetBattlerSpriteCoord(bank, 2),
+ GetBattlerSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBattlerSpriteIds[bank];
gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[2] = species;
+ gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void PlayerHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = DoSwitchOutAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
PlayerBufferExecCompleted();
}
}
static void DoSwitchOutAnimation(void)
{
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattleBankFunc[gActiveBank] = sub_8059744;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8059744;
}
break;
}
@@ -2326,7 +2301,7 @@ static void PlayerHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if ((GetBankIdentity(gActiveBank) & BIT_MON) != 0) // second mon
+ if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
xPos = 90;
else // first mon
xPos = 32;
@@ -2352,32 +2327,32 @@ static void PlayerHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != STEVEN_PARTNER_ID)
{
trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender);
- DecompressTrainerFrontPic(trainerPicId, gActiveBank);
- sub_806A1C0(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBank));
-
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.y = 48;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineMode = 0;
- gSprites[gBankSpriteIds[gActiveBank]].hFlip = 1;
+ DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
+ sub_806A1C0(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
+
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = 0;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].hFlip = 1;
}
// use the back pic in any other scenario
else
{
- DecompressTrainerBackPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBank));
+ DecompressTrainerBackPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
}
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void PlayerHandleTrainerSlide(void)
@@ -2406,49 +2381,49 @@ static void PlayerHandleTrainerSlide(void)
trainerPicId = gSaveBlock2Ptr->playerGender;
}
- DecompressTrainerBackPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, 80, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, 30);
+ DecompressTrainerBackPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, 80, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, 30);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy2;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2;
}
static void PlayerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
- gBattleBankFunc[gActiveBank] = sub_80588B4;
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
+ gBattlerControllerFuncs[gActiveBattler] = sub_80588B4;
}
static void PlayerHandleFaintAnimation(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++;
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039C00;
- gBattleBankFunc[gActiveBank] = sub_80596A8;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80596A8;
}
}
}
@@ -2463,23 +2438,23 @@ static void PlayerHandleSuccessBallThrowAnim(void)
{
gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_BALL_THROW);
- gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW);
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
}
static void PlayerHandleBallThrowAnim(void)
{
- u8 ballThrowCaseId = gBattleBufferA[gActiveBank][1];
+ u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1];
gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_BALL_THROW);
- gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW);
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
}
static void PlayerHandlePause(void)
{
- u8 var = gBattleBufferA[gActiveBank][1];
+ u8 var = gBattleBufferA[gActiveBattler][1];
// WTF is this??
while (var != 0)
@@ -2490,25 +2465,25 @@ static void PlayerHandlePause(void)
static void PlayerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
PlayerBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = PlayerDoMoveAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerDoMoveAnimation;
sub_817E0FC(move, gWeatherMoveAnim, gAnimDisableStructPtr);
}
}
@@ -2516,26 +2491,26 @@ static void PlayerHandleMoveAnimation(void)
static void PlayerDoMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 multihit = gBattleBufferA[gActiveBank][11];
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 multihit = gBattleBufferA[gActiveBattler][11];
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute
- && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
+ && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
{
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
break;
case 2:
@@ -2543,20 +2518,20 @@ static void PlayerDoMoveAnimation(void)
if (!gAnimScriptActive)
{
sub_805EB9C(1);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
CopyAllBattleSpritesInvisibilities();
- TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
PlayerBufferExecCompleted();
}
break;
@@ -2569,17 +2544,17 @@ static void PlayerHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter2;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
sub_817C95C(*stringId);
- sub_81A57E4(gActiveBank, *stringId);
+ sub_81A57E4(gActiveBattler, *stringId);
}
static void PlayerHandlePrintSelectionString(void)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
PlayerHandlePrintString();
else
PlayerBufferExecCompleted();
@@ -2591,7 +2566,7 @@ static void HandleChooseActionAfterDma3(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
- gBattleBankFunc[gActiveBank] = HandleInputChooseAction;
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction;
}
}
@@ -2599,27 +2574,27 @@ static void PlayerHandleChooseAction(void)
{
s32 i;
- gBattleBankFunc[gActiveBank] = HandleChooseActionAfterDma3;
+ gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
sub_817F2A8();
BattleHandleAddTextPrinter(gText_BattleMenu, 2);
for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i);
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 1);
}
static void PlayerHandleUnknownYesNoBox(void)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
BattleHandleAddTextPrinter(gText_BattleYesNoChoice, 12);
gMultiUsePlayerCursor = 1;
BattleCreateYesNoCursorAt(1);
- gBattleBankFunc[gActiveBank] = PlayerHandleUnknownYesNoInput;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerHandleUnknownYesNoInput;
}
else
{
@@ -2633,16 +2608,16 @@ static void HandleChooseMoveAfterDma3(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 320;
- gBattleBankFunc[gActiveBank] = HandleInputChooseMove;
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove;
}
}
static void PlayerChooseMoveInBattlePalace(void)
{
- if (--*(gBattleStruct->field_298 + gActiveBank) == 0)
+ if (--*(gBattleStruct->field_298 + gActiveBattler) == 0)
{
gBattlePalaceMoveSelectionRngValue = gRngValue;
- EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
PlayerBufferExecCompleted();
}
}
@@ -2651,13 +2626,13 @@ static void PlayerHandleChooseMove(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- *(gBattleStruct->field_298 + gActiveBank) = 8;
- gBattleBankFunc[gActiveBank] = PlayerChooseMoveInBattlePalace;
+ *(gBattleStruct->field_298 + gActiveBattler) = 8;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerChooseMoveInBattlePalace;
}
else
{
InitMoveSelectionsVarsAndStrings();
- gBattleBankFunc[gActiveBank] = HandleChooseMoveAfterDma3;
+ gBattlerControllerFuncs[gActiveBattler] = HandleChooseMoveAfterDma3;
}
}
@@ -2665,7 +2640,7 @@ void InitMoveSelectionsVarsAndStrings(void)
{
MoveSelectionDisplayMoveNames();
gMultiUsePlayerCursor = 0xFF;
- MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBank], 0);
+ MoveSelectionCreateCursorAt(gMoveSelectionCursor[gActiveBattler], 0);
MoveSelectionDisplayPpString();
MoveSelectionDisplayPpNumber();
MoveSelectionDisplayMoveType();
@@ -2676,11 +2651,11 @@ static void PlayerHandleChooseItem(void)
s32 i;
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- gBattleBankFunc[gActiveBank] = OpenBagAndChooseItem;
- gBankInMenu = gActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem;
+ gBattlerInMenuId = gActiveBattler;
for (i = 0; i < 3; i++)
- gUnknown_0203CF00[i] = gBattleBufferA[gActiveBank][1 + i];
+ gUnknown_0203CF00[i] = gBattleBufferA[gActiveBattler][1 + i];
}
static void PlayerHandleChoosePokemon(void)
@@ -2688,23 +2663,23 @@ static void PlayerHandleChoosePokemon(void)
s32 i;
for (i = 0; i < 3; i++)
- gUnknown_0203CF00[i] = gBattleBufferA[gActiveBank][4 + i];
+ gUnknown_0203CF00[i] = gBattleBufferA[gActiveBattler][4 + i];
- if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBank][1] & 0xF) != 2)
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBattler][1] & 0xF) != 2)
{
- EmitChosenMonReturnValue(1, gBattlePartyID[gActiveBank] + 1, gUnknown_0203CF00);
+ BtlController_EmitChosenMonReturnValue(1, gBattlerPartyIndexes[gActiveBattler] + 1, gUnknown_0203CF00);
PlayerBufferExecCompleted();
}
else
{
- gUnknown_03005D7C[gActiveBank] = CreateTask(TaskDummy, 0xFF);
- gTasks[gUnknown_03005D7C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF;
- *(&gBattleStruct->field_49) = gBattleBufferA[gActiveBank][1] >> 4;
- *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBank][2];
- *(&gBattleStruct->field_B0) = gBattleBufferA[gActiveBank][3];
+ gUnknown_03005D7C[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gUnknown_03005D7C[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
+ *(&gBattleStruct->field_49) = gBattleBufferA[gActiveBattler][1] >> 4;
+ *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2];
+ *(&gBattleStruct->field_B0) = gBattleBufferA[gActiveBattler][3];
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_80597CC;
- gBankInMenu = gActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80597CC;
+ gBattlerInMenuId = gActiveBattler;
}
}
@@ -2720,32 +2695,32 @@ static void PlayerHandleHealthBarUpdate(void)
s16 hpVal;
LoadBattleBarGfx(0);
- hpVal = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (hpVal > 0)
gUnknown_0203CD70 += hpVal;
if (hpVal != INSTANT_HP_BAR_DROP)
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], 0, HP_CURRENT);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT);
}
- gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void PlayerHandleExpUpdate(void)
{
- u8 monId = gBattleBufferA[gActiveBank][1];
+ u8 monId = gBattleBufferA[gActiveBattler][1];
if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_MON_LEVEL)
{
@@ -2758,12 +2733,12 @@ static void PlayerHandleExpUpdate(void)
LoadBattleBarGfx(1);
GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); // unused return value
- expPointsToGive = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ expPointsToGive = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
taskId = CreateTask(Task_GiveExpToMon, 10);
gTasks[taskId].tExpTask_monId = monId;
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
- gTasks[taskId].tExpTask_bank = gActiveBank;
- gBattleBankFunc[gActiveBank] = nullsub_21;
+ gTasks[taskId].tExpTask_bank = gActiveBattler;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
}
}
@@ -2774,32 +2749,32 @@ static void PlayerHandleExpUpdate(void)
static void PlayerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
u8 bank;
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_STATUS_ICON);
- bank = gActiveBank;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
+ bank = gActiveBattler;
gBattleSpritesDataPtr->healthBoxesData[bank].statusAnimActive = 0;
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
static void PlayerHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
static void PlayerHandleStatusXor(void)
{
- u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1];
+ u8 val = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBattler][1];
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_STATUS, &val);
PlayerBufferExecCompleted();
}
@@ -2810,13 +2785,13 @@ static void PlayerHandleDataTransfer(void)
static void PlayerHandleDMA3Transfer(void)
{
- u32 dstArg = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8)
- | (gBattleBufferA[gActiveBank][3] << 16)
- | (gBattleBufferA[gActiveBank][4] << 24);
- u16 sizeArg = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8);
+ u32 dstArg = gBattleBufferA[gActiveBattler][1]
+ | (gBattleBufferA[gActiveBattler][2] << 8)
+ | (gBattleBufferA[gActiveBattler][3] << 16)
+ | (gBattleBufferA[gActiveBattler][4] << 24);
+ u16 sizeArg = gBattleBufferA[gActiveBattler][5] | (gBattleBufferA[gActiveBattler][6] << 8);
- const u8 *src = &gBattleBufferA[gActiveBank][7];
+ const u8 *src = &gBattleBufferA[gActiveBattler][7];
u8 *dst = (u8*)(dstArg);
u32 size = sizeArg;
@@ -2837,7 +2812,7 @@ static void PlayerHandleDMA3Transfer(void)
static void PlayerHandlePlayBGM(void)
{
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
PlayerBufferExecCompleted();
}
@@ -2848,25 +2823,25 @@ static void PlayerHandleCmd32(void)
static void PlayerHandleTwoReturnValues(void)
{
- EmitTwoReturnValues(1, 0, 0);
+ BtlController_EmitTwoReturnValues(1, 0, 0);
PlayerBufferExecCompleted();
}
static void PlayerHandleChosenMonReturnValue(void)
{
- EmitChosenMonReturnValue(1, 0, NULL);
+ BtlController_EmitChosenMonReturnValue(1, 0, NULL);
PlayerBufferExecCompleted();
}
static void PlayerHandleOneReturnValue(void)
{
- EmitOneReturnValue(1, 0);
+ BtlController_EmitOneReturnValue(1, 0);
PlayerBufferExecCompleted();
}
static void PlayerHandleOneReturnValue_Duplicate(void)
{
- EmitOneReturnValue_Duplicate(1, 0);
+ BtlController_EmitOneReturnValue_Duplicate(1, 0);
PlayerBufferExecCompleted();
}
@@ -2878,7 +2853,7 @@ static void PlayerHandleCmd37(void)
static void PlayerHandleCmd38(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
PlayerBufferExecCompleted();
}
@@ -2896,16 +2871,16 @@ static void PlayerHandleCmd40(void)
static void PlayerHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
PlayerBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- DoHitAnimHealthboxEffect(gActiveBank);
- gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ DoHitAnimHealthboxEffect(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect;
}
}
@@ -2918,25 +2893,25 @@ static void PlayerHandlePlaySE(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
pan = PAN_SIDE_PLAYER;
else
pan = PAN_SIDE_OPPONENT;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
PlayerBufferExecCompleted();
}
static void PlayerHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
PlayerBufferExecCompleted();
@@ -2944,7 +2919,7 @@ static void PlayerHandlePlayFanfareOrBGM(void)
static void PlayerHandleFaintingCry(void)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry3(species, -25, 5);
PlayerBufferExecCompleted();
@@ -2952,8 +2927,8 @@ static void PlayerHandleFaintingCry(void)
static void PlayerHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
PlayerBufferExecCompleted();
}
@@ -2962,29 +2937,29 @@ static void PlayerHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
taskId = CreateTask(task05_08033660, 5);
- gTasks[taskId].data[0] = gActiveBank;
+ gTasks[taskId].data[0] = gActiveBattler;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_21;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
}
void sub_805CC00(struct Sprite *sprite)
@@ -2994,8 +2969,8 @@ void sub_805CC00(struct Sprite *sprite)
FreeSpriteOamMatrix(sprite);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
DestroySprite(sprite);
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank);
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], 0);
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[bank]], bank);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], 0);
}
static void task05_08033660(u8 taskId)
@@ -3006,93 +2981,93 @@ static void task05_08033660(u8 taskId)
}
else
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_805B258(gActiveBank, FALSE);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_805B258(gActiveBattler, FALSE);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_805B258(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_805B258(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_805B258(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_805B258(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
}
- gBattleBankFunc[gActiveBank] = sub_8058B40;
- gActiveBank = savedActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8058B40;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
}
static void PlayerHandleDrawPartyStatusSummary(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
PlayerBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
- gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0x5D;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_805CE38;
+ gBattlerControllerFuncs[gActiveBattler] = sub_805CE38;
}
}
static void sub_805CE38(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
PlayerBufferExecCompleted();
}
}
static void PlayerHandleCmd49(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
PlayerBufferExecCompleted();
}
static void PlayerHandleCmd50(void)
{
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
PlayerBufferExecCompleted();
}
static void PlayerHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank))
+ if (IsBattlerSpritePresent(gActiveBattler))
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- CopyBattleSpriteInvisibility(gActiveBank);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ CopyBattleSpriteInvisibility(gActiveBattler);
}
PlayerBufferExecCompleted();
}
static void PlayerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
PlayerBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
sub_817E32C(animationId);
}
@@ -3100,15 +3075,15 @@ static void PlayerHandleBattleAnimation(void)
static void PlayerHandleLinkStandbyMsg(void)
{
- sub_81851A8(&gBattleBufferA[gActiveBank][2]);
- switch (gBattleBufferA[gActiveBank][1])
+ sub_81851A8(&gBattleBufferA[gActiveBattler][2]);
+ switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
PrintLinkStandbyMsg();
// fall through
case 1:
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
+ dp11b_obj_free(gActiveBattler, 1);
+ dp11b_obj_free(gActiveBattler, 0);
break;
case 2:
PrintLinkStandbyMsg();
@@ -3119,17 +3094,17 @@ static void PlayerHandleLinkStandbyMsg(void)
static void PlayerHandleResetActionMoveSelection(void)
{
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case RESET_ACTION_MOVE_SELECTION:
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
+ gActionSelectionCursor[gActiveBattler] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
break;
case RESET_ACTION_SELECTION:
- gActionSelectionCursor[gActiveBank] = 0;
+ gActionSelectionCursor[gActiveBattler] = 0;
break;
case RESET_MOVE_SELECTION:
- gMoveSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
break;
}
PlayerBufferExecCompleted();
@@ -3137,13 +3112,13 @@ static void PlayerHandleResetActionMoveSelection(void)
static void PlayerHandleCmd55(void)
{
- sub_81851A8(&gBattleBufferA[gActiveBank][4]);
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
- gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBank][2];
+ sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
+ gSaveBlock2Ptr->field_CA9_b = gBattleBufferA[gActiveBattler][2];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
PlayerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
static void nullsub_22(void)
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 6b5211ceb..159fdb2ff 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -22,35 +22,12 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "battle_setup.h"
+#include "item_use.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gNoOfAllBanks;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern struct SpriteTemplate gUnknown_0202499C;
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u8 gBankInMenu;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
@@ -60,6 +37,7 @@ extern const struct BattleMove gBattleMoves[];
extern void sub_81358F4(void);
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void PlayerPartnerHandleGetMonData(void);
@@ -213,15 +191,15 @@ static void nullsub_77(void)
void SetControllerToPlayerPartner(void)
{
- gBattleBankFunc[gActiveBank] = PlayerPartnerBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerPartnerBufferRunCommand;
}
static void PlayerPartnerBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sPlayerPartnerBufferCommands))
- sPlayerPartnerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sPlayerPartnerBufferCommands))
+ sPlayerPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
PlayerPartnerBufferExecCompleted();
}
@@ -229,26 +207,26 @@ static void PlayerPartnerBufferRunCommand(void)
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
PlayerPartnerBufferExecCompleted();
}
static void sub_81BAE98(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
nullsub_25(0);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
PlayerPartnerBufferExecCompleted();
}
}
static void sub_81BAF00(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
PlayerPartnerBufferExecCompleted();
}
}
@@ -259,13 +237,13 @@ static void sub_81BAF48(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
else
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthBoxesIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
r6 = TRUE;
}
@@ -276,59 +254,59 @@ static void sub_81BAF48(void)
if (r6)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3;
- gBattleBankFunc[gActiveBank] = sub_81BAF00;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BAF00;
}
}
static void sub_81BB02C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive
- && gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- && ++gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 != 1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive
+ && gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 != 1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]]);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank ^ BIT_MON], &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank ^ BIT_MON);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank ^ BIT_MON]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler ^ BIT_FLANK);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleBankFunc[gActiveBank] = sub_81BAF48;
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BAF48;
}
}
static void sub_81BB1D4(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].animEnded && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
PlayerPartnerBufferExecCompleted();
}
static void CompleteOnHealthbarDone(void)
{
- s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], HEALTH_BAR, 0);
+ s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
if (hpValue != -1)
{
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], hpValue, HP_CURRENT);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
}
else
{
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlayerPartnerBufferExecCompleted();
}
}
@@ -351,7 +329,7 @@ static void Task_GiveExpToMon(u8 taskId)
u8 bank = gTasks[taskId].tExpTask_bank;
s16 gainedExp = gTasks[taskId].tExpTask_gainedExp;
- if (IsDoubleBattle() == TRUE || monId != gBattlePartyID[bank]) // give exp without the expbar
+ if (IsDoubleBattle() == TRUE || monId != gBattlerPartyIndexes[bank]) // give exp without the expbar
{
struct Pokemon *mon = &gPlayerParty[monId];
u16 species = GetMonData(mon, MON_DATA_SPECIES);
@@ -366,13 +344,13 @@ static void Task_GiveExpToMon(u8 taskId)
SetMonData(mon, MON_DATA_EXP, &nextLvlExp);
CalculateMonStats(mon);
gainedExp -= nextLvlExp - currExp;
- savedActiveBank = gActiveBank;
- gActiveBank = bank;
- EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
- gActiveBank = savedActiveBank;
+ savedActiveBank = gActiveBattler;
+ gActiveBattler = bank;
+ BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
+ gActiveBattler = savedActiveBank;
if (IsDoubleBattle() == TRUE
- && ((u16)(monId) == gBattlePartyID[bank] || (u16)(monId) == gBattlePartyID[bank ^ BIT_MON]))
+ && ((u16)(monId) == gBattlerPartyIndexes[bank] || (u16)(monId) == gBattlerPartyIndexes[bank ^ BIT_FLANK]))
gTasks[taskId].func = sub_81BB628;
else
gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter;
@@ -381,7 +359,7 @@ static void Task_GiveExpToMon(u8 taskId)
{
currExp += gainedExp;
SetMonData(mon, MON_DATA_EXP, &currExp);
- gBattleBankFunc[bank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[bank] = CompleteOnInactiveTextPrinter;
DestroyTask(taskId);
}
}
@@ -405,7 +383,7 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
exp -= currLvlExp;
expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp;
- SetBattleBarStruct(bank, gHealthBoxesIds[bank], expToNextLvl, exp, -gainedExp);
+ SetBattleBarStruct(bank, gHealthboxSpriteIds[bank], expToNextLvl, exp, -gainedExp);
PlaySE(SE_EXP);
gTasks[taskId].func = sub_81BB4E4;
}
@@ -423,8 +401,8 @@ static void sub_81BB4E4(u8 taskId)
u8 bank = gTasks[taskId].tExpTask_bank;
s16 r4;
- r4 = sub_8074AA0(bank, gHealthBoxesIds[bank], EXP_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[bank]);
+ r4 = sub_8074AA0(bank, gHealthboxSpriteIds[bank], EXP_BAR, 0);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[bank]);
if (r4 == -1)
{
u8 level;
@@ -445,17 +423,17 @@ static void sub_81BB4E4(u8 taskId)
SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl);
CalculateMonStats(&gPlayerParty[monId]);
gainedExp -= expOnNextLvl - currExp;
- savedActiveBank = gActiveBank;
- gActiveBank = bank;
- EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
- gActiveBank = savedActiveBank;
+ savedActiveBank = gActiveBattler;
+ gActiveBattler = bank;
+ BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELLED_UP, gainedExp);
+ gActiveBattler = savedActiveBank;
gTasks[taskId].func = sub_81BB628;
}
else
{
currExp += gainedExp;
SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &currExp);
- gBattleBankFunc[bank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[bank] = CompleteOnInactiveTextPrinter;
DestroyTask(taskId);
}
}
@@ -467,8 +445,8 @@ static void sub_81BB628(u8 taskId)
u8 bank = gTasks[taskId].tExpTask_bank;
u8 monIndex = gTasks[taskId].tExpTask_monId;
- if (IsDoubleBattle() == TRUE && monIndex == gBattlePartyID[bank ^ BIT_MON])
- bank ^= BIT_MON;
+ if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[bank ^ BIT_FLANK])
+ bank ^= BIT_FLANK;
InitAndLaunchSpecialAnimation(bank, bank, bank, B_ANIM_LVL_UP);
gTasks[taskId].func = sub_81BB688;
@@ -484,10 +462,10 @@ static void sub_81BB688(u8 taskId)
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value
- if (IsDoubleBattle() == TRUE && monIndex == gBattlePartyID[bank ^ BIT_MON])
- UpdateHealthboxAttribute(gHealthBoxesIds[bank ^ BIT_MON], &gPlayerParty[monIndex], HEALTHBOX_ALL);
+ if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[bank ^ BIT_FLANK])
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[bank ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL);
else
- UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[monIndex], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[bank], &gPlayerParty[monIndex], HEALTHBOX_ALL);
gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter;
}
@@ -501,31 +479,31 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
monIndex = gTasks[taskId].tExpTask_monId;
GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value
bank = gTasks[taskId].tExpTask_bank;
- gBattleBankFunc[bank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[bank] = CompleteOnInactiveTextPrinter;
DestroyTask(taskId);
}
static void sub_81BB78C(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
nullsub_24(species);
- FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
PlayerPartnerBufferExecCompleted();
}
}
static void sub_81BB828(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
PlayerPartnerBufferExecCompleted();
}
}
@@ -538,7 +516,7 @@ static void CompleteOnInactiveTextPrinter2(void)
static void DoHitAnimBlinkSpriteEffect(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBattlerSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -557,20 +535,20 @@ static void DoHitAnimBlinkSpriteEffect(void)
static void sub_81BB92C(void)
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- CopyBattleSpriteInvisibility(gActiveBank);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
+ CopyBattleSpriteInvisibility(gActiveBattler);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleBankFunc[gActiveBank] = sub_81BB9A0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BB9A0;
}
}
static void sub_81BB9A0(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
PlayerPartnerBufferExecCompleted();
}
@@ -578,66 +556,66 @@ static void sub_81BB9A0(void)
static void sub_81BB9F4(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
CreateTask(c3_0802FDF4, 10);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattleBankFunc[gActiveBank] = sub_81BB92C;
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BB92C;
}
}
static void sub_81BBAE8(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- gBattleBankFunc[gActiveBank] = sub_81BB9F4;
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BB9F4;
}
}
static void PlayerPartnerBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = PlayerPartnerBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerPartnerBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
PlayerPartnerBufferExecCompleted();
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
PlayerPartnerBufferExecCompleted();
}
@@ -648,13 +626,13 @@ static void PlayerPartnerHandleGetMonData(void)
u8 monToCheck;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- size += CopyPlayerPartnerMonData(gBattlePartyID[gActiveBank], monData);
+ size += CopyPlayerPartnerMonData(gBattlerPartyIndexes[gActiveBattler], monData);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -662,7 +640,7 @@ static void PlayerPartnerHandleGetMonData(void)
monToCheck >>= 1;
}
}
- EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(1, size, monData);
PlayerPartnerBufferExecCompleted();
}
@@ -676,7 +654,7 @@ static u32 CopyPlayerPartnerMonData(u8 monId, u8 *dst)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
@@ -742,7 +720,7 @@ static u32 CopyPlayerPartnerMonData(u8 monId, u8 *dst)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE);
+ data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE);
dst[0] = data16;
dst[1] = data16 >> 8;
size = 2;
@@ -757,7 +735,7 @@ static u32 CopyPlayerPartnerMonData(u8 monId, u8 *dst)
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE);
+ dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE);
size = 1;
break;
case REQUEST_OTID_BATTLE:
@@ -982,13 +960,13 @@ static void PlayerPartnerHandleSetMonData(void)
u8 monToCheck;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- SetPlayerPartnerMonData(gBattlePartyID[gActiveBank]);
+ SetPlayerPartnerMonData(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -1001,11 +979,11 @@ static void PlayerPartnerHandleSetMonData(void)
static void SetPlayerPartnerMonData(u8 monId)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
{
@@ -1046,10 +1024,10 @@ static void SetPlayerPartnerMonData(u8 monId)
}
break;
case REQUEST_SPECIES_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HELDITEM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MOVES_PP_BATTLE:
for (i = 0; i < 4; i++)
@@ -1063,167 +1041,167 @@ static void SetPlayerPartnerMonData(u8 monId)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PP_DATA_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case REQUEST_PPMOVE1_BATTLE:
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_OTID_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_EXP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_FRIENDSHIP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKERUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LOCATION_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_GAME_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKEBALL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ALL_IVS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case REQUEST_HP_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PERSONALITY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CHECKSUM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_STATUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MAX_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SHEEN_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
static void PlayerPartnerHandleSetRawMonData(void)
{
- u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBattler][3 + i];
PlayerPartnerBufferExecCompleted();
}
@@ -1232,28 +1210,28 @@ static void PlayerPartnerHandleLoadMonSprite(void)
{
u16 species;
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_806A068(species, GetBankIdentity(gActiveBank));
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
+ sub_806A068(species, GetBattlerPosition(gActiveBattler));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(gActiveBank, 2),
- GetBankSpriteDefault_Y(gActiveBank),
- sub_80A82E4(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
- gBattleBankFunc[gActiveBank] = sub_81BB1D4;
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ GetBattlerSpriteDefault_Y(gActiveBattler),
+ sub_80A82E4(gActiveBattler));
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BB1D4;
}
static void PlayerPartnerHandleSwitchInAnim(void)
{
- ClearTemporarySpeciesSpriteData(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_81BD0E4(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_81BBAE8;
+ ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_81BD0E4(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BBAE8;
}
static void sub_81BD0E4(u8 bank, bool8 dontClearSubstituteBit)
@@ -1261,64 +1239,64 @@ static void sub_81BD0E4(u8 bank, bool8 dontClearSubstituteBit)
u16 species;
ClearTemporarySpeciesSpriteData(bank, dontClearSubstituteBit);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
- sub_806A068(species, GetBankIdentity(bank));
+ sub_806A068(species, GetBattlerPosition(bank));
- gBankSpriteIds[bank] = CreateSprite(
+ gBattlerSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- GetBankPosition(bank, 2),
- GetBankSpriteDefault_Y(bank),
+ GetBattlerSpriteCoord(bank, 2),
+ GetBattlerSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBattlerSpriteIds[bank];
gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[2] = species;
+ gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void PlayerPartnerHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = DoSwitchOutAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
PlayerPartnerBufferExecCompleted();
}
}
static void DoSwitchOutAnimation(void)
{
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattleBankFunc[gActiveBank] = sub_81BB828;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BB828;
}
break;
}
@@ -1348,31 +1326,31 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
// Use back pic only if the partner is Steven
if (gPartnerTrainerId == STEVEN_PARTNER_ID)
{
- DecompressTrainerBackPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBank));
-
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ DecompressTrainerBackPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
+
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
}
else // otherwise use front sprite
{
- DecompressTrainerFrontPic(trainerPicId, gActiveBank);
- sub_806A1C0(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBank));
-
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.y = 48;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineMode = 0;
- gSprites[gBankSpriteIds[gActiveBank]].hFlip = 1;
+ DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
+ sub_806A1C0(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
+
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = 0;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].hFlip = 1;
}
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void PlayerPartnerHandleTrainerSlide(void)
@@ -1382,34 +1360,34 @@ static void PlayerPartnerHandleTrainerSlide(void)
static void PlayerPartnerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_81BAE98;
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BAE98;
}
static void PlayerPartnerHandleFaintAnimation(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++;
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039C00;
- gBattleBankFunc[gActiveBank] = sub_81BB78C;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00;
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BB78C;
}
}
}
@@ -1436,51 +1414,51 @@ static void PlayerPartnerHandlePause(void)
static void PlayerPartnerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
PlayerPartnerBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = PlayerPartnerDoMoveAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerPartnerDoMoveAnimation;
}
}
}
static void PlayerPartnerDoMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 multihit = gBattleBufferA[gActiveBank][11];
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 multihit = gBattleBufferA[gActiveBattler][11];
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute
- && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
+ && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
{
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
break;
case 2:
@@ -1488,20 +1466,20 @@ static void PlayerPartnerDoMoveAnimation(void)
if (!gAnimScriptActive)
{
sub_805EB9C(1);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
CopyAllBattleSpritesInvisibilities();
- TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
PlayerPartnerBufferExecCompleted();
}
break;
@@ -1514,10 +1492,10 @@ static void PlayerPartnerHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter2;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
}
static void PlayerPartnerHandlePrintSelectionString(void)
@@ -1539,21 +1517,21 @@ static void PlayerPartnerHandleUnknownYesNoBox(void)
static void PlayerPartnerHandleChooseMove(void)
{
u8 chosenMoveId;
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
BattleAI_SetupAIData(0xF);
chosenMoveId = BattleAI_ChooseMoveOrAction();
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_x10 | MOVE_TARGET_USER))
- gBankTarget = gActiveBank;
+ gBattlerTarget = gActiveBattler;
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & MOVE_TARGET_BOTH)
{
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
- EmitTwoReturnValues(1, 10, chosenMoveId | (gBankTarget << 8));
+ BtlController_EmitTwoReturnValues(1, 10, chosenMoveId | (gBattlerTarget << 8));
PlayerPartnerBufferExecCompleted();
}
@@ -1568,22 +1546,22 @@ static void PlayerPartnerHandleChoosePokemon(void)
if (chosenMonId == 6) // just switch to the next mon
{
- u8 playerMonIdentity = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- u8 selfIdentity = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ u8 playerMonIdentity = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ u8 selfIdentity = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
for (chosenMonId = 3; chosenMonId < 6; chosenMonId++)
{
if (GetMonData(&gPlayerParty[chosenMonId], MON_DATA_HP) != 0
- && chosenMonId != gBattlePartyID[playerMonIdentity]
- && chosenMonId != gBattlePartyID[selfIdentity])
+ && chosenMonId != gBattlerPartyIndexes[playerMonIdentity]
+ && chosenMonId != gBattlerPartyIndexes[selfIdentity])
{
break;
}
}
}
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = chosenMonId;
- EmitChosenMonReturnValue(1, chosenMonId, NULL);
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
+ BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL);
PlayerPartnerBufferExecCompleted();
}
@@ -1597,28 +1575,28 @@ static void PlayerPartnerHandleHealthBarUpdate(void)
s16 hpVal;
LoadBattleBarGfx(0);
- hpVal = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (hpVal != INSTANT_HP_BAR_DROP)
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
}
- gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void PlayerPartnerHandleExpUpdate(void)
{
- u8 monId = gBattleBufferA[gActiveBank][1];
+ u8 monId = gBattleBufferA[gActiveBattler][1];
if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_MON_LEVEL)
{
@@ -1631,12 +1609,12 @@ static void PlayerPartnerHandleExpUpdate(void)
LoadBattleBarGfx(1);
GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); // unused return value
- expPointsToGive = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ expPointsToGive = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
taskId = CreateTask(Task_GiveExpToMon, 10);
gTasks[taskId].tExpTask_monId = monId;
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
- gTasks[taskId].tExpTask_bank = gActiveBank;
- gBattleBankFunc[gActiveBank] = nullsub_21;
+ gTasks[taskId].tExpTask_bank = gActiveBattler;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
}
}
@@ -1647,24 +1625,24 @@ static void PlayerPartnerHandleExpUpdate(void)
static void PlayerPartnerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
u8 bank;
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_STATUS_ICON);
- bank = gActiveBank;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
+ bank = gActiveBattler;
gBattleSpritesDataPtr->healthBoxesData[bank].statusAnimActive = 0;
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
static void PlayerPartnerHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
@@ -1721,7 +1699,7 @@ static void PlayerPartnerHandleCmd37(void)
static void PlayerPartnerHandleCmd38(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
PlayerPartnerBufferExecCompleted();
}
@@ -1739,16 +1717,16 @@ static void PlayerPartnerHandleCmd40(void)
static void PlayerPartnerHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
PlayerPartnerBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- DoHitAnimHealthboxEffect(gActiveBank);
- gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ DoHitAnimHealthboxEffect(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect;
}
}
@@ -1761,25 +1739,25 @@ static void PlayerPartnerHandlePlaySE(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
pan = PAN_SIDE_PLAYER;
else
pan = PAN_SIDE_OPPONENT;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
PlayerPartnerBufferExecCompleted();
}
static void PlayerPartnerHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
PlayerPartnerBufferExecCompleted();
@@ -1787,7 +1765,7 @@ static void PlayerPartnerHandlePlayFanfareOrBGM(void)
static void PlayerPartnerHandleFaintingCry(void)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry3(species, -25, 5);
PlayerPartnerBufferExecCompleted();
@@ -1795,8 +1773,8 @@ static void PlayerPartnerHandleFaintingCry(void)
static void PlayerPartnerHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
PlayerPartnerBufferExecCompleted();
}
@@ -1805,16 +1783,16 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F9);
if (gPartnerTrainerId == STEVEN_PARTNER_ID)
@@ -1829,16 +1807,16 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
}
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
taskId = CreateTask(sub_81BE2C8, 5);
- gTasks[taskId].data[0] = gActiveBank;
+ gTasks[taskId].data[0] = gActiveBattler;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_77;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_77;
}
static void sub_81BE2C8(u8 taskId)
@@ -1849,62 +1827,62 @@ static void sub_81BE2C8(u8 taskId)
}
else
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_81BD0E4(gActiveBank, FALSE);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_81BD0E4(gActiveBattler, FALSE);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_81BD0E4(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_81BD0E4(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_81BD0E4(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_81BD0E4(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
}
- gBattleBankFunc[gActiveBank] = sub_81BB02C;
- gActiveBank = savedActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BB02C;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
}
static void PlayerPartnerHandleDrawPartyStatusSummary(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
PlayerPartnerBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
- gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0x5D;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_81BE498;
+ gBattlerControllerFuncs[gActiveBattler] = sub_81BE498;
}
}
static void sub_81BE498(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
PlayerPartnerBufferExecCompleted();
}
}
static void PlayerPartnerHandleCmd49(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
PlayerPartnerBufferExecCompleted();
}
@@ -1915,25 +1893,25 @@ static void PlayerPartnerHandleCmd50(void)
static void PlayerPartnerHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank))
+ if (IsBattlerSpritePresent(gActiveBattler))
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- CopyBattleSpriteInvisibility(gActiveBank);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ CopyBattleSpriteInvisibility(gActiveBattler);
}
PlayerPartnerBufferExecCompleted();
}
static void PlayerPartnerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
PlayerPartnerBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
}
@@ -1949,11 +1927,11 @@ static void PlayerPartnerHandleResetActionMoveSelection(void)
static void PlayerPartnerHandleCmd55(void)
{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
PlayerPartnerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
static void nullsub_128(void)
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 6e29fa951..855dfc554 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -24,38 +24,14 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "item_use.h"
+#include "battle_setup.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gNoOfAllBanks;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern struct SpriteTemplate gUnknown_0202499C;
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct UnusedControllerStruct gUnknown_02022D0C;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
extern u8 gUnknown_0203C7B4;
extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
@@ -63,6 +39,7 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
extern u16 sub_8068B48(void);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void RecordedOpponentHandleGetMonData(void);
@@ -202,15 +179,15 @@ static void nullsub_70(void)
void SetControllerToRecordedOpponent(void)
{
- gBattleBankFunc[gActiveBank] = RecordedOpponentBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = RecordedOpponentBufferRunCommand;
}
static void RecordedOpponentBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sRecordedOpponentBufferCommands))
- sRecordedOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sRecordedOpponentBufferCommands))
+ sRecordedOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
RecordedOpponentBufferExecCompleted();
}
@@ -218,32 +195,32 @@ static void RecordedOpponentBufferRunCommand(void)
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
RecordedOpponentBufferExecCompleted();
}
static void CompleteOnBankSpriteCallbackDummy2(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
RecordedOpponentBufferExecCompleted();
}
static void sub_81865C8(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- FreeTrainerFrontPicPalette(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeTrainerFrontPicPalette(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
RecordedOpponentBufferExecCompleted();
}
}
static void sub_8186630(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
RecordedOpponentBufferExecCompleted();
}
}
@@ -254,43 +231,39 @@ static void sub_8186678(void)
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].animEnded)
- {
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded)
var = TRUE;
- }
}
else
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthBoxesIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].animEnded
- && gSprites[gBankSpriteIds[gActiveBank ^ BIT_MON]].animEnded)
- {
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded
+ && gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].animEnded)
var = TRUE;
- }
}
if (var)
{
- if (GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON1)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
return;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
return;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3;
- gBattleBankFunc[gActiveBank] = sub_8186630;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8186630;
}
}
@@ -299,38 +272,38 @@ static void sub_818686C(void)
bool32 r9 = FALSE;
bool32 r8 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
- sub_8172EF0(gActiveBank ^ BIT_MON, &gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+ sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank ^ BIT_MON], &gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank ^ BIT_MON);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank ^ BIT_MON]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler ^ BIT_FLANK);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 1;
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x40
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x40
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x40
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x40
&& !IsCryPlayingOrClearCrySongs())
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- if (GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON1)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
m4aMPlayContinue(&gMPlayInfo_BGM);
}
else
@@ -338,24 +311,24 @@ static void sub_818686C(void)
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
}
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 1;
r9 = TRUE;
}
if (!IsDoubleBattle())
{
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
r8 = TRUE;
}
}
else
{
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
r8 = TRUE;
}
@@ -365,36 +338,36 @@ static void sub_818686C(void)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank ^ BIT_MON, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]], MON_DATA_SPECIES));
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
+ SetBattlerShadowSpriteCallback(gActiveBattler ^ BIT_FLANK, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], MON_DATA_SPECIES));
}
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 0;
- gBattleBankFunc[gActiveBank] = sub_8186678;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8186678;
}
}
static void sub_8186C48(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
{
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
else
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
RecordedOpponentBufferExecCompleted();
@@ -405,13 +378,13 @@ static void sub_8186C48(void)
static void CompleteOnHealthbarDone(void)
{
- s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], HEALTH_BAR, 0);
+ s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
if (hpValue != -1)
{
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], hpValue, HP_CURRENT);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
}
else
{
@@ -421,21 +394,21 @@ static void CompleteOnHealthbarDone(void)
static void sub_8186D58(void)
{
- if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
+ if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
{
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
RecordedOpponentBufferExecCompleted();
}
}
static void sub_8186D9C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- EnemyShadowCallbackToSetInvisible(gActiveBank);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ HideBattlerShadowSprite(gActiveBattler);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
RecordedOpponentBufferExecCompleted();
}
}
@@ -448,7 +421,7 @@ static void CompleteOnInactiveTextPrinter(void)
static void DoHitAnimBlinkSpriteEffect(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBattlerSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -467,22 +440,22 @@ static void DoHitAnimBlinkSpriteEffect(void)
static void sub_8186EA4(void)
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleBankFunc[gActiveBank] = sub_8186F14;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8186F14;
}
}
static void sub_8186F14(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive
&& !IsCryPlayingOrClearCrySongs())
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
- || gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy_2)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ || gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy_2)
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
RecordedOpponentBufferExecCompleted();
@@ -492,67 +465,67 @@ static void sub_8186F14(void)
static void sub_8186F94(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
- CopyBattleSpriteInvisibility(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_8186EA4;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
+ CopyBattleSpriteInvisibility(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8186EA4;
}
}
static void sub_8187084(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80)
{
- sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8186F94;
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
+ gBattlerControllerFuncs[gActiveBattler] = sub_8186F94;
}
}
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
RecordedOpponentBufferExecCompleted();
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
RecordedOpponentBufferExecCompleted();
}
static void RecordedOpponentBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = RecordedOpponentBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = RecordedOpponentBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
@@ -563,13 +536,13 @@ static void RecordedOpponentHandleGetMonData(void)
u8 monToCheck;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- size += CopyRecordedOpponentMonData(gBattlePartyID[gActiveBank], monData);
+ size += CopyRecordedOpponentMonData(gBattlerPartyIndexes[gActiveBattler], monData);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -577,7 +550,7 @@ static void RecordedOpponentHandleGetMonData(void)
monToCheck >>= 1;
}
}
- EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(1, size, monData);
RecordedOpponentBufferExecCompleted();
}
@@ -591,7 +564,7 @@ static u32 CopyRecordedOpponentMonData(u8 monId, u8 *dst)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
battleMon.species = GetMonData(&gEnemyParty[monId], MON_DATA_SPECIES);
@@ -657,7 +630,7 @@ static u32 CopyRecordedOpponentMonData(u8 monId, u8 *dst)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE);
+ data16 = GetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE);
dst[0] = data16;
dst[1] = data16 >> 8;
size = 2;
@@ -672,7 +645,7 @@ static u32 CopyRecordedOpponentMonData(u8 monId, u8 *dst)
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE);
+ dst[0] = GetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE);
size = 1;
break;
case REQUEST_OTID_BATTLE:
@@ -897,13 +870,13 @@ static void RecordedOpponentHandleSetMonData(void)
u8 monToCheck;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- SetRecordedOpponentMonData(gBattlePartyID[gActiveBank]);
+ SetRecordedOpponentMonData(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -916,11 +889,11 @@ static void RecordedOpponentHandleSetMonData(void)
static void SetRecordedOpponentMonData(u8 monId)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
{
@@ -961,10 +934,10 @@ static void SetRecordedOpponentMonData(u8 monId)
}
break;
case REQUEST_SPECIES_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HELDITEM_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MOVES_PP_BATTLE:
for (i = 0; i < 4; i++)
@@ -978,198 +951,198 @@ static void SetRecordedOpponentMonData(u8 monId)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PP_DATA_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case REQUEST_PPMOVE1_BATTLE:
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_OTID_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_EXP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_EV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_FRIENDSHIP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKERUS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LOCATION_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LEVEL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_GAME_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKEBALL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ALL_IVS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case REQUEST_HP_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_IV_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PERSONALITY_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CHECKSUM_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_STATUS_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_LEVEL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MAX_HP_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SHEEN_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_RIBBON_BATTLE:
- SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
}
static void RecordedOpponentHandleSetRawMonData(void)
{
- u8 *dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBattler][3 + i];
RecordedOpponentBufferExecCompleted();
}
static void RecordedOpponentHandleLoadMonSprite(void)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_806A068(species, GetBankIdentity(gActiveBank));
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_806A068(species, GetBattlerPosition(gActiveBattler));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(gActiveBank, 2),
- GetBankSpriteDefault_Y(gActiveBank),
- sub_80A82E4(gActiveBank));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ GetBattlerSpriteDefault_Y(gActiveBattler),
+ sub_80A82E4(gActiveBattler));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
- SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8186C48;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8186C48;
}
static void RecordedOpponentHandleSwitchInAnim(void)
{
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_81885D8(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_8187084;
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ sub_81885D8(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8187084;
}
static void sub_81885D8(u8 bank, bool8 dontClearSubstituteBit)
@@ -1177,65 +1150,65 @@ static void sub_81885D8(u8 bank, bool8 dontClearSubstituteBit)
u16 species;
ClearTemporarySpeciesSpriteData(bank, dontClearSubstituteBit);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank);
- sub_806A068(species, GetBankIdentity(bank));
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[bank]], bank);
+ sub_806A068(species, GetBattlerPosition(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(bank, 2),
- GetBankSpriteDefault_Y(bank),
+ gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(bank, 2),
+ GetBattlerSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBattlerSpriteIds[bank];
gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[2] = species;
+ gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void RecordedOpponentHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = DoSwitchOutAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- EnemyShadowCallbackToSetInvisible(gActiveBank);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ HideBattlerShadowSprite(gActiveBattler);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
RecordedOpponentBufferExecCompleted();
}
}
static void DoSwitchOutAnimation(void)
{
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_OPPONENT_MON);
- gBattleBankFunc[gActiveBank] = sub_8186D9C;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_OPPONENT_MON);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8186D9C;
}
break;
}
@@ -1248,21 +1221,21 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if ((GetBankIdentity(gActiveBank) & BIT_MON) != 0) // second mon
+ if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
xPos = 152;
else // first mon
xPos = 200;
if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
{
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_A);
else
trainerPicId = GetFrontierTrainerFrontSpriteId(gTrainerBattleOpponent_B);
}
else
{
- trainerPicId = PlayerGenderToFrontTrainerPicId(GetActiveBankLinkPlayerGender());
+ trainerPicId = PlayerGenderToFrontTrainerPicId(GetActiveBattlerLinkPlayerGender());
}
}
else
@@ -1278,20 +1251,20 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
}
}
- DecompressTrainerFrontPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
+ DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBank));
+ sub_80A82E4(gActiveBattler));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = trainerPicId;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void RecordedOpponentHandleTrainerSlide(void)
@@ -1301,31 +1274,31 @@ static void RecordedOpponentHandleTrainerSlide(void)
static void RecordedOpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_81865C8;
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattlerControllerFuncs[gActiveBattler] = sub_81865C8;
}
static void RecordedOpponentHandleFaintAnimation(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++;
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_OPPONENT);
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039934;
- gBattleBankFunc[gActiveBank] = sub_8186D58;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039934;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8186D58;
}
}
}
@@ -1352,51 +1325,51 @@ static void RecordedOpponentHandlePause(void)
static void RecordedOpponentHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
RecordedOpponentBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = RecordedOpponentDoMoveAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = RecordedOpponentDoMoveAnimation;
}
}
}
static void RecordedOpponentDoMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 multihit = gBattleBufferA[gActiveBank][11];
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 multihit = gBattleBufferA[gActiveBattler][11];
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute
- && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
+ && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
{
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
break;
case 2:
@@ -1404,20 +1377,20 @@ static void RecordedOpponentDoMoveAnimation(void)
if (!gAnimScriptActive)
{
sub_805EB9C(1);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
CopyAllBattleSpritesInvisibilities();
- TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
RecordedOpponentBufferExecCompleted();
}
break;
@@ -1430,10 +1403,10 @@ static void RecordedOpponentHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
static void RecordedOpponentHandlePrintSelectionString(void)
@@ -1443,7 +1416,7 @@ static void RecordedOpponentHandlePrintSelectionString(void)
static void RecordedOpponentHandleChooseAction(void)
{
- EmitTwoReturnValues(1, RecordedBattle_ReadBankAction(gActiveBank), 0);
+ BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedOpponentBufferExecCompleted();
}
@@ -1456,13 +1429,13 @@ static void RecordedOpponentHandleChooseMove(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
}
else
{
- u8 moveId = RecordedBattle_ReadBankAction(gActiveBank);
- u8 target = RecordedBattle_ReadBankAction(gActiveBank);
- EmitTwoReturnValues(1, 10, moveId | (target << 8));
+ u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler);
+ u8 target = RecordedBattle_GetBattlerAction(gActiveBattler);
+ BtlController_EmitTwoReturnValues(1, 10, moveId | (target << 8));
}
RecordedOpponentBufferExecCompleted();
@@ -1475,8 +1448,8 @@ static void RecordedOpponentHandleChooseItem(void)
static void RecordedOpponentHandleChoosePokemon(void)
{
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = RecordedBattle_ReadBankAction(gActiveBank);
- EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBank), NULL);
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler);
+ BtlController_EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
RecordedOpponentBufferExecCompleted();
}
@@ -1490,23 +1463,23 @@ static void RecordedOpponentHandleHealthBarUpdate(void)
s16 hpVal;
LoadBattleBarGfx(0);
- hpVal = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (hpVal != INSTANT_HP_BAR_DROP)
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
}
- gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void RecordedOpponentHandleExpUpdate(void)
@@ -1516,24 +1489,24 @@ static void RecordedOpponentHandleExpUpdate(void)
static void RecordedOpponentHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
u8 bank;
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], HEALTHBOX_STATUS_ICON);
- bank = gActiveBank;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
+ bank = gActiveBattler;
gBattleSpritesDataPtr->healthBoxesData[bank].statusAnimActive = 0;
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
static void RecordedOpponentHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
@@ -1590,7 +1563,7 @@ static void RecordedOpponentHandleCmd37(void)
static void RecordedOpponentHandleCmd38(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
RecordedOpponentBufferExecCompleted();
}
@@ -1608,16 +1581,16 @@ static void RecordedOpponentHandleCmd40(void)
static void RecordedOpponentHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
RecordedOpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- DoHitAnimHealthboxEffect(gActiveBank);
- gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ DoHitAnimHealthboxEffect(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect;
}
}
@@ -1630,25 +1603,25 @@ static void RecordedOpponentHandlePlaySE(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
pan = PAN_SIDE_PLAYER;
else
pan = PAN_SIDE_OPPONENT;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
RecordedOpponentBufferExecCompleted();
}
static void RecordedOpponentHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
RecordedOpponentBufferExecCompleted();
@@ -1656,7 +1629,7 @@ static void RecordedOpponentHandlePlayFanfareOrBGM(void)
static void RecordedOpponentHandleFaintingCry(void)
{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry3(species, 25, 5);
RecordedOpponentBufferExecCompleted();
@@ -1664,8 +1637,8 @@ static void RecordedOpponentHandleFaintingCry(void)
static void RecordedOpponentHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
RecordedOpponentBufferExecCompleted();
}
@@ -1674,46 +1647,46 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 280;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_818962C);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_818962C);
taskId = CreateTask(sub_8189548, 5);
- gTasks[taskId].data[0] = gActiveBank;
+ gTasks[taskId].data[0] = gActiveBattler;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_70;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_70;
}
static void sub_8189548(u8 taskId)
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_81885D8(gActiveBank, FALSE);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_81885D8(gActiveBattler, FALSE);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_81885D8(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_81885D8(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_81885D8(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_81885D8(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
}
- gBattleBankFunc[gActiveBank] = sub_818686C;
- gActiveBank = savedActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = sub_818686C;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
@@ -1726,50 +1699,50 @@ static void sub_818962C(struct Sprite *sprite)
static void RecordedOpponentHandleDrawPartyStatusSummary(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
RecordedOpponentBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
- if (gBattleBufferA[gActiveBank][2] != 0)
+ if (gBattleBufferA[gActiveBattler][2] != 0)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E < 2)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E < 2)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E++;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E++;
return;
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1E = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1E = 0;
}
}
- gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0x5D;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_818975C;
+ gBattlerControllerFuncs[gActiveBattler] = sub_818975C;
}
}
static void sub_818975C(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
RecordedOpponentBufferExecCompleted();
}
}
static void RecordedOpponentHandleCmd49(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
RecordedOpponentBufferExecCompleted();
}
@@ -1780,25 +1753,25 @@ static void RecordedOpponentHandleCmd50(void)
static void RecordedOpponentHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank))
+ if (IsBattlerSpritePresent(gActiveBattler))
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- CopyBattleSpriteInvisibility(gActiveBank);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ CopyBattleSpriteInvisibility(gActiveBattler);
}
RecordedOpponentBufferExecCompleted();
}
static void RecordedOpponentHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
RecordedOpponentBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
}
@@ -1814,15 +1787,15 @@ static void RecordedOpponentHandleResetActionMoveSelection(void)
static void RecordedOpponentHandleCmd55(void)
{
- if (gBattleBufferA[gActiveBank][1] == BATTLE_DREW)
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ if (gBattleBufferA[gActiveBattler][1] == B_OUTCOME_DREW)
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
else
- gBattleOutcome = gBattleBufferA[gActiveBank][1] ^ BATTLE_DREW;
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1] ^ B_OUTCOME_DREW;
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
RecordedOpponentBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
static void nullsub_119(void)
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index f101d811f..4efe5babf 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -23,36 +23,12 @@
#include "reshow_battle_screen.h"
#include "pokeball.h"
#include "data2.h"
+#include "item_use.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gNoOfAllBanks;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern struct SpriteTemplate gUnknown_0202499C;
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u8 gBankInMenu;
-extern u16 gUnknown_020243FC;
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u8 gUnknown_020244B4[];
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
-extern u8 gBattleCommunication[];
+extern u32 gTransformedPersonalities[MAX_BATTLERS_COUNT];
extern u8 gUnknown_0203C7B4;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern struct UnusedControllerStruct gUnknown_02022D0C;
@@ -63,6 +39,7 @@ extern const struct BattleMove gBattleMoves[];
extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
extern void sub_806A068(u16, u8);
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
// this file's functions
static void RecordedPlayerHandleGetMonData(void);
@@ -201,15 +178,15 @@ static void nullsub_120(void)
void SetControllerToRecordedPlayer(void)
{
- gBattleBankFunc[gActiveBank] = RecordedPlayerBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = RecordedPlayerBufferRunCommand;
}
static void RecordedPlayerBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sRecordedPlayerBufferCommands))
- sRecordedPlayerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sRecordedPlayerBufferCommands))
+ sRecordedPlayerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
RecordedPlayerBufferExecCompleted();
}
@@ -217,26 +194,26 @@ static void RecordedPlayerBufferRunCommand(void)
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
RecordedPlayerBufferExecCompleted();
}
static void sub_81899F0(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
nullsub_25(0);
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
RecordedPlayerBufferExecCompleted();
}
}
static void sub_8189A58(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
RecordedPlayerBufferExecCompleted();
}
}
@@ -245,53 +222,53 @@ static void sub_8189AA0(void)
{
bool32 r6 = FALSE;
- if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON1)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT)
{
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
else
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthBoxesIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
r6 = TRUE;
}
}
- if (r6 && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
+ if (r6 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
if (IsDoubleBattle())
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], gActiveBank ^ BIT_MON);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], gActiveBattler ^ BIT_FLANK);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3;
- gBattleBankFunc[gActiveBank] = sub_8189A58;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8189A58;
}
}
else
{
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r6 = TRUE;
}
else
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthBoxesIds[gActiveBank ^ BIT_MON]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
r6 = TRUE;
}
@@ -302,8 +279,8 @@ static void sub_8189AA0(void)
if (r6)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 = 3;
- gBattleBankFunc[gActiveBank] = sub_8189A58;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8189A58;
}
}
}
@@ -312,48 +289,48 @@ static void sub_8189D40(void)
{
bool32 r10 = FALSE;
- if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON1)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- sub_8172EF0(gActiveBank ^ BIT_MON, &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
+ sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
}
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank ^ BIT_MON], &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank ^ BIT_MON);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank ^ BIT_MON]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler ^ BIT_FLANK);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 1;
}
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x40
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x40
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x40
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x40
&& !IsCryPlayingOrClearCrySongs())
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20)
{
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON1)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT)
m4aMPlayContinue(&gMPlayInfo_BGM);
}
else
@@ -362,68 +339,68 @@ static void sub_8189D40(void)
}
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 1;
r10 = TRUE;
}
- if (r10 && gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (r10 && gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x20 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80 = 0;
- gBattleBankFunc[gActiveBank] = sub_8189AA0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8189AA0;
}
}
static void sub_818A064(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].animEnded && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
RecordedPlayerBufferExecCompleted();
}
static void CompleteOnHealthbarDone(void)
{
- s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], HEALTH_BAR, 0);
+ s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
if (hpValue != -1)
{
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], hpValue, HP_CURRENT);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
}
else
{
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
RecordedPlayerBufferExecCompleted();
}
}
static void sub_818A114(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
nullsub_24(species);
- FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
RecordedPlayerBufferExecCompleted();
}
}
static void sub_818A1B0(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
RecordedPlayerBufferExecCompleted();
}
}
@@ -436,7 +413,7 @@ static void CompleteOnInactiveTextPrinter(void)
static void DoHitAnimBlinkSpriteEffect(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBattlerSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -455,20 +432,20 @@ static void DoHitAnimBlinkSpriteEffect(void)
static void sub_818A2B4(void)
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- CopyBattleSpriteInvisibility(gActiveBank);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
+ CopyBattleSpriteInvisibility(gActiveBattler);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleBankFunc[gActiveBank] = sub_818A328;
+ gBattlerControllerFuncs[gActiveBattler] = sub_818A328;
}
}
static void sub_818A328(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
RecordedPlayerBufferExecCompleted();
}
@@ -476,66 +453,66 @@ static void sub_818A328(void)
static void sub_818A37C(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
CreateTask(c3_0802FDF4, 10);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattleBankFunc[gActiveBank] = sub_818A2B4;
+ gBattlerControllerFuncs[gActiveBattler] = sub_818A2B4;
}
}
static void sub_818A470(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
+ if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- gBattleBankFunc[gActiveBank] = sub_818A37C;
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_818A37C;
}
}
static void RecordedPlayerBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = RecordedPlayerBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = RecordedPlayerBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
RecordedPlayerBufferExecCompleted();
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
RecordedPlayerBufferExecCompleted();
}
@@ -546,13 +523,13 @@ static void RecordedPlayerHandleGetMonData(void)
u8 monToCheck;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- size += CopyRecordedPlayerMonData(gBattlePartyID[gActiveBank], monData);
+ size += CopyRecordedPlayerMonData(gBattlerPartyIndexes[gActiveBattler], monData);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -560,7 +537,7 @@ static void RecordedPlayerHandleGetMonData(void)
monToCheck >>= 1;
}
}
- EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(1, size, monData);
RecordedPlayerBufferExecCompleted();
}
@@ -574,7 +551,7 @@ static u32 CopyRecordedPlayerMonData(u8 monId, u8 *dst)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
@@ -640,7 +617,7 @@ static u32 CopyRecordedPlayerMonData(u8 monId, u8 *dst)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE);
+ data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE);
dst[0] = data16;
dst[1] = data16 >> 8;
size = 2;
@@ -655,7 +632,7 @@ static u32 CopyRecordedPlayerMonData(u8 monId, u8 *dst)
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE);
+ dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE);
size = 1;
break;
case REQUEST_OTID_BATTLE:
@@ -880,13 +857,13 @@ static void RecordedPlayerHandleSetMonData(void)
u8 monToCheck;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- SetRecordedPlayerMonData(gBattlePartyID[gActiveBank]);
+ SetRecordedPlayerMonData(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -899,11 +876,11 @@ static void RecordedPlayerHandleSetMonData(void)
static void SetRecordedPlayerMonData(u8 monId)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
{
@@ -944,10 +921,10 @@ static void SetRecordedPlayerMonData(u8 monId)
}
break;
case REQUEST_SPECIES_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HELDITEM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MOVES_PP_BATTLE:
for (i = 0; i < 4; i++)
@@ -961,167 +938,167 @@ static void SetRecordedPlayerMonData(u8 monId)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PP_DATA_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case REQUEST_PPMOVE1_BATTLE:
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_OTID_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_EXP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_FRIENDSHIP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKERUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LOCATION_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_GAME_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKEBALL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ALL_IVS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case REQUEST_HP_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PERSONALITY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CHECKSUM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_STATUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MAX_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SHEEN_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
static void RecordedPlayerHandleSetRawMonData(void)
{
- u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBattler][3 + i];
RecordedPlayerBufferExecCompleted();
}
@@ -1130,28 +1107,28 @@ static void RecordedPlayerHandleLoadMonSprite(void)
{
u16 species;
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_806A068(species, GetBankIdentity(gActiveBank));
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
+ sub_806A068(species, GetBattlerPosition(gActiveBattler));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(gActiveBank, 2),
- GetBankSpriteDefault_Y(gActiveBank),
- sub_80A82E4(gActiveBank));
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
- gBattleBankFunc[gActiveBank] = sub_818A064;
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(gActiveBattler, 2),
+ GetBattlerSpriteDefault_Y(gActiveBattler),
+ sub_80A82E4(gActiveBattler));
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_818A064;
}
static void RecordedPlayerHandleSwitchInAnim(void)
{
- ClearTemporarySpeciesSpriteData(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_818BA6C(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_818A470;
+ ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_818BA6C(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = sub_818A470;
}
static void sub_818BA6C(u8 bank, bool8 dontClearSubstituteBit)
@@ -1159,64 +1136,64 @@ static void sub_818BA6C(u8 bank, bool8 dontClearSubstituteBit)
u16 species;
ClearTemporarySpeciesSpriteData(bank, dontClearSubstituteBit);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
- sub_806A068(species, GetBankIdentity(bank));
+ sub_806A068(species, GetBattlerPosition(bank));
- gBankSpriteIds[bank] = CreateSprite(
+ gBattlerSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- GetBankPosition(bank, 2),
- GetBankSpriteDefault_Y(bank),
+ GetBattlerSpriteCoord(bank, 2),
+ GetBattlerSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBattlerSpriteIds[bank];
gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[2] = species;
+ gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void RecordedPlayerHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = DoSwitchOutAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
RecordedPlayerBufferExecCompleted();
}
}
static void DoSwitchOutAnimation(void)
{
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattleBankFunc[gActiveBank] = sub_818A1B0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
+ gBattlerControllerFuncs[gActiveBattler] = sub_818A1B0;
}
break;
}
@@ -1230,7 +1207,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- trainerPicId = GetActiveBankLinkPlayerGender();
+ trainerPicId = GetActiveBattlerLinkPlayerGender();
else
trainerPicId = gLinkPlayers[gUnknown_0203C7B4].gender;
}
@@ -1241,7 +1218,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if ((GetBankIdentity(gActiveBank) & BIT_MON) != 0) // second mon
+ if ((GetBattlerPosition(gActiveBattler) & BIT_FLANK) != 0) // second mon
xPos = 90;
else // first mon
xPos = 32;
@@ -1266,31 +1243,31 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender);
- DecompressTrainerFrontPic(trainerPicId, gActiveBank);
- sub_806A1C0(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBank));
-
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.y = 48;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
- gSprites[gBankSpriteIds[gActiveBank]].oam.affineMode = 0;
- gSprites[gBankSpriteIds[gActiveBank]].hFlip = 1;
+ DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
+ sub_806A1C0(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
+
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = 0;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].hFlip = 1;
}
else
{
- DecompressTrainerBackPic(trainerPicId, gActiveBank);
- sub_806A12C(trainerPicId, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBank));
-
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
+ DecompressTrainerBackPic(trainerPicId, gActiveBattler);
+ sub_806A12C(trainerPicId, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C, xPos, yPos, sub_80A82E4(gActiveBattler));
+
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
}
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void RecordedPlayerHandleTrainerSlide(void)
@@ -1300,34 +1277,34 @@ static void RecordedPlayerHandleTrainerSlide(void)
static void RecordedPlayerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_81899F0;
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
+ gBattlerControllerFuncs[gActiveBattler] = sub_81899F0;
}
static void RecordedPlayerHandleFaintAnimation(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState == 0)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState++;
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState++;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039C00;
- gBattleBankFunc[gActiveBank] = sub_818A114;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00;
+ gBattlerControllerFuncs[gActiveBattler] = sub_818A114;
}
}
}
@@ -1354,51 +1331,51 @@ static void RecordedPlayerHandlePause(void)
static void RecordedPlayerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
RecordedPlayerBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = RecordedPlayerDoMoveAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = RecordedPlayerDoMoveAnimation;
}
}
}
static void RecordedPlayerDoMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 multihit = gBattleBufferA[gActiveBank][11];
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
+ u8 multihit = gBattleBufferA[gActiveBattler][11];
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute
- && !gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute
+ && !gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8)
{
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 1;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 1;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
break;
case 2:
@@ -1406,20 +1383,20 @@ static void RecordedPlayerDoMoveAnimation(void)
if (!gAnimScriptActive)
{
sub_805EB9C(1);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute && multihit < 2)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
- gBattleSpritesDataPtr->bankData[gActiveBank].flag_x8 = 0;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
+ gBattleSpritesDataPtr->battlerData[gActiveBattler].flag_x8 = 0;
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
CopyAllBattleSpritesInvisibilities();
- TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
RecordedPlayerBufferExecCompleted();
}
break;
@@ -1432,10 +1409,10 @@ static void RecordedPlayerHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
static void RecordedPlayerHandlePrintSelectionString(void)
@@ -1445,9 +1422,9 @@ static void RecordedPlayerHandlePrintSelectionString(void)
static void ChooseActionInBattlePalace(void)
{
- if (gBattleCommunication[4] >= gNoOfAllBanks / 2)
+ if (gBattleCommunication[4] >= gBattlersCount / 2)
{
- EmitTwoReturnValues(1, RecordedBattle_ReadBankAction(gActiveBank), 0);
+ BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedPlayerBufferExecCompleted();
}
}
@@ -1456,11 +1433,11 @@ static void RecordedPlayerHandleChooseAction(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gBattleBankFunc[gActiveBank] = ChooseActionInBattlePalace;
+ gBattlerControllerFuncs[gActiveBattler] = ChooseActionInBattlePalace;
}
else
{
- EmitTwoReturnValues(1, RecordedBattle_ReadBankAction(gActiveBank), 0);
+ BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
RecordedPlayerBufferExecCompleted();
}
}
@@ -1474,13 +1451,13 @@ static void RecordedPlayerHandleChooseMove(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
+ BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
}
else
{
- u8 moveId = RecordedBattle_ReadBankAction(gActiveBank);
- u8 target = RecordedBattle_ReadBankAction(gActiveBank);
- EmitTwoReturnValues(1, 10, moveId | (target << 8));
+ u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler);
+ u8 target = RecordedBattle_GetBattlerAction(gActiveBattler);
+ BtlController_EmitTwoReturnValues(1, 10, moveId | (target << 8));
}
RecordedPlayerBufferExecCompleted();
@@ -1493,8 +1470,8 @@ static void RecordedPlayerHandleChooseItem(void)
static void RecordedPlayerHandleChoosePokemon(void)
{
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = RecordedBattle_ReadBankAction(gActiveBank);
- EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBank), NULL);
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler);
+ BtlController_EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
RecordedPlayerBufferExecCompleted();
}
@@ -1508,24 +1485,24 @@ static void RecordedPlayerHandleHealthBarUpdate(void)
s16 hpVal;
LoadBattleBarGfx(0);
- hpVal = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (hpVal != INSTANT_HP_BAR_DROP)
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], 0, HP_CURRENT);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT);
}
- gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void RecordedPlayerHandleExpUpdate(void)
@@ -1535,24 +1512,24 @@ static void RecordedPlayerHandleExpUpdate(void)
static void RecordedPlayerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
u8 bank;
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_STATUS_ICON);
- bank = gActiveBank;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON);
+ bank = gActiveBattler;
gBattleSpritesDataPtr->healthBoxesData[bank].statusAnimActive = 0;
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
static void RecordedPlayerHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedStatusAnimation;
+ InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
+ gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation;
}
}
@@ -1609,7 +1586,7 @@ static void RecordedPlayerHandleCmd37(void)
static void RecordedPlayerHandleCmd38(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBank][1];
+ gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
RecordedPlayerBufferExecCompleted();
}
@@ -1627,16 +1604,16 @@ static void RecordedPlayerHandleCmd40(void)
static void RecordedPlayerHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
RecordedPlayerBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- DoHitAnimHealthboxEffect(gActiveBank);
- gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ DoHitAnimHealthboxEffect(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect;
}
}
@@ -1649,25 +1626,25 @@ static void RecordedPlayerHandlePlaySE(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
pan = PAN_SIDE_PLAYER;
else
pan = PAN_SIDE_OPPONENT;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
RecordedPlayerBufferExecCompleted();
}
static void RecordedPlayerHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
RecordedPlayerBufferExecCompleted();
@@ -1675,7 +1652,7 @@ static void RecordedPlayerHandlePlayFanfareOrBGM(void)
static void RecordedPlayerHandleFaintingCry(void)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry3(species, -25, 5);
RecordedPlayerBufferExecCompleted();
@@ -1683,8 +1660,8 @@ static void RecordedPlayerHandleFaintingCry(void)
static void RecordedPlayerHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
RecordedPlayerBufferExecCompleted();
}
@@ -1694,35 +1671,35 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
u8 taskId;
u32 trainerPicId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F9);
if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
- trainerPicId = gLinkPlayers[GetBankMultiplayerId(gActiveBank)].gender;
+ trainerPicId = gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender;
else
trainerPicId = gSaveBlock2Ptr->playerGender;
LoadCompressedPalette(gTrainerBackPicPaletteTable[trainerPicId].data, 0x100 + paletteNum * 16, 32);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
taskId = CreateTask(sub_818CC24, 5);
- gTasks[taskId].data[0] = gActiveBank;
+ gTasks[taskId].data[0] = gActiveBattler;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_120;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_120;
}
static void sub_818CC24(u8 taskId)
@@ -1733,62 +1710,62 @@ static void sub_818CC24(u8 taskId)
}
else
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].data[0];
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_818BA6C(gActiveBank, FALSE);
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_818BA6C(gActiveBattler, FALSE);
}
else
{
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_818BA6C(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_818BA6C(gActiveBank, FALSE);
- gActiveBank ^= BIT_MON;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_818BA6C(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
+ sub_818BA6C(gActiveBattler, FALSE);
+ gActiveBattler ^= BIT_FLANK;
}
- gBattleBankFunc[gActiveBank] = sub_8189D40;
- gActiveBank = savedActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8189D40;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
}
static void RecordedPlayerHandleDrawPartyStatusSummary(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
RecordedPlayerBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
- gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0x5D;
+ if (gBattleBufferA[gActiveBattler][2] != 0)
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_818CDF4;
+ gBattlerControllerFuncs[gActiveBattler] = sub_818CDF4;
}
}
static void sub_818CDF4(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
RecordedPlayerBufferExecCompleted();
}
}
static void RecordedPlayerHandleCmd49(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
RecordedPlayerBufferExecCompleted();
}
@@ -1799,25 +1776,25 @@ static void RecordedPlayerHandleCmd50(void)
static void RecordedPlayerHandleSpriteInvisibility(void)
{
- if (IsBankSpritePresent(gActiveBank))
+ if (IsBattlerSpritePresent(gActiveBattler))
{
- gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- CopyBattleSpriteInvisibility(gActiveBank);
+ gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
+ CopyBattleSpriteInvisibility(gActiveBattler);
}
RecordedPlayerBufferExecCompleted();
}
static void RecordedPlayerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBank))
+ if (!mplay_80342A4(gActiveBattler))
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
RecordedPlayerBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
}
@@ -1833,11 +1810,11 @@ static void RecordedPlayerHandleResetActionMoveSelection(void)
static void RecordedPlayerHandleCmd55(void)
{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
RecordedPlayerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
static void nullsub_121(void)
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index 682e8333d..f65d11a84 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -21,27 +21,12 @@
#include "pokeball.h"
#include "data2.h"
#include "pokeblock.h"
+#include "item_use.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gNoOfAllBanks;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern void (*gPreBattleCallback1)(void);
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
+extern struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT];
extern struct SpriteTemplate gUnknown_0202499C;
-extern u16 gSpecialVar_ItemId;
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleOutcome;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
-extern u8 gBankInMenu;
-extern u16 gUnknown_020243FC;
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -180,15 +165,15 @@ static void nullsub_114(void)
void SetControllerToSafari(void)
{
- gBattleBankFunc[gActiveBank] = SafariBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = SafariBufferRunCommand;
}
static void SafariBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sSafariBufferCommands))
- sSafariBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sSafariBufferCommands))
+ sSafariBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
SafariBufferExecCompleted();
}
@@ -200,68 +185,68 @@ static void HandleInputChooseAction(void)
{
PlaySE(SE_SELECT);
- switch (gActionSelectionCursor[gActiveBank])
+ switch (gActionSelectionCursor[gActiveBattler])
{
case 0:
- EmitTwoReturnValues(1, ACTION_SAFARI_ZONE_BALL, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_BALL, 0);
break;
case 1:
- EmitTwoReturnValues(1, ACTION_POKEBLOCK_CASE, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_POKEBLOCK, 0);
break;
case 2:
- EmitTwoReturnValues(1, ACTION_GO_NEAR, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_GO_NEAR, 0);
break;
case 3:
- EmitTwoReturnValues(1, ACTION_SAFARI_ZONE_RUN, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_RUN, 0);
break;
}
SafariBufferExecCompleted();
}
else if (gMain.newKeys & DPAD_LEFT)
{
- if (gActionSelectionCursor[gActiveBank] & 1)
+ if (gActionSelectionCursor[gActiveBattler] & 1)
{
PlaySE(SE_SELECT);
- ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 1;
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 1;
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_RIGHT)
{
- if (!(gActionSelectionCursor[gActiveBank] & 1))
+ if (!(gActionSelectionCursor[gActiveBattler] & 1))
{
PlaySE(SE_SELECT);
- ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 1;
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 1;
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_UP)
{
- if (gActionSelectionCursor[gActiveBank] & 2)
+ if (gActionSelectionCursor[gActiveBattler] & 2)
{
PlaySE(SE_SELECT);
- ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 2;
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 2;
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
else if (gMain.newKeys & DPAD_DOWN)
{
- if (!(gActionSelectionCursor[gActiveBank] & 2))
+ if (!(gActionSelectionCursor[gActiveBattler] & 2))
{
PlaySE(SE_SELECT);
- ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBank]);
- gActionSelectionCursor[gActiveBank] ^= 2;
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]);
+ gActionSelectionCursor[gActiveBattler] ^= 2;
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
}
}
}
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
SafariBufferExecCompleted();
}
@@ -273,7 +258,7 @@ static void CompleteOnInactiveTextPrinter(void)
static void CompleteOnHealthboxSpriteCallbackDummy(void)
{
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
SafariBufferExecCompleted();
}
@@ -289,7 +274,7 @@ static void sub_81595E4(void)
static void CompleteOnSpecialAnimDone(void)
{
- if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
SafariBufferExecCompleted();
}
@@ -297,7 +282,7 @@ static void SafariOpenPokeblockCase(void)
{
if (!gPaletteFade.active)
{
- gBattleBankFunc[gActiveBank] = CompleteWhenChosePokeblock;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChosePokeblock;
FreeAllWindowBuffers();
OpenPokeblockCaseInBattle();
}
@@ -307,36 +292,36 @@ static void CompleteWhenChosePokeblock(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- EmitOneReturnValue(1, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
SafariBufferExecCompleted();
}
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
SafariBufferExecCompleted();
}
static void SafariBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = SafariBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = SafariBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
SafariBufferExecCompleted();
}
@@ -377,18 +362,18 @@ static void SafariHandleReturnMonToBall(void)
static void SafariHandleDrawTrainerPic(void)
{
- DecompressTrainerBackPic(gSaveBlock2Ptr->playerGender, gActiveBank);
- sub_806A12C(gSaveBlock2Ptr->playerGender, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(
+ DecompressTrainerBackPic(gSaveBlock2Ptr->playerGender, gActiveBattler);
+ sub_806A12C(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(
&gUnknown_0202499C,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
30);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void SafariHandleTrainerSlide(void)
@@ -415,18 +400,18 @@ static void SafariHandleSuccessBallThrowAnim(void)
{
gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW);
- gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
}
static void SafariHandleBallThrowAnim(void)
{
- u8 ballThrowCaseId = gBattleBufferA[gActiveBank][1];
+ u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1];
gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW);
- gBattleBankFunc[gActiveBank] = CompleteOnSpecialAnimDone;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
}
static void SafariHandlePause(void)
@@ -445,15 +430,15 @@ static void SafariHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
static void SafariHandlePrintSelectionString(void)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
SafariHandlePrintString();
else
SafariBufferExecCompleted();
@@ -465,7 +450,7 @@ static void HandleChooseActionAfterDma3(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
- gBattleBankFunc[gActiveBank] = HandleInputChooseAction;
+ gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction;
}
}
@@ -473,13 +458,13 @@ static void SafariHandleChooseAction(void)
{
s32 i;
- gBattleBankFunc[gActiveBank] = HandleChooseActionAfterDma3;
+ gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattleHandleAddTextPrinter(gText_SafariZoneMenu, 2);
for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i);
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo2);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 1);
}
@@ -499,8 +484,8 @@ static void SafariHandleChooseItem(void)
s32 i;
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- gBattleBankFunc[gActiveBank] = SafariOpenPokeblockCase;
- gBankInMenu = gActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = SafariOpenPokeblockCase;
+ gBattlerInMenuId = gActiveBattler;
}
static void SafariHandleChoosePokemon(void)
@@ -525,7 +510,7 @@ static void SafariHandleExpUpdate(void)
static void SafariHandleStatusIconUpdate(void)
{
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_SAFARI_BALLS_TEXT);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_SAFARI_BALLS_TEXT);
SafariBufferExecCompleted();
}
@@ -613,25 +598,25 @@ static void SafariHandlePlaySE(void)
{
s8 pan;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
pan = PAN_SIDE_PLAYER;
else
pan = PAN_SIDE_OPPONENT;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
SafariBufferExecCompleted();
}
static void SafariHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
SafariBufferExecCompleted();
@@ -639,7 +624,7 @@ static void SafariHandlePlayFanfareOrBGM(void)
static void SafariHandleFaintingCry(void)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry1(species, 25);
SafariBufferExecCompleted();
@@ -647,17 +632,17 @@ static void SafariHandleFaintingCry(void)
static void SafariHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
SafariBufferExecCompleted();
}
static void SafariHandleIntroTrainerBallThrow(void)
{
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_SAFARI_ALL_TEXT);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
- gBattleBankFunc[gActiveBank] = CompleteOnHealthboxSpriteCallbackDummy;
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_SAFARI_ALL_TEXT);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthboxSpriteCallbackDummy;
}
static void SafariHandleDrawPartyStatusSummary(void)
@@ -682,13 +667,13 @@ static void SafariHandleSpriteInvisibility(void)
static void SafariHandleBattleAnimation(void)
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
SafariBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
static void SafariHandleLinkStandbyMsg(void)
@@ -703,12 +688,12 @@ static void SafariHandleResetActionMoveSelection(void)
static void SafariHandleCmd55(void)
{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
SafariBufferExecCompleted();
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
- gBattleBankFunc[gActiveBank] = sub_81595E4;
+ gBattlerControllerFuncs[gActiveBattler] = sub_81595E4;
}
static void nullsub_115(void)
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index b0e1e1480..ad028b719 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -27,38 +27,14 @@
#include "pokeball.h"
#include "data2.h"
#include "party_menu.h"
+#include "battle_setup.h"
+#include "item_use.h"
-extern u32 gBattleExecBuffer;
-extern u8 gActiveBank;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gAbsentBankFlags;
-extern u8 gNoOfAllBanks;
-extern bool8 gDoingBattleAnim;
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern u8 gMultiUsePlayerCursor;
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
-extern u16 gPartnerTrainerId;
extern struct SpriteTemplate gUnknown_0202499C;
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u16 gSpecialVar_ItemId;
-extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleOutcome;
-extern u8 gNumberOfMovesToChoose;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
extern s32 gUnknown_0203CD70;
-extern u8 gBankInMenu;
-extern u32 gBattlePalaceMoveSelectionRngValue;
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
-extern u8 gUnknown_020244B4[];
-extern u16 gUnknown_020243FC;
extern struct UnusedControllerStruct gUnknown_02022D0C;
extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
@@ -204,7 +180,7 @@ static void nullsub_117(void)
void SetControllerToWally(void)
{
- gBattleBankFunc[gActiveBank] = WallyBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = WallyBufferRunCommand;
gBattleStruct->wallyBattleState = 0;
gBattleStruct->wallyMovesState = 0;
gBattleStruct->wallyWaitFrames = 0;
@@ -213,10 +189,10 @@ void SetControllerToWally(void)
static void WallyBufferRunCommand(void)
{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
+ if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
- if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(sWallyBufferCommands))
- sWallyBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sWallyBufferCommands))
+ sWallyBufferCommands[gBattleBufferA[gActiveBattler][0]]();
else
WallyBufferExecCompleted();
}
@@ -233,7 +209,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- EmitTwoReturnValues(1, ACTION_USE_MOVE, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -244,7 +220,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- EmitTwoReturnValues(1, ACTION_USE_MOVE, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -254,7 +230,7 @@ static void WallyHandleActions(void)
case 3:
if (--gBattleStruct->wallyWaitFrames == 0)
{
- EmitTwoReturnValues(1, 9, 0);
+ BtlController_EmitTwoReturnValues(1, 9, 0);
WallyBufferExecCompleted();
gBattleStruct->wallyBattleState++;
gBattleStruct->wallyMovesState = 0;
@@ -275,7 +251,7 @@ static void WallyHandleActions(void)
if (--gBattleStruct->wallyWaitFrames == 0)
{
PlaySE(SE_SELECT);
- EmitTwoReturnValues(1, ACTION_USE_ITEM, 0);
+ BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
WallyBufferExecCompleted();
}
break;
@@ -284,7 +260,7 @@ static void WallyHandleActions(void)
static void CompleteOnBankSpriteCallbackDummy(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
WallyBufferExecCompleted();
}
@@ -304,7 +280,7 @@ static void OpenBagAfterPaletteFade(void)
{
if (!gPaletteFade.active)
{
- gBattleBankFunc[gActiveBank] = CompleteOnChosenItem;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnChosenItem;
nullsub_35();
FreeAllWindowBuffers();
DoWallyTutorialBagMenu();
@@ -315,37 +291,37 @@ static void CompleteOnChosenItem(void)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
- EmitOneReturnValue(1, gSpecialVar_ItemId);
+ BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
WallyBufferExecCompleted();
}
}
static void sub_816864C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
- sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
- sub_8172EF0(gActiveBank ^ BIT_MON, &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
+ sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+ sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive
- && gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive
+ && gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank ^ BIT_MON]]);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank ^ BIT_MON], &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank ^ BIT_MON);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank ^ BIT_MON]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler ^ BIT_FLANK);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
- UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
- sub_8076918(gActiveBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
+ sub_8076918(gActiveBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleBankFunc[gActiveBank] = sub_8168818;
+ gBattlerControllerFuncs[gActiveBattler] = sub_8168818;
}
}
@@ -354,23 +330,23 @@ static void sub_8168818(void)
{
bool32 r4 = FALSE;
- if (gSprites[gHealthBoxesIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
r4 = TRUE;
- if (r4 && gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
+ if (r4 && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
CreateTask(c3_0802FDF4, 10);
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
WallyBufferExecCompleted();
}
@@ -378,24 +354,24 @@ static void sub_8168818(void)
static void CompleteOnHealthbarDone(void)
{
- s16 hpValue = sub_8074AA0(gActiveBank, gHealthBoxesIds[gActiveBank], HEALTH_BAR, 0);
+ s16 hpValue = sub_8074AA0(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
- SetHealthboxSpriteVisible(gHealthBoxesIds[gActiveBank]);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
if (hpValue != -1)
{
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], hpValue, HP_CURRENT);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
}
else
{
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
WallyBufferExecCompleted();
}
}
static void DoHitAnimBlinkSpriteEffect(void)
{
- u8 spriteId = gBankSpriteIds[gActiveBank];
+ u8 spriteId = gBattlerSpriteIds[gActiveBattler];
if (gSprites[spriteId].data[1] == 32)
{
@@ -414,46 +390,46 @@ static void DoHitAnimBlinkSpriteEffect(void)
static void sub_8168A20(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
WallyBufferExecCompleted();
}
}
static void CompleteOnBankSpriteCallbackDummy2(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
WallyBufferExecCompleted();
}
static void CompleteOnFinishedBattleAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animFromTableActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
WallyBufferExecCompleted();
}
static void WallyBufferExecCompleted(void)
{
- gBattleBankFunc[gActiveBank] = WallyBufferRunCommand;
+ gBattlerControllerFuncs[gActiveBattler] = WallyBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
u8 playerId = GetMultiplayerId();
PrepareBufferDataTransferLink(2, 4, &playerId);
- gBattleBufferA[gActiveBank][0] = CONTROLLER_TERMINATOR_NOP;
+ gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP;
}
else
{
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
}
static void CompleteOnFinishedStatusAnimation(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
WallyBufferExecCompleted();
}
@@ -464,13 +440,13 @@ static void WallyHandleGetMonData(void)
u8 monToCheck;
s32 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- size += CopyWallyMonData(gBattlePartyID[gActiveBank], monData);
+ size += CopyWallyMonData(gBattlerPartyIndexes[gActiveBattler], monData);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -478,7 +454,7 @@ static void WallyHandleGetMonData(void)
monToCheck >>= 1;
}
}
- EmitDataTransfer(1, size, monData);
+ BtlController_EmitDataTransfer(1, size, monData);
WallyBufferExecCompleted();
}
@@ -492,7 +468,7 @@ static u32 CopyWallyMonData(u8 monId, u8 *dst)
u32 data32;
s32 size = 0;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES);
@@ -558,7 +534,7 @@ static u32 CopyWallyMonData(u8 monId, u8 *dst)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE);
+ data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE);
dst[0] = data16;
dst[1] = data16 >> 8;
size = 2;
@@ -573,7 +549,7 @@ static u32 CopyWallyMonData(u8 monId, u8 *dst)
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE);
+ dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE);
size = 1;
break;
case REQUEST_OTID_BATTLE:
@@ -798,13 +774,13 @@ static void WallyHandleSetMonData(void)
u8 monToCheck;
u8 i;
- if (gBattleBufferA[gActiveBank][2] == 0)
+ if (gBattleBufferA[gActiveBattler][2] == 0)
{
- SetWallyMonData(gBattlePartyID[gActiveBank]);
+ SetWallyMonData(gBattlerPartyIndexes[gActiveBattler]);
}
else
{
- monToCheck = gBattleBufferA[gActiveBank][2];
+ monToCheck = gBattleBufferA[gActiveBattler][2];
for (i = 0; i < 6; i++)
{
if (monToCheck & 1)
@@ -817,11 +793,11 @@ static void WallyHandleSetMonData(void)
static void SetWallyMonData(u8 monId)
{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBank][3];
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
+ struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
s32 i;
- switch (gBattleBufferA[gActiveBank][1])
+ switch (gBattleBufferA[gActiveBattler][1])
{
case REQUEST_ALL_BATTLE:
{
@@ -862,10 +838,10 @@ static void SetWallyMonData(u8 monId)
}
break;
case REQUEST_SPECIES_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HELDITEM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MOVES_PP_BATTLE:
for (i = 0; i < 4; i++)
@@ -879,158 +855,158 @@ static void SetWallyMonData(u8 monId)
case REQUEST_MOVE2_BATTLE:
case REQUEST_MOVE3_BATTLE:
case REQUEST_MOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PP_DATA_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
break;
case REQUEST_PPMOVE1_BATTLE:
case REQUEST_PPMOVE2_BATTLE:
case REQUEST_PPMOVE3_BATTLE:
case REQUEST_PPMOVE4_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_OTID_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_EXP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_EV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_FRIENDSHIP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKERUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LOCATION_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MET_GAME_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_POKEBALL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ALL_IVS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
break;
case REQUEST_HP_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_IV_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_PERSONALITY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CHECKSUM_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_STATUS_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_LEVEL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_MAX_HP_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_ATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_DEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPEED_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPATK_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SPDEF_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SHEEN_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_COOL_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_BEAUTY_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_CUTE_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_SMART_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
case REQUEST_TOUGH_RIBBON_BATTLE:
- SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
break;
}
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
static void WallyHandleSetRawMonData(void)
@@ -1050,48 +1026,48 @@ static void WallyHandleSwitchInAnim(void)
static void WallyHandleReturnMonToBall(void)
{
- if (gBattleBufferA[gActiveBank][1] == 0)
+ if (gBattleBufferA[gActiveBattler][1] == 0)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattleBankFunc[gActiveBank] = sub_8168A20;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
+ gBattlerControllerFuncs[gActiveBattler] = sub_8168A20;
}
else
{
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
- SetHealthboxSpriteInvisible(gHealthBoxesIds[gActiveBank]);
+ FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
WallyBufferExecCompleted();
}
}
static void WallyHandleDrawTrainerPic(void)
{
- DecompressTrainerBackPic(BACK_PIC_WALLY, gActiveBank);
- sub_806A12C(BACK_PIC_WALLY, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
+ DecompressTrainerBackPic(BACK_PIC_WALLY, gActiveBattler);
+ sub_806A12C(BACK_PIC_WALLY, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
80,
80 + 4 * (8 - gTrainerBackPicCoords[BACK_PIC_WALLY].coords),
30);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy;
}
static void WallyHandleTrainerSlide(void)
{
- DecompressTrainerBackPic(BACK_PIC_WALLY, gActiveBank);
- sub_806A12C(BACK_PIC_WALLY, GetBankIdentity(gActiveBank));
- gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
+ DecompressTrainerBackPic(BACK_PIC_WALLY, gActiveBattler);
+ sub_806A12C(BACK_PIC_WALLY, GetBattlerPosition(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gUnknown_0202499C,
80,
80 + 4 * (8 - gTrainerBackPicCoords[BACK_PIC_WALLY].coords),
30);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
- gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2;
}
static void WallyHandleTrainerSlideBack(void)
@@ -1113,18 +1089,18 @@ static void WallyHandleSuccessBallThrowAnim(void)
{
gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW);
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedAnimation;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedAnimation;
}
static void WallyHandleBallThrowAnim(void)
{
- u8 ballThrowCaseId = gBattleBufferA[gActiveBank][1];
+ u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1];
gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId;
gDoingBattleAnim = TRUE;
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, GetBankByIdentity(IDENTITY_OPPONENT_MON1), B_ANIM_SAFARI_BALL_THROW);
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedAnimation;
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW);
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedAnimation;
}
static void WallyHandlePause(void)
@@ -1134,46 +1110,46 @@ static void WallyHandlePause(void)
static void WallyHandleMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
- gAnimMoveTurn = gBattleBufferA[gActiveBank][3];
- gAnimMovePower = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBank][16];
- gTransformedPersonalities[gActiveBank] = gAnimDisableStructPtr->transformedMonPersonality;
+ gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
+ gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
+ gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
+ gAnimFriendship = gBattleBufferA[gActiveBattler][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
+ gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
+ gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
WallyBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
- gBattleBankFunc[gActiveBank] = WallyDoMoveAnimation;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
+ gBattlerControllerFuncs[gActiveBattler] = WallyDoMoveAnimation;
}
}
static void WallyDoMoveAnimation(void)
{
- u16 move = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
- switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState)
+ switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
case 0:
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_SUBSTITUTE_TO_MON);
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1;
break;
case 1:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
sub_805EB9C(0);
DoMoveAnim(move);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 2;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
break;
case 2:
@@ -1181,19 +1157,19 @@ static void WallyDoMoveAnimation(void)
if (!gAnimScriptActive)
{
sub_805EB9C(1);
- if (gBattleSpritesDataPtr->bankData[gActiveBank].behindSubstitute)
+ if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
{
- InitAndLaunchSpecialAnimation(gActiveBank, gActiveBank, gActiveBank, B_ANIM_MON_TO_SUBSTITUTE);
+ InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 3;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3;
}
break;
case 3:
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].specialAnimActive)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
CopyAllBattleSpritesInvisibilities();
- TrySetBehindSubstituteSpriteBit(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
+ TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
WallyBufferExecCompleted();
}
break;
@@ -1206,15 +1182,15 @@ static void WallyHandlePrintString(void)
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- stringId = (u16*)(&gBattleBufferA[gActiveBank][2]);
+ stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
BufferStringBattle(*stringId);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
- gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
static void WallyHandlePrintSelectionString(void)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
WallyHandlePrintString();
else
WallyBufferExecCompleted();
@@ -1226,7 +1202,7 @@ static void HandleChooseActionAfterDma3(void)
{
gBattle_BG0_X = 0;
gBattle_BG0_Y = 160;
- gBattleBankFunc[gActiveBank] = WallyHandleActions;
+ gBattlerControllerFuncs[gActiveBattler] = WallyHandleActions;
}
}
@@ -1234,13 +1210,13 @@ static void WallyHandleChooseAction(void)
{
s32 i;
- gBattleBankFunc[gActiveBank] = HandleChooseActionAfterDma3;
+ gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
BattleHandleAddTextPrinter(gText_BattleMenu, 2);
for (i = 0; i < 4; i++)
ActionSelectionDestroyCursorAt(i);
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBank], 0);
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillWallyDo);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 1);
}
@@ -1271,7 +1247,7 @@ static void WallyHandleChooseMove(void)
if (--gBattleStruct->wallyMoveFrames == 0)
{
PlaySE(SE_SELECT);
- EmitTwoReturnValues(1, 10, 0x100);
+ BtlController_EmitTwoReturnValues(1, 10, 0x100);
WallyBufferExecCompleted();
}
break;
@@ -1281,8 +1257,8 @@ static void WallyHandleChooseMove(void)
static void WallyHandleChooseItem(void)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- gBattleBankFunc[gActiveBank] = OpenBagAfterPaletteFade;
- gBankInMenu = gActiveBank;
+ gBattlerControllerFuncs[gActiveBattler] = OpenBagAfterPaletteFade;
+ gBattlerInMenuId = gActiveBattler;
}
static void WallyHandleChoosePokemon(void)
@@ -1300,24 +1276,24 @@ static void WallyHandleHealthBarUpdate(void)
s16 hpVal;
LoadBattleBarGfx(0);
- hpVal = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (hpVal != INSTANT_HP_BAR_DROP)
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, curHP, hpVal);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal);
}
else
{
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- SetBattleBarStruct(gActiveBank, gHealthBoxesIds[gActiveBank], maxHP, 0, hpVal);
- UpdateHpTextInHealthbox(gHealthBoxesIds[gActiveBank], 0, HP_CURRENT);
+ SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal);
+ UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT);
}
- gBattleBankFunc[gActiveBank] = CompleteOnHealthbarDone;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void WallyHandleExpUpdate(void)
@@ -1402,16 +1378,16 @@ static void WallyHandleCmd40(void)
static void WallyHandleHitAnimation(void)
{
- if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
WallyBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
- DoHitAnimHealthboxEffect(gActiveBank);
- gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
+ DoHitAnimHealthboxEffect(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect;
}
}
@@ -1422,20 +1398,20 @@ static void WallyHandleCmd42(void)
static void WallyHandlePlaySE(void)
{
- PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlaySE(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
WallyBufferExecCompleted();
}
static void WallyHandlePlayFanfareOrBGM(void)
{
- if (gBattleBufferA[gActiveBank][3])
+ if (gBattleBufferA[gActiveBattler][3])
{
BattleStopLowHpSound();
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayBGM(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
else
{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
}
WallyBufferExecCompleted();
@@ -1443,7 +1419,7 @@ static void WallyHandlePlayFanfareOrBGM(void)
static void WallyHandleFaintingCry(void)
{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+ u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry1(species, 25);
WallyBufferExecCompleted();
@@ -1451,8 +1427,8 @@ static void WallyHandleFaintingCry(void)
static void WallyHandleIntroSlide(void)
{
- HandleIntroSlide(gBattleBufferA[gActiveBank][1]);
- gUnknown_020243FC |= 1;
+ HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
+ gIntroSlideFlags |= 1;
WallyBufferExecCompleted();
}
@@ -1461,55 +1437,55 @@ static void WallyHandleIntroTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ oamt_add_pos2_onto_pos1(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_80A6EEC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[BACK_PIC_WALLY].data, 0x100 + paletteNum * 16, 32);
- gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
taskId = CreateTask(sub_816AC04, 5);
- gTasks[taskId].data[0] = gActiveBank;
+ gTasks[taskId].data[0] = gActiveBattler;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1)
- gTasks[gUnknown_020244B4[gActiveBank]].func = sub_8073C30;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1)
+ gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = sub_8073C30;
gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_21;
+ gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
}
static void sub_816AA80(u8 bank)
{
u16 species;
- gBattleSpritesDataPtr->bankData[bank].transformSpecies = 0;
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gBattleSpritesDataPtr->battlerData[bank].transformSpecies = 0;
+ gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
- sub_806A068(species, GetBankIdentity(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
- GetBankPosition(bank, 2),
- GetBankSpriteDefault_Y(bank),
+ sub_806A068(species, GetBattlerPosition(bank));
+ gBattlerSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
+ GetBattlerSpriteCoord(bank, 2),
+ GetBattlerSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBattlerSpriteIds[bank];
gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[bank]].data[2] = species;
+ gSprites[gBattlerSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bank]], gBattleMonForms[bank]);
+ gSprites[gBattlerSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
@@ -1521,27 +1497,27 @@ static void sub_816AC04(u8 taskId)
}
else
{
- u8 savedActiveBank = gActiveBank;
+ u8 savedActiveBank = gActiveBattler;
- gActiveBank = gTasks[taskId].data[0];
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_816AA80(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_816864C;
- gActiveBank = savedActiveBank;
+ gActiveBattler = gTasks[taskId].data[0];
+ gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
+ sub_816AA80(gActiveBattler);
+ gBattlerControllerFuncs[gActiveBattler] = sub_816864C;
+ gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
}
static void WallyHandleDrawPartyStatusSummary(void)
{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
WallyBufferExecCompleted();
}
else
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x1 = 1;
- gUnknown_020244B4[gActiveBank] = CreatePartyStatusSummarySprites(gActiveBank, (struct HpAndStatus *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x1 = 1;
+ gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
WallyBufferExecCompleted();
}
}
@@ -1563,13 +1539,13 @@ static void WallyHandleSpriteInvisibility(void)
static void WallyHandleBattleAnimation(void)
{
- u8 animationId = gBattleBufferA[gActiveBank][1];
- u16 argument = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ u8 animationId = gBattleBufferA[gActiveBattler][1];
+ u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (TryHandleLaunchBattleTableAnimation(gActiveBank, gActiveBank, gActiveBank, animationId, argument))
+ if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
WallyBufferExecCompleted();
else
- gBattleBankFunc[gActiveBank] = CompleteOnFinishedBattleAnimation;
+ gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
static void WallyHandleLinkStandbyMsg(void)
@@ -1584,13 +1560,13 @@ static void WallyHandleResetActionMoveSelection(void)
static void WallyHandleCmd55(void)
{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
WallyBufferExecCompleted();
if (!(gBattleTypeFlags & BATTLE_TYPE_WILD) && gBattleTypeFlags & BATTLE_TYPE_LINK)
- gBattleBankFunc[gActiveBank] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
}
static void nullsub_118(void)
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 96660e8ae..3c8b1563f 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -13,19 +13,15 @@
#include "battle_message.h"
extern u32 gBattleExecBuffer;
-extern void (*gBattleMainFunc)(void);
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
+extern void (*gBattleBankFunc[4])(void);
+extern u8 gBanksByIdentity[4];
+extern u8 gActionSelectionCursor[4];
+extern u8 gMoveSelectionCursor[4];
extern u8 gNoOfAllBanks;
extern u8 gActiveBank;
-extern u8 gUnknown_0202428C;
-extern u32 gUnknown_02022FF4;
-extern u8 gUnknown_0203C7B4;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
+extern u16 gBattlePartyID[4];
+extern u8 gBattleBufferA[4][0x200];
+extern u8 gBattleBufferB[4][0x200];
extern u8 gUnknown_02022D08;
extern u8 gUnknown_02022D09;
extern u8 gUnknown_02022D0A;
@@ -33,15 +29,10 @@ extern u8 gBankAttacker;
extern u8 gBankTarget;
extern u8 gAbsentBankFlags;
extern u8 gEffectBank;
-extern u16 gBattleWeather;
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u16 gCurrentMove;
+extern struct BattlePokemon gBattleMons[4];
extern u16 gLastUsedMove;
-extern u16 gChosenMove;
-extern u16 gLastUsedItem;
-extern u8 gBattleOutcome;
-extern u8 gLastUsedAbility;
extern u8 gStringBank;
+extern u8 gBattleBuffersTransferData[0x100];
static EWRAM_DATA u8 sBattleBuffersTransferData[0x100] = {};
@@ -52,8 +43,8 @@ extern void sub_81B8D64(u8 bank, u8 arg1); // party_menu
// this file's funcionts
static void CreateTasksForSendRecvLinkBuffers(void);
-static void SetControllersVariablesInLinkBattle(void);
-static void SetControllersVariables(void);
+static void InitLinkBtlControllers(void);
+static void InitSinglePlayerBtlControllers(void);
static void SetBattlePartyIds(void);
static void Task_HandleSendLinkBuffersData(u8 taskId);
static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId);
@@ -77,16 +68,16 @@ void SetUpBattleVarsAndBirchZigzagoon(void)
gBattleMainFunc = nullsub_20;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- gBattleBankFunc[i] = nullsub_21;
- gBanksByIdentity[i] = 0xFF;
+ gBattlerControllerFuncs[i] = nullsub_21;
+ gBattlerPositions[i] = 0xFF;
gActionSelectionCursor[i] = 0;
gMoveSelectionCursor[i] = 0;
}
HandleLinkBattleSetup();
- gBattleExecBuffer = 0;
+ gBattleControllerExecFlags = 0;
ClearBattleAnimationVars();
ClearBattleMonForms();
BattleAI_HandleItemUseBeforeAISetup(0xF);
@@ -117,15 +108,15 @@ void sub_8032768(void)
RecordedBattle_SaveParties();
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- SetControllersVariablesInLinkBattle();
+ InitLinkBtlControllers();
else
- SetControllersVariables();
+ InitSinglePlayerBtlControllers();
SetBattlePartyIds();
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
sub_81B8D64(i, 0);
}
@@ -136,7 +127,7 @@ void sub_8032768(void)
*(gBattleStruct->field_204 + i) = 0;
}
-static void SetControllersVariables(void)
+static void InitSinglePlayerBtlControllers(void)
{
s32 i;
@@ -146,62 +137,62 @@ static void SetControllersVariables(void)
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
- gBattleBankFunc[0] = SetControllerToRecordedPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[2] = SetControllerToPlayerPartner;
- gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToPlayerPartner;
+ gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
- gBattleBankFunc[3] = SetControllerToOpponent;
- gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToOpponent;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
}
else
{
- gBattleBankFunc[0] = SetControllerToPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[2] = SetControllerToPlayerPartner;
- gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToPlayerPartner;
+ gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
- gBattleBankFunc[3] = SetControllerToOpponent;
- gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToOpponent;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
}
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
sub_81B8D64(0, 0);
sub_81B8D64(1, 0);
sub_81B8D64(2, 1);
sub_81B8D64(3, 1);
- gBattlePartyID[0] = 0;
- gBattlePartyID[1] = 0;
- gBattlePartyID[2] = 3;
- gBattlePartyID[3] = 3;
+ gBattlerPartyIndexes[0] = 0;
+ gBattlerPartyIndexes[1] = 0;
+ gBattlerPartyIndexes[2] = 3;
+ gBattlerPartyIndexes[3] = 3;
}
else if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
gBattleMainFunc = BeginBattleIntro;
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- gBattleBankFunc[0] = SetControllerToSafari;
+ gBattlerControllerFuncs[0] = SetControllerToSafari;
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
- gBattleBankFunc[0] = SetControllerToWally;
+ gBattlerControllerFuncs[0] = SetControllerToWally;
else
- gBattleBankFunc[0] = SetControllerToPlayer;
+ gBattlerControllerFuncs[0] = SetControllerToPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gNoOfAllBanks = 2;
+ gBattlersCount = 2;
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
@@ -211,32 +202,32 @@ static void SetControllersVariables(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattleBankFunc[0] = SetControllerToRecordedPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToRecordedOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToRecordedOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gNoOfAllBanks = 2;
+ gBattlersCount = 2;
}
else // see how the banks are switched
{
- gBattleBankFunc[1] = SetControllerToRecordedPlayer;
- gBanksByIdentity[1] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToRecordedPlayer;
+ gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[0] = SetControllerToRecordedOpponent;
- gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToRecordedOpponent;
+ gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
- gNoOfAllBanks = 2;
+ gBattlersCount = 2;
}
}
else
{
- gBattleBankFunc[0] = SetControllerToRecordedPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
}
}
}
@@ -244,19 +235,19 @@ static void SetControllersVariables(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattleBankFunc[0] = SetControllerToPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[2] = SetControllerToPlayer;
- gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToPlayer;
+ gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
- gBattleBankFunc[3] = SetControllerToOpponent;
- gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToOpponent;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
{
@@ -264,35 +255,35 @@ static void SetControllersVariables(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattleBankFunc[0] = SetControllerToRecordedPlayer;
- gBanksByIdentity[0] = 0;
+ gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[0] = 0;
- gBattleBankFunc[1] = SetControllerToOpponent;
- gBanksByIdentity[1] = 1;
+ gBattlerControllerFuncs[1] = SetControllerToOpponent;
+ gBattlerPositions[1] = 1;
- gBattleBankFunc[2] = SetControllerToRecordedPlayer;
- gBanksByIdentity[2] = 2;
+ gBattlerControllerFuncs[2] = SetControllerToRecordedPlayer;
+ gBattlerPositions[2] = 2;
- gBattleBankFunc[3] = SetControllerToOpponent;
- gBanksByIdentity[3] = 3;
+ gBattlerControllerFuncs[3] = SetControllerToOpponent;
+ gBattlerPositions[3] = 3;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
sub_81B8D64(0, 0);
sub_81B8D64(1, 0);
sub_81B8D64(2, 1);
sub_81B8D64(3, 1);
- gBattlePartyID[0] = 0;
- gBattlePartyID[1] = 0;
- gBattlePartyID[2] = 3;
- gBattlePartyID[3] = 3;
+ gBattlerPartyIndexes[0] = 0;
+ gBattlerPartyIndexes[1] = 0;
+ gBattlerPartyIndexes[2] = 3;
+ gBattlerPartyIndexes[3] = 3;
}
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
u8 var; // multiplayer Id in a recorded battle?
- for (var = gUnknown_0203C7B4, i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (var = gUnknown_0203C7B4, i = 0; i < MAX_BATTLERS_COUNT; i++)
{
switch (gLinkPlayers[i].lp_field_18)
{
@@ -308,53 +299,53 @@ static void SetControllersVariables(void)
if (i == var)
{
- gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetControllerToRecordedPlayer;
+ gBattlerControllerFuncs[gLinkPlayers[i].lp_field_18] = SetControllerToRecordedPlayer;
switch (gLinkPlayers[i].lp_field_18)
{
case 0:
case 3:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON1;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = B_POSITION_PLAYER_LEFT;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON2;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = B_POSITION_PLAYER_RIGHT;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
else if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[var].lp_field_18 & 1))
|| ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[var].lp_field_18 & 1)))
{
- gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetControllerToRecordedPlayer;
+ gBattlerControllerFuncs[gLinkPlayers[i].lp_field_18] = SetControllerToRecordedPlayer;
switch (gLinkPlayers[i].lp_field_18)
{
case 0:
case 3:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON1;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = B_POSITION_PLAYER_LEFT;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON2;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = B_POSITION_PLAYER_RIGHT;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
else
{
- gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetControllerToRecordedOpponent;
+ gBattlerControllerFuncs[gLinkPlayers[i].lp_field_18] = SetControllerToRecordedOpponent;
switch (gLinkPlayers[i].lp_field_18)
{
case 0:
case 3:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_OPPONENT_MON1;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = B_POSITION_OPPONENT_LEFT;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_OPPONENT_MON2;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = B_POSITION_OPPONENT_RIGHT;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
@@ -362,59 +353,59 @@ static void SetControllersVariables(void)
}
else if (gBattleTypeFlags & BATTLE_TYPE_WILD)
{
- gBattleBankFunc[0] = SetControllerToRecordedPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToRecordedPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[2] = SetControllerToRecordedPlayer;
- gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToRecordedPlayer;
+ gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
- gBattleBankFunc[1] = SetControllerToRecordedOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToRecordedOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[3] = SetControllerToRecordedOpponent;
- gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToRecordedOpponent;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
}
else
{
- gBattleBankFunc[1] = SetControllerToOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[3] = SetControllerToOpponent;
- gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToOpponent;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
}
}
else
{
- gBattleBankFunc[1] = SetControllerToRecordedPlayer;
- gBanksByIdentity[1] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToRecordedPlayer;
+ gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[3] = SetControllerToRecordedPlayer;
- gBanksByIdentity[3] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToRecordedPlayer;
+ gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
- gBattleBankFunc[0] = SetControllerToRecordedOpponent;
- gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToRecordedOpponent;
+ gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[2] = SetControllerToRecordedOpponent;
- gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToRecordedOpponent;
+ gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
}
else
{
- gBattleBankFunc[0] = SetControllerToOpponent;
- gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToOpponent;
+ gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[2] = SetControllerToOpponent;
- gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToOpponent;
+ gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
}
}
}
}
}
-static void SetControllersVariablesInLinkBattle(void)
+static void InitLinkBtlControllers(void)
{
s32 i;
u8 multiplayerId;
@@ -425,23 +416,23 @@ static void SetControllersVariablesInLinkBattle(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattleBankFunc[0] = SetControllerToPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToLinkOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gNoOfAllBanks = 2;
+ gBattlersCount = 2;
}
else
{
- gBattleBankFunc[1] = SetControllerToPlayer;
- gBanksByIdentity[1] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToPlayer;
+ gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[0] = SetControllerToLinkOpponent;
- gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
+ gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
- gNoOfAllBanks = 2;
+ gBattlersCount = 2;
}
}
else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
@@ -450,35 +441,35 @@ static void SetControllersVariablesInLinkBattle(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattleBankFunc[0] = SetControllerToPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToLinkOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[2] = SetControllerToPlayer;
- gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToPlayer;
+ gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
- gBattleBankFunc[3] = SetControllerToLinkOpponent;
- gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToLinkOpponent;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
else
{
- gBattleBankFunc[1] = SetControllerToPlayer;
- gBanksByIdentity[1] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToPlayer;
+ gBattlerPositions[1] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[0] = SetControllerToLinkOpponent;
- gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToLinkOpponent;
+ gBattlerPositions[0] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[3] = SetControllerToPlayer;
- gBanksByIdentity[3] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToPlayer;
+ gBattlerPositions[3] = B_POSITION_PLAYER_RIGHT;
- gBattleBankFunc[2] = SetControllerToLinkOpponent;
- gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToLinkOpponent;
+ gBattlerPositions[2] = B_POSITION_OPPONENT_RIGHT;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
@@ -487,45 +478,45 @@ static void SetControllersVariablesInLinkBattle(void)
{
gBattleMainFunc = BeginBattleIntro;
- gBattleBankFunc[0] = SetControllerToPlayer;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToPlayer;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[2] = SetControllerToLinkPartner;
- gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToLinkPartner;
+ gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
- gBattleBankFunc[3] = SetControllerToOpponent;
- gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToOpponent;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
else
{
- gBattleBankFunc[0] = SetControllerToLinkPartner;
- gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+ gBattlerControllerFuncs[0] = SetControllerToLinkPartner;
+ gBattlerPositions[0] = B_POSITION_PLAYER_LEFT;
- gBattleBankFunc[1] = SetControllerToLinkOpponent;
- gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ gBattlerControllerFuncs[1] = SetControllerToLinkOpponent;
+ gBattlerPositions[1] = B_POSITION_OPPONENT_LEFT;
- gBattleBankFunc[2] = SetControllerToPlayer;
- gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+ gBattlerControllerFuncs[2] = SetControllerToPlayer;
+ gBattlerPositions[2] = B_POSITION_PLAYER_RIGHT;
- gBattleBankFunc[3] = SetControllerToLinkOpponent;
- gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ gBattlerControllerFuncs[3] = SetControllerToLinkOpponent;
+ gBattlerPositions[3] = B_POSITION_OPPONENT_RIGHT;
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
sub_81B8D64(0, 0);
sub_81B8D64(1, 0);
sub_81B8D64(2, 1);
sub_81B8D64(3, 1);
- gBattlePartyID[0] = 0;
- gBattlePartyID[1] = 0;
- gBattlePartyID[2] = 3;
- gBattlePartyID[3] = 3;
+ gBattlerPartyIndexes[0] = 0;
+ gBattlerPartyIndexes[1] = 0;
+ gBattlerPartyIndexes[2] = 3;
+ gBattlerPartyIndexes[3] = 3;
}
else
{
@@ -534,7 +525,7 @@ static void SetControllersVariablesInLinkBattle(void)
if (gBattleTypeFlags & BATTLE_TYPE_WILD)
gBattleMainFunc = BeginBattleIntro;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
switch (gLinkPlayers[i].lp_field_18)
{
@@ -550,18 +541,18 @@ static void SetControllersVariablesInLinkBattle(void)
if (i == multiplayerId)
{
- gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetControllerToPlayer;
+ gBattlerControllerFuncs[gLinkPlayers[i].lp_field_18] = SetControllerToPlayer;
switch (gLinkPlayers[i].lp_field_18)
{
case 0:
case 3:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 0;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 2;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = 2;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
@@ -570,42 +561,42 @@ static void SetControllersVariablesInLinkBattle(void)
if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[multiplayerId].lp_field_18 & 1))
|| ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[multiplayerId].lp_field_18 & 1)))
{
- gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetControllerToLinkPartner;
+ gBattlerControllerFuncs[gLinkPlayers[i].lp_field_18] = SetControllerToLinkPartner;
switch (gLinkPlayers[i].lp_field_18)
{
case 0:
case 3:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 0;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 2;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = 2;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
else
{
- gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetControllerToLinkOpponent;
+ gBattlerControllerFuncs[gLinkPlayers[i].lp_field_18] = SetControllerToLinkOpponent;
switch (gLinkPlayers[i].lp_field_18)
{
case 0:
case 3:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 1;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = 1;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 0;
break;
case 1:
case 2:
- gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 3;
- gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPositions[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlerPartyIndexes[gLinkPlayers[i].lp_field_18] = 3;
break;
}
}
}
}
- gNoOfAllBanks = 4;
+ gBattlersCount = 4;
}
}
@@ -615,20 +606,20 @@ static void SetBattlePartyIds(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
for (j = 0; j < 6; j++)
{
if (i < 2)
{
- if (GET_BANK_SIDE2(i) == SIDE_PLAYER)
+ if (GET_BATTLER_SIDE2(i) == B_SIDE_PLAYER)
{
if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0
&& GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_NONE
&& GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
&& GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0)
{
- gBattlePartyID[i] = j;
+ gBattlerPartyIndexes[i] = j;
break;
}
}
@@ -639,22 +630,22 @@ static void SetBattlePartyIds(void)
&& GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
&& GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0)
{
- gBattlePartyID[i] = j;
+ gBattlerPartyIndexes[i] = j;
break;
}
}
}
else
{
- if (GET_BANK_SIDE2(i) == SIDE_PLAYER)
+ if (GET_BATTLER_SIDE2(i) == B_SIDE_PLAYER)
{
if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0
&& GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != SPECIES_NONE // Probably a typo by Game Freak. The rest use SPECIES2.
&& GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
&& GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0
- && gBattlePartyID[i - 2] != j)
+ && gBattlerPartyIndexes[i - 2] != j)
{
- gBattlePartyID[i] = j;
+ gBattlerPartyIndexes[i] = j;
break;
}
}
@@ -664,9 +655,9 @@ static void SetBattlePartyIds(void)
&& GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE
&& GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
&& GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0
- && gBattlePartyID[i - 2] != j)
+ && gBattlerPartyIndexes[i - 2] != j)
{
- gBattlePartyID[i] = j;
+ gBattlerPartyIndexes[i] = j;
break;
}
}
@@ -675,7 +666,7 @@ static void SetBattlePartyIds(void)
}
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
- gBattlePartyID[1] = 0, gBattlePartyID[3] = 3;
+ gBattlerPartyIndexes[1] = 0, gBattlerPartyIndexes[3] = 3;
}
}
@@ -694,14 +685,14 @@ static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size)
case 0:
for (i = 0; i < size; i++)
{
- gBattleBufferA[gActiveBank][i] = *data;
+ gBattleBufferA[gActiveBattler][i] = *data;
data++;
}
break;
case 1:
for (i = 0; i < size; i++)
{
- gBattleBufferB[gActiveBank][i] = *data;
+ gBattleBufferB[gActiveBattler][i] = *data;
data++;
}
break;
@@ -752,13 +743,13 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
gTasks[gUnknown_02022D08].data[14] = 0;
}
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_BUFFER_ID] = bufferId;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ACTIVE_BANK] = gActiveBank;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ATTACKER] = gBankAttacker;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_TARGET] = gBankTarget;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ACTIVE_BANK] = gActiveBattler;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ATTACKER] = gBattlerAttacker;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_TARGET] = gBattlerTarget;
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_LO] = alignedSize;
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ABSENT_BANK_FLAGS] = gAbsentBankFlags;
- gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BANK] = gEffectBank;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ABSENT_BANK_FLAGS] = gAbsentBattlerFlags;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BANK] = gEffectBattler;
for (i = 0; i < size; i++)
gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_DATA + i] = data[i];
@@ -913,7 +904,7 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0])
{
case 0:
- if (gBattleExecBuffer & gBitTable[bank])
+ if (gBattleControllerExecFlags & gBitTable[bank])
return;
memcpy(gBattleBufferA[bank], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 8], blockSize);
@@ -921,10 +912,10 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
{
- gBankAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 2];
- gBankTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 3];
- gAbsentBankFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 6];
- gEffectBank = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 7];
+ gBattlerAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 2];
+ gBattlerTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 3];
+ gAbsentBattlerFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 6];
+ gEffectBattler = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 7];
}
break;
case 1:
@@ -932,7 +923,7 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
break;
case 2:
var = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA];
- gBattleExecBuffer &= ~(gBitTable[bank] << (var * 4));
+ gBattleControllerExecFlags &= ~(gBitTable[bank] << (var * 4));
break;
}
@@ -940,7 +931,7 @@ static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
}
}
-void EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck)
+void BtlController_EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck)
{
sBattleBuffersTransferData[0] = CONTROLLER_GETMONDATA;
sBattleBuffersTransferData[1] = requestId;
@@ -949,7 +940,7 @@ void EmitGetMonData(u8 bufferId, u8 requestId, u8 monToCheck)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
+void BtlController_EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
{
sBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA;
sBattleBuffersTransferData[1] = monId;
@@ -958,7 +949,7 @@ void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data)
+void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *data)
{
s32 i;
@@ -970,7 +961,7 @@ void EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 bytes, void *da
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes);
}
-void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
+void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
{
s32 i;
@@ -982,7 +973,7 @@ void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, bytes + 3);
}
-void EmitLoadMonSprite(u8 bufferId)
+void BtlController_EmitLoadMonSprite(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE;
sBattleBuffersTransferData[1] = CONTROLLER_LOADMONSPRITE;
@@ -991,7 +982,7 @@ void EmitLoadMonSprite(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit)
+void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit)
{
sBattleBuffersTransferData[0] = CONTROLLER_SWITCHINANIM;
sBattleBuffersTransferData[1] = partyId;
@@ -1000,14 +991,14 @@ void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitReturnMonToBall(u8 bufferId, u8 arg1)
+void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1)
{
sBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL;
sBattleBuffersTransferData[1] = arg1;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
-void EmitDrawTrainerPic(u8 bufferId)
+void BtlController_EmitDrawTrainerPic(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC;
sBattleBuffersTransferData[1] = CONTROLLER_DRAWTRAINERPIC;
@@ -1016,7 +1007,7 @@ void EmitDrawTrainerPic(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitTrainerSlide(u8 bufferId)
+void BtlController_EmitTrainerSlide(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE;
sBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDE;
@@ -1025,7 +1016,7 @@ void EmitTrainerSlide(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitTrainerSlideBack(u8 bufferId)
+void BtlController_EmitTrainerSlideBack(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK;
sBattleBuffersTransferData[1] = CONTROLLER_TRAINERSLIDEBACK;
@@ -1034,7 +1025,7 @@ void EmitTrainerSlideBack(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitFaintAnimation(u8 bufferId)
+void BtlController_EmitFaintAnimation(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_FAINTANIMATION;
sBattleBuffersTransferData[1] = CONTROLLER_FAINTANIMATION;
@@ -1043,7 +1034,7 @@ void EmitFaintAnimation(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitPaletteFade(u8 bufferId)
+void BtlController_EmitPaletteFade(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_PALETTEFADE;
sBattleBuffersTransferData[1] = CONTROLLER_PALETTEFADE;
@@ -1052,7 +1043,7 @@ void EmitPaletteFade(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitSuccessBallThrowAnim(u8 bufferId)
+void BtlController_EmitSuccessBallThrowAnim(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_SUCCESSBALLTHROWANIM;
sBattleBuffersTransferData[1] = CONTROLLER_SUCCESSBALLTHROWANIM;
@@ -1061,14 +1052,14 @@ void EmitSuccessBallThrowAnim(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitBallThrowAnim(u8 bufferId, u8 caseId)
+void BtlController_EmitBallThrowAnim(u8 bufferId, u8 caseId)
{
sBattleBuffersTransferData[0] = CONTROLLER_BALLTHROWANIM;
sBattleBuffersTransferData[1] = caseId;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
-void EmitPause(u8 bufferId, u8 toWait, void *data)
+void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data)
{
s32 i;
@@ -1079,7 +1070,7 @@ void EmitPause(u8 bufferId, u8 toWait, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2);
}
-void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit)
+void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit)
{
sBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION;
sBattleBuffersTransferData[1] = move;
@@ -1109,7 +1100,7 @@ void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 16 + sizeof(struct DisableStruct));
}
-void EmitPrintString(u8 bufferId, u16 stringID)
+void BtlController_EmitPrintString(u8 bufferId, u16 stringID)
{
s32 i;
struct StringInfoBattle* stringInfo;
@@ -1124,13 +1115,13 @@ void EmitPrintString(u8 bufferId, u16 stringID)
stringInfo->originallyUsedMove = gChosenMove;
stringInfo->lastItem = gLastUsedItem;
stringInfo->lastAbility = gLastUsedAbility;
- stringInfo->scrActive = gBattleScripting.bank;
+ stringInfo->scrActive = gBattleScripting.battler;
stringInfo->unk1605E = gBattleStruct->field_52;
stringInfo->hpScale = gBattleStruct->hpScale;
- stringInfo->StringBank = gStringBank;
+ stringInfo->StringBank = gPotentialItemEffectBattler;
stringInfo->moveType = gBattleMoves[gCurrentMove].type;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
stringInfo->abilities[i] = gBattleMons[i].ability;
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
{
@@ -1141,7 +1132,7 @@ void EmitPrintString(u8 bufferId, u16 stringID)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
}
-void EmitPrintSelectionString(u8 bufferId, u16 stringID)
+void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
{
s32 i;
struct StringInfoBattle *stringInfo;
@@ -1156,10 +1147,10 @@ void EmitPrintSelectionString(u8 bufferId, u16 stringID)
stringInfo->originallyUsedMove = gChosenMove;
stringInfo->lastItem = gLastUsedItem;
stringInfo->lastAbility = gLastUsedAbility;
- stringInfo->scrActive = gBattleScripting.bank;
+ stringInfo->scrActive = gBattleScripting.battler;
stringInfo->unk1605E = gBattleStruct->field_52;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
stringInfo->abilities[i] = gBattleMons[i].ability;
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
{
@@ -1170,7 +1161,7 @@ void EmitPrintSelectionString(u8 bufferId, u16 stringID)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
}
-void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
+void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
{
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION;
sBattleBuffersTransferData[1] = arg1;
@@ -1179,7 +1170,7 @@ void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitUnknownYesNoBox(u8 bufferId)
+void BtlController_EmitUnknownYesNoBox(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_UNKNOWNYESNOBOX;
sBattleBuffersTransferData[1] = CONTROLLER_UNKNOWNYESNOBOX;
@@ -1188,7 +1179,7 @@ void EmitUnknownYesNoBox(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData)
+void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData)
{
s32 i;
@@ -1201,7 +1192,7 @@ void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4);
}
-void EmitChooseItem(u8 bufferId, u8 *arg1)
+void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
{
s32 i;
@@ -1211,7 +1202,7 @@ void EmitChooseItem(u8 bufferId, u8 *arg1)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4)
+void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4)
{
s32 i;
@@ -1224,7 +1215,7 @@ void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // but only 7 bytes were written
}
-void EmitCmd23(u8 bufferId)
+void BtlController_EmitCmd23(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_23;
sBattleBuffersTransferData[1] = CONTROLLER_23;
@@ -1234,7 +1225,7 @@ void EmitCmd23(u8 bufferId)
}
// why is the argument u16 if it's being cast to s16 anyway?
-void EmitHealthBarUpdate(u8 bufferId, u16 hpValue)
+void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue)
{
sBattleBuffersTransferData[0] = CONTROLLER_HEALTHBARUPDATE;
sBattleBuffersTransferData[1] = 0;
@@ -1244,7 +1235,7 @@ void EmitHealthBarUpdate(u8 bufferId, u16 hpValue)
}
// why is the argument u16 if it's being cast to s16 anyway?
-void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints)
+void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints)
{
sBattleBuffersTransferData[0] = CONTROLLER_EXPUPDATE;
sBattleBuffersTransferData[1] = partyId;
@@ -1253,7 +1244,7 @@ void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2)
+void BtlController_EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2)
{
sBattleBuffersTransferData[0] = CONTROLLER_STATUSICONUPDATE;
sBattleBuffersTransferData[1] = status1;
@@ -1267,7 +1258,7 @@ void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 9);
}
-void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status)
+void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status)
{
sBattleBuffersTransferData[0] = CONTROLLER_STATUSANIMATION;
sBattleBuffersTransferData[1] = status2;
@@ -1278,14 +1269,14 @@ void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 6);
}
-void EmitStatusXor(u8 bufferId, u8 b)
+void BtlController_EmitStatusXor(u8 bufferId, u8 b)
{
sBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR;
sBattleBuffersTransferData[1] = b;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
-void EmitDataTransfer(u8 bufferId, u16 size, void *data)
+void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data)
{
s32 i;
@@ -1298,7 +1289,7 @@ void EmitDataTransfer(u8 bufferId, u16 size, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4);
}
-void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
+void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
{
s32 i;
@@ -1314,7 +1305,7 @@ void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7);
}
-void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter)
+void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter)
{
s32 i;
@@ -1326,7 +1317,7 @@ void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
}
-void EmitCmd32(u8 bufferId, u16 size, void *data)
+void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data)
{
s32 i;
@@ -1338,7 +1329,7 @@ void EmitCmd32(u8 bufferId, u16 size, void *data)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3);
}
-void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
+void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
{
sBattleBuffersTransferData[0] = CONTROLLER_TWORETURNVALUES;
sBattleBuffersTransferData[1] = arg1;
@@ -1347,7 +1338,7 @@ void EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c)
+void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c)
{
s32 i;
@@ -1358,7 +1349,7 @@ void EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5);
}
-void EmitOneReturnValue(u8 bufferId, u16 arg1)
+void BtlController_EmitOneReturnValue(u8 bufferId, u16 arg1)
{
sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE;
sBattleBuffersTransferData[1] = arg1;
@@ -1367,7 +1358,7 @@ void EmitOneReturnValue(u8 bufferId, u16 arg1)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b)
+void BtlController_EmitOneReturnValue_Duplicate(u8 bufferId, u16 b)
{
sBattleBuffersTransferData[0] = CONTROLLER_ONERETURNVALUE_DUPLICATE;
sBattleBuffersTransferData[1] = b;
@@ -1376,7 +1367,7 @@ void EmitOneReturnValue_Duplicate(u8 bufferId, u16 b)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitCmd37(u8 bufferId)
+void BtlController_EmitCmd37(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_37;
sBattleBuffersTransferData[1] = CONTROLLER_37;
@@ -1385,14 +1376,14 @@ void EmitCmd37(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitCmd38(u8 bufferId, u8 b)
+void BtlController_EmitCmd38(u8 bufferId, u8 b)
{
sBattleBuffersTransferData[0] = CONTROLLER_38;
sBattleBuffersTransferData[1] = b;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
-void EmitCmd39(u8 bufferId)
+void BtlController_EmitCmd39(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_39;
sBattleBuffersTransferData[1] = CONTROLLER_39;
@@ -1401,7 +1392,7 @@ void EmitCmd39(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitCmd40(u8 bufferId)
+void BtlController_EmitCmd40(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_40;
sBattleBuffersTransferData[1] = CONTROLLER_40;
@@ -1410,7 +1401,7 @@ void EmitCmd40(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitHitAnimation(u8 bufferId)
+void BtlController_EmitHitAnimation(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_HITANIMATION;
sBattleBuffersTransferData[1] = CONTROLLER_HITANIMATION;
@@ -1419,7 +1410,7 @@ void EmitHitAnimation(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitCmd42(u8 bufferId)
+void BtlController_EmitCmd42(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_42;
sBattleBuffersTransferData[1] = CONTROLLER_42;
@@ -1428,7 +1419,7 @@ void EmitCmd42(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitPlaySE(u8 bufferId, u16 songId)
+void BtlController_EmitPlaySE(u8 bufferId, u16 songId)
{
sBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND;
sBattleBuffersTransferData[1] = songId;
@@ -1437,7 +1428,7 @@ void EmitPlaySE(u8 bufferId, u16 songId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM)
+void BtlController_EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM)
{
sBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM;
sBattleBuffersTransferData[1] = songId;
@@ -1446,7 +1437,7 @@ void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitFaintingCry(u8 bufferId)
+void BtlController_EmitFaintingCry(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_FAINTINGCRY;
sBattleBuffersTransferData[1] = CONTROLLER_FAINTINGCRY;
@@ -1455,14 +1446,14 @@ void EmitFaintingCry(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitIntroSlide(u8 bufferId, u8 terrainId)
+void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId)
{
sBattleBuffersTransferData[0] = CONTROLLER_INTROSLIDE;
sBattleBuffersTransferData[1] = terrainId;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
-void EmitIntroTrainerBallThrow(u8 bufferId)
+void BtlController_EmitIntroTrainerBallThrow(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_INTROTRAINERBALLTHROW;
sBattleBuffersTransferData[1] = CONTROLLER_INTROTRAINERBALLTHROW;
@@ -1471,7 +1462,7 @@ void EmitIntroTrainerBallThrow(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2)
+void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2)
{
s32 i;
@@ -1484,7 +1475,7 @@ void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * 6 + 4);
}
-void EmitCmd49(u8 bufferId)
+void BtlController_EmitCmd49(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_49;
sBattleBuffersTransferData[1] = CONTROLLER_49;
@@ -1493,7 +1484,7 @@ void EmitCmd49(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitCmd50(u8 bufferId)
+void BtlController_EmitCmd50(u8 bufferId)
{
sBattleBuffersTransferData[0] = CONTROLLER_50;
sBattleBuffersTransferData[1] = CONTROLLER_50;
@@ -1502,7 +1493,7 @@ void EmitCmd50(u8 bufferId)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible)
+void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible)
{
sBattleBuffersTransferData[0] = CONTROLLER_SPRITEINVISIBILITY;
sBattleBuffersTransferData[1] = isInvisible;
@@ -1511,7 +1502,7 @@ void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument)
+void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument)
{
sBattleBuffersTransferData[0] = CONTROLLER_BATTLEANIMATION;
sBattleBuffersTransferData[1] = animationId;
@@ -1520,7 +1511,7 @@ void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
}
-void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2)
+void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2)
{
bool8 arg2_ = arg2;
sBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG;
@@ -1534,14 +1525,14 @@ void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2)
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sBattleBuffersTransferData[2] + 4);
}
-void EmitResetActionMoveSelection(u8 bufferId, u8 caseId)
+void BtlController_EmitResetActionMoveSelection(u8 bufferId, u8 caseId)
{
sBattleBuffersTransferData[0] = CONTROLLER_RESETACTIONMOVESELECTION;
sBattleBuffersTransferData[1] = caseId;
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
}
-void EmitCmd55(u8 bufferId, u8 arg1)
+void BtlController_EmitCmd55(u8 bufferId, u8 arg1)
{
sBattleBuffersTransferData[0] = CONTROLLER_55;
sBattleBuffersTransferData[1] = arg1;
diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c
index d549856f2..076a4d342 100644
--- a/src/battle_dome_cards.c
+++ b/src/battle_dome_cards.c
@@ -19,7 +19,7 @@ extern const union AffineAnimCmd *const gUnknown_082FF694[];
extern const union AnimCmd *const gUnknown_082FF70C[];
extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES];
extern const union AnimCmd *const *const gUnknown_0830536C[];
-extern const u8 gUnknown_0831F578[];
+extern const u8 gFacilityClassToPicIndex[];
// Static type declarations
@@ -421,9 +421,9 @@ u8 sub_818D97C(u8 a0, u8 a1)
switch (a0)
{
default:
- return gUnknown_0831F578[0x3F];
+ return gFacilityClassToPicIndex[0x3F];
case 0:
- return gUnknown_0831F578[0x3C];
+ return gFacilityClassToPicIndex[0x3C];
}
}
return a0;
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 775578ca2..803b3eeab 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -22,18 +22,8 @@
#include "blend_palette.h"
#include "contest.h"
#include "constants/songs.h"
+#include "constants/rgb.h"
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gActiveBank;
-extern u8 gNoOfAllBanks;
-extern u16 gUnknown_020243FC;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
extern struct MusicPlayerInfo gMPlayInfo_BGM;
@@ -68,7 +58,7 @@ extern const u8 gBlankGfxCompressed[];
extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
-extern u8 sub_80688F8(u8, u8 bank);
+extern u8 sub_80688F8(u8, u8 battlerId);
extern u8 pokemon_order_func(u8); // party menu
extern void sub_81B8C68(void);
@@ -109,7 +99,7 @@ static const struct CompressedSpriteSheet gUnknown_0832C100 =
gUnknown_08C1F8E8, 0x1000, TAG_HEALTHBOX_SAFARI_TILE
};
-static const struct CompressedSpriteSheet gUnknown_0832C108[BATTLE_BANKS_COUNT] =
+static const struct CompressedSpriteSheet gUnknown_0832C108[MAX_BATTLERS_COUNT] =
{
{gBlankGfxCompressed, 0x0100, 0xd704},
{gBlankGfxCompressed, 0x0120, 0xd705},
@@ -127,10 +117,10 @@ static const struct SpritePalette gUnknown_0832C128[2] =
void AllocateBattleSpritesData(void)
{
gBattleSpritesDataPtr = AllocZeroed(sizeof(struct BattleSpriteData));
- gBattleSpritesDataPtr->bankData = AllocZeroed(sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT);
- gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT);
+ gBattleSpritesDataPtr->battlerData = AllocZeroed(sizeof(struct BattleSpriteInfo) * MAX_BATTLERS_COUNT);
+ gBattleSpritesDataPtr->healthBoxesData = AllocZeroed(sizeof(struct BattleHealthboxInfo) * MAX_BATTLERS_COUNT);
gBattleSpritesDataPtr->animationData = AllocZeroed(sizeof(struct BattleAnimationInfo));
- gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * BATTLE_BANKS_COUNT);
+ gBattleSpritesDataPtr->battleBars = AllocZeroed(sizeof(struct BattleBarInfo) * MAX_BATTLERS_COUNT);
}
void FreeBattleSpritesData(void)
@@ -141,7 +131,7 @@ void FreeBattleSpritesData(void)
FREE_AND_SET_NULL(gBattleSpritesDataPtr->battleBars);
FREE_AND_SET_NULL(gBattleSpritesDataPtr->animationData);
FREE_AND_SET_NULL(gBattleSpritesDataPtr->healthBoxesData);
- FREE_AND_SET_NULL(gBattleSpritesDataPtr->bankData);
+ FREE_AND_SET_NULL(gBattleSpritesDataPtr->battlerData);
FREE_AND_SET_NULL(gBattleSpritesDataPtr);
}
@@ -149,17 +139,17 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
{
s32 i, var1, var2;
s32 chosenMoveId = -1;
- struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
- u8 unusableMovesBits = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
+ u8 unusableMovesBits = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
s32 percent = Random() % 100;
- i = (gBattleStruct->field_92 & gBitTable[gActiveBank]) ? 2 : 0;
+ i = (gBattleStruct->field_92 & gBitTable[gActiveBattler]) ? 2 : 0;
var2 = i;
var1 = i + 2;
for (; i < var1; i++)
{
- if (gUnknown_0831C494[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)][i] > percent)
+ if (gUnknown_0831C494[GetNatureFromPersonality(gBattleMons[gActiveBattler].personality)][i] > percent)
break;
}
@@ -234,13 +224,13 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
if (Random() % 100 > 49)
{
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
return 0;
}
}
else
{
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
return 0;
}
}
@@ -258,11 +248,11 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
}
if (var1 & MOVE_TARGET_x10)
- chosenMoveId |= (gActiveBank << 8);
+ chosenMoveId |= (gActiveBattler << 8);
else if (var1 == MOVE_TARGET_SELECTED)
chosenMoveId |= (BattlePalaceGetTargetRetValue());
else
- chosenMoveId |= (GetBankByIdentity((GetBankIdentity(gActiveBank) & BIT_SIDE) ^ BIT_SIDE) << 8);
+ chosenMoveId |= (GetBattlerAtPosition((GetBattlerPosition(gActiveBattler) & BIT_SIDE) ^ BIT_SIDE) << 8);
return chosenMoveId;
}
@@ -297,21 +287,21 @@ static u16 BattlePalaceGetTargetRetValue(void)
{
u8 opposing1, opposing2;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- opposing1 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- opposing2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ opposing1 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ opposing2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
else
{
- opposing1 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- opposing2 = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ opposing1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ opposing2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
if (gBattleMons[opposing1].hp == gBattleMons[opposing2].hp)
- return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
+ return (((gActiveBattler & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
- switch (gUnknown_0831C604[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)])
+ switch (gUnknown_0831C604[GetNatureFromPersonality(gBattleMons[gActiveBattler].personality)])
{
case 0:
if (gBattleMons[opposing1].hp > gBattleMons[opposing2].hp)
@@ -324,11 +314,11 @@ static u16 BattlePalaceGetTargetRetValue(void)
else
return opposing2 << 8;
case 2:
- return (((gActiveBank & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
+ return (((gActiveBattler & BIT_SIDE) ^ BIT_SIDE) + (Random() & 2)) << 8;
}
}
- return (gActiveBank ^ BIT_SIDE) << 8;
+ return (gActiveBattler ^ BIT_SIDE) << 8;
}
void sub_805D714(struct Sprite *sprite)
@@ -366,7 +356,7 @@ void sub_805D770(struct Sprite *sprite, bool8 arg1)
void sub_805D7AC(struct Sprite *sprite)
{
- if (!(gUnknown_020243FC & 1))
+ if (!(gIntroSlideFlags & 1))
{
sprite->pos2.x += sprite->data[0];
if (sprite->pos2.x == 0)
@@ -388,40 +378,40 @@ static void sub_805D7EC(struct Sprite *sprite)
void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 1;
if (!isStatus2)
{
- if (status == STATUS_FREEZE)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_FRZ);
- else if (status == STATUS_POISON || status & STATUS_TOXIC_POISON)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_PSN);
- else if (status == STATUS_BURN)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_BRN);
- else if (status & STATUS_SLEEP)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_SLP);
- else if (status == STATUS_PARALYSIS)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_PRZ);
+ if (status == STATUS1_FREEZE)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_FRZ);
+ else if (status == STATUS1_POISON || status & STATUS1_TOXIC_POISON)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_PSN);
+ else if (status == STATUS1_BURN)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_BRN);
+ else if (status & STATUS1_SLEEP)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_SLP);
+ else if (status == STATUS1_PARALYSIS)
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_PRZ);
else // no animation
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 0;
}
else
{
if (status & STATUS2_INFATUATION)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_INFATUATION);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_INFATUATION);
else if (status & STATUS2_CONFUSION)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_CONFUSION);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_CONFUSION);
else if (status & STATUS2_CURSED)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_CURSED);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_CURSED);
else if (status & STATUS2_NIGHTMARE)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_NIGHTMARE);
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_NIGHTMARE);
else if (status & STATUS2_WRAPPED)
- LaunchStatusAnimation(gActiveBank, B_ANIM_STATUS_WRAPPED); // this animation doesn't actually exist
+ LaunchStatusAnimation(gActiveBattler, B_ANIM_STATUS_WRAPPED); // this animation doesn't actually exist
else // no animation
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].statusAnimActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive = 0;
}
}
-#define tBank data[0]
+#define tBattlerId data[0]
bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument)
{
@@ -432,27 +422,27 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank,
gBattleMonForms[activeBank] = (argument & ~(0x80));
return TRUE;
}
- if (gBattleSpritesDataPtr->bankData[activeBank].behindSubstitute
+ if (gBattleSpritesDataPtr->battlerData[activeBank].behindSubstitute
&& !ShouldAnimBeDoneRegardlessOfSubsitute(tableId))
{
return TRUE;
}
- if (gBattleSpritesDataPtr->bankData[activeBank].behindSubstitute
+ if (gBattleSpritesDataPtr->battlerData[activeBank].behindSubstitute
&& tableId == B_ANIM_SUBSTITUTE_FADE
- && gSprites[gBankSpriteIds[activeBank]].invisible)
+ && gSprites[gBattlerSpriteIds[activeBank]].invisible)
{
- LoadBattleMonGfxAndAnimate(activeBank, TRUE, gBankSpriteIds[activeBank]);
+ LoadBattleMonGfxAndAnimate(activeBank, TRUE, gBattlerSpriteIds[activeBank]);
ClearBehindSubstituteBit(activeBank);
return TRUE;
}
- gAnimBankAttacker = atkBank;
- gAnimBankTarget = defBank;
+ gBattleAnimAttacker = atkBank;
+ gBattleAnimTarget = defBank;
gBattleSpritesDataPtr->animationData->animArg = argument;
LaunchBattleAnimation(gBattleAnims_VariousTable, tableId, FALSE);
taskId = CreateTask(Task_ClearBitWhenBattleTableAnimDone, 10);
- gTasks[taskId].tBank = activeBank;
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].animFromTableActive = 1;
+ gTasks[taskId].tBattlerId = activeBank;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 1;
return FALSE;
}
@@ -462,12 +452,12 @@ static void Task_ClearBitWhenBattleTableAnimDone(u8 taskId)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].animFromTableActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].animFromTableActive = 0;
DestroyTask(taskId);
}
}
-#undef tBank
+#undef tBattlerId
static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
{
@@ -485,18 +475,18 @@ static bool8 ShouldAnimBeDoneRegardlessOfSubsitute(u8 animId)
}
}
-#define tBank data[0]
+#define tBattlerId data[0]
void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId)
{
u8 taskId;
- gAnimBankAttacker = atkBank;
- gAnimBankTarget = defBank;
+ gBattleAnimAttacker = atkBank;
+ gBattleAnimTarget = defBank;
LaunchBattleAnimation(gBattleAnims_Special, tableId, FALSE);
taskId = CreateTask(Task_ClearBitWhenSpecialAnimDone, 10);
- gTasks[taskId].tBank = activeBank;
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].specialAnimActive = 1;
+ gTasks[taskId].tBattlerId = activeBank;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 1;
}
static void Task_ClearBitWhenSpecialAnimDone(u8 taskId)
@@ -504,12 +494,12 @@ static void Task_ClearBitWhenSpecialAnimDone(u8 taskId)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBank].specialAnimActive = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gTasks[taskId].tBattlerId].specialAnimActive = 0;
DestroyTask(taskId);
}
}
-#undef tBank
+#undef tBattlerId
// great function to include newly added moves that don't have animation yet
bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn)
@@ -517,14 +507,14 @@ bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn)
return FALSE;
}
-bool8 mplay_80342A4(u8 bank)
+bool8 mplay_80342A4(u8 battlerId)
{
u8 zero = 0;
if (IsSEPlaying())
{
- gBattleSpritesDataPtr->healthBoxesData[bank].field_8++;
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_8 < 30)
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8++;
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_8 < 30)
return TRUE;
m4aMPlayStop(&gMPlayInfo_SE1);
@@ -532,125 +522,125 @@ bool8 mplay_80342A4(u8 bank)
}
if (zero == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[bank].field_8 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].field_8 = 0;
return FALSE;
}
return TRUE;
}
-void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank)
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
{
u32 monsPersonality, currentPersonality, otId;
u16 species;
- u8 identity;
+ u8 position;
u16 paletteOffset;
const void *lzPaletteData;
monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
{
species = GetMonData(mon, MON_DATA_SPECIES);
currentPersonality = monsPersonality;
}
else
{
- species = gBattleSpritesDataPtr->bankData[bank].transformSpecies;
- currentPersonality = gTransformedPersonalities[bank];
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
+ currentPersonality = gTransformedPersonalities[battlerId];
}
otId = GetMonData(mon, MON_DATA_OT_ID);
- identity = GetBankIdentity(bank);
+ position = GetBattlerPosition(battlerId);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
species, currentPersonality);
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
- LoadPalette(gDecompressionBuffer, 0x80 + bank * 16, 0x20);
+ LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[bank]], paletteOffset, 0x20);
+ LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
// transform's pink color
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
-void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank)
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
{
u32 monsPersonality, currentPersonality, otId;
u16 species;
- u8 identity;
+ u8 position;
u16 paletteOffset;
const void *lzPaletteData;
monsPersonality = GetMonData(mon, MON_DATA_PERSONALITY);
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
{
species = GetMonData(mon, MON_DATA_SPECIES);
currentPersonality = monsPersonality;
}
else
{
- species = gBattleSpritesDataPtr->bankData[bank].transformSpecies;
- currentPersonality = gTransformedPersonalities[bank];
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
+ currentPersonality = gTransformedPersonalities[battlerId];
}
otId = GetMonData(mon, MON_DATA_OT_ID);
- identity = GetBankIdentity(bank);
+ position = GetBattlerPosition(battlerId);
- if (sub_80688F8(1, bank) == 1 || gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE)
+ if (sub_80688F8(1, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
species, currentPersonality);
}
else
{
HandleLoadSpecialPokePic(&gMonBackPicTable[species],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
species, currentPersonality);
}
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
- LoadPalette(gDecompressionBuffer, 0x80 + bank * 16, 0x20);
+ LoadPalette(gDecompressionBuffer, 0x80 + battlerId * 16, 0x20);
if (species == SPECIES_CASTFORM)
{
- paletteOffset = 0x100 + bank * 16;
+ paletteOffset = 0x100 + battlerId * 16;
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
- LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[bank]], paletteOffset, 0x20);
+ LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
}
// transform's pink color
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
@@ -663,23 +653,23 @@ void nullsub_24(u16 species)
{
}
-void DecompressTrainerFrontPic(u16 frontPicId, u8 bank)
+void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId)
{
- u8 identity = GetBankIdentity(bank);
+ u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerFrontPicTable[frontPicId],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
SPECIES_NONE);
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[frontPicId]);
}
-void DecompressTrainerBackPic(u16 backPicId, u8 bank)
+void DecompressTrainerBackPic(u16 backPicId, u8 battlerId)
{
- u8 identity = GetBankIdentity(bank);
+ u8 position = GetBattlerPosition(battlerId);
DecompressPicFromTable_2(&gTrainerBackPicTable[backPicId],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
SPECIES_NONE);
LoadCompressedPalette(gTrainerBackPicPaletteTable[backPicId].data,
- 0x100 + 16 * bank, 0x20);
+ 0x100 + 16 * battlerId, 0x20);
}
void nullsub_25(u8 arg0)
@@ -713,7 +703,7 @@ void sub_805DFFC(void)
numberOfBanks = 4;
}
for (i = 0; i < numberOfBanks; i++)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[i]]);
+ LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[i]]);
}
bool8 BattleLoadAllHealthBoxesGfx(u8 state)
@@ -739,9 +729,9 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state)
else if (state == 3)
LoadCompressedObjectPic(&gUnknown_0832C0D8);
else if (state == 4)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[0]]);
+ LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[0]]);
else if (state == 5)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[1]]);
+ LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[1]]);
else
retVal = TRUE;
}
@@ -756,13 +746,13 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state)
else if (state == 5)
LoadCompressedObjectPic(&gUnknown_0832C0F0[1]);
else if (state == 6)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[0]]);
+ LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[0]]);
else if (state == 7)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[1]]);
+ LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[1]]);
else if (state == 8)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[2]]);
+ LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[2]]);
else if (state == 9)
- LoadCompressedObjectPic(&gUnknown_0832C108[gBanksByIdentity[3]]);
+ LoadCompressedObjectPic(&gUnknown_0832C108[gBattlerPositions[3]]);
else
retVal = TRUE;
}
@@ -776,7 +766,7 @@ void LoadBattleBarGfx(u8 arg0)
LZDecompressWram(gUnknown_08C093F0, gMonSpritesGfxPtr->barFontGfx);
}
-bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
+bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId)
{
bool8 retVal = FALSE;
@@ -787,13 +777,13 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
(*state1)++;
break;
case 1:
- if (!BattleLoadAllHealthBoxesGfx(*bank))
+ if (!BattleLoadAllHealthBoxesGfx(*battlerId))
{
- (*bank)++;
+ (*battlerId)++;
}
else
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
@@ -801,47 +791,47 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
(*state1)++;
break;
case 3:
- if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && *bank == 0)
- gHealthBoxesIds[*bank] = CreateSafariPlayerHealthboxSprites();
+ if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) && *battlerId == 0)
+ gHealthboxSpriteIds[*battlerId] = CreateSafariPlayerHealthboxSprites();
else
- gHealthBoxesIds[*bank] = CreateBankHealthboxSprites(*bank);
+ gHealthboxSpriteIds[*battlerId] = CreateBattlerHealthboxSprites(*battlerId);
- (*bank)++;
- if (*bank == gNoOfAllBanks)
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
case 4:
- SetBankHealthboxSpritePos(*bank);
- if (gBanksByIdentity[*bank] <= 1)
- DummyBattleInterfaceFunc(gHealthBoxesIds[*bank], FALSE);
+ InitBattlerHealthboxCoords(*battlerId);
+ if (gBattlerPositions[*battlerId] <= 1)
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], FALSE);
else
- DummyBattleInterfaceFunc(gHealthBoxesIds[*bank], TRUE);
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[*battlerId], TRUE);
- (*bank)++;
- if (*bank == gNoOfAllBanks)
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
case 5:
- if (GetBankSide(*bank) == SIDE_PLAYER)
+ if (GetBattlerSide(*battlerId) == B_SIDE_PLAYER)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
- UpdateHealthboxAttribute(gHealthBoxesIds[*bank], &gPlayerParty[gBattlePartyID[*bank]], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[*battlerId], &gPlayerParty[gBattlerPartyIndexes[*battlerId]], HEALTHBOX_ALL);
}
else
{
- UpdateHealthboxAttribute(gHealthBoxesIds[*bank], &gEnemyParty[gBattlePartyID[*bank]], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[*battlerId], &gEnemyParty[gBattlerPartyIndexes[*battlerId]], HEALTHBOX_ALL);
}
- SetHealthboxSpriteInvisible(gHealthBoxesIds[*bank]);
- (*bank)++;
- if (*bank == gNoOfAllBanks)
+ SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*battlerId]);
+ (*battlerId)++;
+ if (*battlerId == gBattlersCount)
{
- *bank = 0;
+ *battlerId = 0;
(*state1)++;
}
break;
@@ -857,27 +847,27 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *bank)
void ClearSpritesHealthboxAnimData(void)
{
- memset(gBattleSpritesDataPtr->healthBoxesData, 0, sizeof(struct BattleHealthboxInfo) * BATTLE_BANKS_COUNT);
+ memset(gBattleSpritesDataPtr->healthBoxesData, 0, sizeof(struct BattleHealthboxInfo) * MAX_BATTLERS_COUNT);
memset(gBattleSpritesDataPtr->animationData, 0, sizeof(struct BattleAnimationInfo));
}
static void ClearSpritesBankHealthboxAnimData(void)
{
ClearSpritesHealthboxAnimData();
- memset(gBattleSpritesDataPtr->bankData, 0, sizeof(struct BattleSpriteInfo) * BATTLE_BANKS_COUNT);
+ memset(gBattleSpritesDataPtr->battlerData, 0, sizeof(struct BattleSpriteInfo) * MAX_BATTLERS_COUNT);
}
void CopyAllBattleSpritesInvisibilities(void)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
- gBattleSpritesDataPtr->bankData[i].invisible = gSprites[gBankSpriteIds[i]].invisible;
+ for (i = 0; i < gBattlersCount; i++)
+ gBattleSpritesDataPtr->battlerData[i].invisible = gSprites[gBattlerSpriteIds[i]].invisible;
}
-void CopyBattleSpriteInvisibility(u8 bank)
+void CopyBattleSpriteInvisibility(u8 battlerId)
{
- gBattleSpritesDataPtr->bankData[bank].invisible = gSprites[gBankSpriteIds[bank]].invisible;
+ gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible;
}
void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
@@ -885,21 +875,21 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
u16 paletteOffset;
u32 personalityValue;
u32 otId;
- u8 identity;
+ u8 position;
const u8 *lzPaletteData;
if (notTransform)
{
- StartSpriteAnim(&gSprites[gBankSpriteIds[bankAtk]], gBattleSpritesDataPtr->animationData->animArg);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bankAtk]], gBattleSpritesDataPtr->animationData->animArg);
paletteOffset = 0x100 + bankAtk * 16;
LoadPalette(gBattleStruct->castformPalette[gBattleSpritesDataPtr->animationData->animArg], paletteOffset, 32);
gBattleMonForms[bankAtk] = gBattleSpritesDataPtr->animationData->animArg;
- if (gBattleSpritesDataPtr->bankData[bankAtk].transformSpecies != SPECIES_NONE)
+ if (gBattleSpritesDataPtr->battlerData[bankAtk].transformSpecies != SPECIES_NONE)
{
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
- gSprites[gBankSpriteIds[bankAtk]].pos1.y = GetBankSpriteDefault_Y(bankAtk);
+ gSprites[gBattlerSpriteIds[bankAtk]].pos1.y = GetBattlerSpriteDefault_Y(bankAtk);
}
else
{
@@ -909,7 +899,7 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
if (IsContest())
{
- identity = 0;
+ position = 0;
targetSpecies = gContestResources->field_18->field_2;
personalityValue = gContestResources->field_18->field_8;
otId = gContestResources->field_18->field_C;
@@ -921,37 +911,37 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
}
else
{
- identity = GetBankIdentity(bankAtk);
+ position = GetBattlerPosition(bankAtk);
- if (GetBankSide(bankDef) == SIDE_OPPONENT)
- targetSpecies = GetMonData(&gEnemyParty[gBattlePartyID[bankDef]], MON_DATA_SPECIES);
+ if (GetBattlerSide(bankDef) == B_SIDE_OPPONENT)
+ targetSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bankDef]], MON_DATA_SPECIES);
else
- targetSpecies = GetMonData(&gPlayerParty[gBattlePartyID[bankDef]], MON_DATA_SPECIES);
+ targetSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bankDef]], MON_DATA_SPECIES);
- if (GetBankSide(bankAtk) == SIDE_PLAYER)
+ if (GetBattlerSide(bankAtk) == B_SIDE_PLAYER)
{
- personalityValue = GetMonData(&gPlayerParty[gBattlePartyID[bankAtk]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gPlayerParty[gBattlePartyID[bankAtk]], MON_DATA_OT_ID);
+ personalityValue = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bankAtk]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bankAtk]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
targetSpecies,
gTransformedPersonalities[bankAtk]);
}
else
{
- personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bankAtk]], MON_DATA_PERSONALITY);
- otId = GetMonData(&gEnemyParty[gBattlePartyID[bankAtk]], MON_DATA_OT_ID);
+ personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bankAtk]], MON_DATA_PERSONALITY);
+ otId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bankAtk]], MON_DATA_OT_ID);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[targetSpecies],
- gMonSpritesGfxPtr->sprites[identity],
+ gMonSpritesGfxPtr->sprites[position],
targetSpecies,
gTransformedPersonalities[bankAtk]);
}
}
- src = gMonSpritesGfxPtr->sprites[identity];
- dst = (void *)(VRAM + 0x10000 + gSprites[gBankSpriteIds[bankAtk]].oam.tileNum * 32);
+ src = gMonSpritesGfxPtr->sprites[position];
+ dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[bankAtk]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
paletteOffset = 0x100 + bankAtk * 16;
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
@@ -960,28 +950,28 @@ void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform)
if (targetSpecies == SPECIES_CASTFORM)
{
- gSprites[gBankSpriteIds[bankAtk]].anims = gMonAnimationsSpriteAnimsPtrTable[targetSpecies];
+ gSprites[gBattlerSpriteIds[bankAtk]].anims = gMonAnimationsSpriteAnimsPtrTable[targetSpecies];
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[bankDef] * 16, paletteOffset, 32);
}
- BlendPalette(paletteOffset, 16, 6, 0x7FFF);
+ BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
{
- gBattleSpritesDataPtr->bankData[bankAtk].transformSpecies = targetSpecies;
+ gBattleSpritesDataPtr->battlerData[bankAtk].transformSpecies = targetSpecies;
gBattleMonForms[bankAtk] = gBattleMonForms[bankDef];
}
- gSprites[gBankSpriteIds[bankAtk]].pos1.y = GetBankSpriteDefault_Y(bankAtk);
- StartSpriteAnim(&gSprites[gBankSpriteIds[bankAtk]], gBattleMonForms[bankAtk]);
+ gSprites[gBattlerSpriteIds[bankAtk]].pos1.y = GetBattlerSpriteDefault_Y(bankAtk);
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[bankAtk]], gBattleMonForms[bankAtk]);
}
}
-void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
+void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
{
- u8 identity;
+ u8 position;
s32 i;
u32 var;
const void *substitutePal;
@@ -989,23 +979,23 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
if (!loadMonSprite)
{
if (IsContest())
- identity = 0;
+ position = 0;
else
- identity = GetBankIdentity(bank);
+ position = GetBattlerPosition(battlerId);
if (IsContest())
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[identity]);
- else if (GetBankSide(bank) != SIDE_PLAYER)
- LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[identity]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
+ else if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]);
else
- LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[identity]);
+ LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
i = 1;
- var = bank * 16;
+ var = battlerId * 16;
substitutePal = gSubstituteDollPal;
for (; i < 4; i++)
{
- register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[identity];
+ register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[position];
void *dmaDst = (i * 0x800) + dmaSrc;
u32 dmaSize = 0x800;
DmaCopy32(3, dmaSrc, dmaDst, dmaSize);
@@ -1018,59 +1008,59 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite)
{
if (!IsContest())
{
- if (GetBankSide(bank) != SIDE_PLAYER)
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank);
+ if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId);
else
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank);
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
}
}
}
-void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId)
+void LoadBattleMonGfxAndAnimate(u8 battlerId, bool8 loadMonSprite, u8 spriteId)
{
- BattleLoadSubstituteOrMonSpriteGfx(bank, loadMonSprite);
- StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[bank]);
+ BattleLoadSubstituteOrMonSpriteGfx(battlerId, loadMonSprite);
+ StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[battlerId]);
if (!loadMonSprite)
- gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(bank);
+ gSprites[spriteId].pos1.y = GetSubstituteSpriteDefault_Y(battlerId);
else
- gSprites[spriteId].pos1.y = GetBankSpriteDefault_Y(bank);
+ gSprites[spriteId].pos1.y = GetBattlerSpriteDefault_Y(battlerId);
}
-void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move)
+void TrySetBehindSubstituteSpriteBit(u8 battlerId, u16 move)
{
if (move == MOVE_SUBSTITUTE)
- gBattleSpritesDataPtr->bankData[bank].behindSubstitute = 1;
+ gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute = 1;
}
-void ClearBehindSubstituteBit(u8 bank)
+void ClearBehindSubstituteBit(u8 battlerId)
{
- gBattleSpritesDataPtr->bankData[bank].behindSubstitute = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute = 0;
}
-void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank)
+void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId)
{
u16 hp = GetMonData(mon, MON_DATA_HP);
u16 maxHP = GetMonData(mon, MON_DATA_MAX_HP);
if (GetHPBarLevel(hp, maxHP) == HP_BAR_RED)
{
- if (!gBattleSpritesDataPtr->bankData[bank].lowHpSong)
+ if (!gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong)
{
- if (!gBattleSpritesDataPtr->bankData[bank ^ BIT_MON].lowHpSong)
+ if (!gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong)
PlaySE(SE_HINSI);
- gBattleSpritesDataPtr->bankData[bank].lowHpSong = 1;
+ gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 1;
}
}
else
{
- gBattleSpritesDataPtr->bankData[bank].lowHpSong = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 0;
if (!IsDoubleBattle())
{
m4aSongNumStop(SE_HINSI);
return;
}
- if (IsDoubleBattle() && !gBattleSpritesDataPtr->bankData[bank ^ BIT_MON].lowHpSong)
+ if (IsDoubleBattle() && !gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong)
{
m4aSongNumStop(SE_HINSI);
return;
@@ -1080,11 +1070,11 @@ void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank)
void BattleStopLowHpSound(void)
{
- u8 playerBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ u8 playerBank = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- gBattleSpritesDataPtr->bankData[playerBank].lowHpSong = 0;
+ gBattleSpritesDataPtr->battlerData[playerBank].lowHpSong = 0;
if (IsDoubleBattle())
- gBattleSpritesDataPtr->bankData[playerBank ^ BIT_MON].lowHpSong = 0;
+ gBattleSpritesDataPtr->battlerData[playerBank ^ BIT_FLANK].lowHpSong = 0;
m4aSongNumStop(SE_HINSI);
}
@@ -1101,10 +1091,10 @@ void sub_805EAE8(void)
{
if (gMain.inBattle)
{
- u8 playerBank1 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- u8 playerBank2 = GetBankByIdentity(IDENTITY_PLAYER_MON2);
- u8 bank1PartyId = pokemon_order_func(gBattlePartyID[playerBank1]);
- u8 bank2PartyId = pokemon_order_func(gBattlePartyID[playerBank2]);
+ u8 playerBank1 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ u8 playerBank2 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ u8 bank1PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBank1]);
+ u8 bank2PartyId = pokemon_order_func(gBattlerPartyIndexes[playerBank2]);
if (GetMonData(&gPlayerParty[bank1PartyId], MON_DATA_HP) != 0)
HandleLowHpMusicChange(&gPlayerParty[bank1PartyId], playerBank1);
@@ -1117,62 +1107,62 @@ void sub_805EB9C(u8 affineMode)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (IsBankSpritePresent(i))
+ if (IsBattlerSpritePresent(i))
{
- gSprites[gBankSpriteIds[i]].oam.affineMode = affineMode;
+ gSprites[gBattlerSpriteIds[i]].oam.affineMode = affineMode;
if (affineMode == 0)
{
- gBattleSpritesDataPtr->healthBoxesData[i].field_6 = gSprites[gBankSpriteIds[i]].oam.matrixNum;
- gSprites[gBankSpriteIds[i]].oam.matrixNum = 0;
+ gBattleSpritesDataPtr->healthBoxesData[i].field_6 = gSprites[gBattlerSpriteIds[i]].oam.matrixNum;
+ gSprites[gBattlerSpriteIds[i]].oam.matrixNum = 0;
}
else
{
- gSprites[gBankSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].field_6;
+ gSprites[gBattlerSpriteIds[i]].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[i].field_6;
}
}
}
}
-#define tBank data[0]
+#define tBattlerId data[0]
void LoadAndCreateEnemyShadowSprites(void)
{
- u8 bank;
+ u8 battlerId;
LoadCompressedObjectPic(&gSpriteSheet_EnemyShadow);
- bank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBankPosition(bank, 0), GetBankPosition(bank, 1) + 29, 0xC8);
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data[0] = bank;
+ battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
if (IsDoubleBattle())
{
- bank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
- gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBankPosition(bank, 0), GetBankPosition(bank, 1) + 29, 0xC8);
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data[0] = bank;
+ battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBattlerSpriteCoord(battlerId, 0), GetBattlerSpriteCoord(battlerId, 1) + 29, 0xC8);
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].data[0] = battlerId;
}
}
void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
{
bool8 invisible = FALSE;
- u8 bank = shadowSprite->tBank;
- struct Sprite *bankSprite = &gSprites[gBankSpriteIds[bank]];
+ u8 battlerId = shadowSprite->tBattlerId;
+ struct Sprite *bankSprite = &gSprites[gBattlerSpriteIds[battlerId]];
- if (!bankSprite->inUse || !IsBankSpritePresent(bank))
+ if (!bankSprite->inUse || !IsBattlerSpritePresent(battlerId))
{
shadowSprite->callback = SpriteCB_SetInvisible;
return;
}
if (gAnimScriptActive || bankSprite->invisible)
invisible = TRUE;
- else if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE
- && gEnemyMonElevation[gBattleSpritesDataPtr->bankData[bank].transformSpecies] == 0)
+ else if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE
+ && gEnemyMonElevation[gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies] == 0)
invisible = TRUE;
- if (gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
+ if (gBattleSpritesDataPtr->battlerData[battlerId].behindSubstitute)
invisible = TRUE;
shadowSprite->pos1.x = bankSprite->pos1.x;
@@ -1180,30 +1170,31 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite)
shadowSprite->invisible = invisible;
}
-#undef tBank
+#undef tBattlerId
void SpriteCB_SetInvisible(struct Sprite *sprite)
{
sprite->invisible = 1;
}
-void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species)
+void SetBattlerShadowSpriteCallback(u8 battlerId, u16 species)
{
- if (GetBankSide(bank) == SIDE_PLAYER)
+ // The player's shadow is never seen
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
return;
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != SPECIES_NONE)
- species = gBattleSpritesDataPtr->bankData[bank].transformSpecies;
+ if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != SPECIES_NONE)
+ species = gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies;
if (gEnemyMonElevation[species] != 0)
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_EnemyShadow;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_EnemyShadow;
else
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_SetInvisible;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;
}
-void EnemyShadowCallbackToSetInvisible(u8 bank)
+void HideBattlerShadowSprite(u8 battlerId)
{
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].callback = SpriteCB_SetInvisible;
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerId].shadowSpriteId].callback = SpriteCB_SetInvisible;
}
void sub_805EF14(void)
@@ -1229,12 +1220,12 @@ void sub_805EF14(void)
}
}
-void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute)
+void ClearTemporarySpeciesSpriteData(u8 battlerId, bool8 dontClearSubstitute)
{
- gBattleSpritesDataPtr->bankData[bank].transformSpecies = SPECIES_NONE;
- gBattleMonForms[bank] = 0;
+ gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies = SPECIES_NONE;
+ gBattleMonForms[battlerId] = 0;
if (!dontClearSubstitute)
- ClearBehindSubstituteBit(bank);
+ ClearBehindSubstituteBit(battlerId);
}
void AllocateMonSpritesGfx(void)
@@ -1245,7 +1236,7 @@ void AllocateMonSpritesGfx(void)
gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr));
gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x8000);
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
*(gMonSpritesGfxPtr->templates + i) = gUnknown_08329D98[i];
@@ -1286,7 +1277,7 @@ bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon)
s16 hp, maxHP;
s32 barLevel;
- if (GetMonData(mon, MON_DATA_STATUS) & (STATUS_ANY | STATUS_TOXIC_COUNTER))
+ if (GetMonData(mon, MON_DATA_STATUS) & (STATUS1_ANY | STATUS1_TOXIC_COUNTER))
return FALSE;
hp = GetMonData(mon, MON_DATA_HP);
diff --git a/src/battle_interface.c b/src/battle_interface.c
index e75104f27..96462ec04 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -153,11 +153,6 @@ enum
HEALTHBOX_GFX_117,
};
-extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gNoOfAllBanks;
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-
extern const u8 * const gNatureNamePointers[];
extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
@@ -177,9 +172,6 @@ extern const u16 gBattleInterface_BallStatusBarPal[];
extern const u16 gBattleInterface_BallDisplayPal[];
extern const u8 gHealthboxElementsGfxTable[][32];
-// functions
-extern void LoadBattleBarGfx(u8 arg0);
-
// this file's functions
static const u8 *GetHealthboxElementGfxPtr(u8 elementId);
@@ -898,7 +890,7 @@ void sub_80724A8(s16 arg0, s16 arg1, u16 *arg2)
// healthboxSpriteId_2 refers to the other part
// there's also one other sprite that appears to be a black square? dont fully understand its role
-u8 CreateBankHealthboxSprites(u8 bank)
+u8 CreateBattlerHealthboxSprites(u8 battler)
{
s16 data6 = 0;
u8 healthboxSpriteId_1, healthboxSpriteId_2;
@@ -907,7 +899,7 @@ u8 CreateBankHealthboxSprites(u8 bank)
if (!IsDoubleBattle())
{
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
healthboxSpriteId_1 = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1);
healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1);
@@ -932,10 +924,10 @@ u8 CreateBankHealthboxSprites(u8 bank)
}
else
{
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
- healthboxSpriteId_1 = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1);
- healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1);
+ healthboxSpriteId_1 = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battler) / 2], 240, 160, 1);
+ healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battler) / 2], 240, 160, 1);
gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
@@ -947,8 +939,8 @@ u8 CreateBankHealthboxSprites(u8 bank)
}
else
{
- healthboxSpriteId_1 = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1);
- healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1);
+ healthboxSpriteId_1 = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battler) / 2], 240, 160, 1);
+ healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battler) / 2], 240, 160, 1);
gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
@@ -960,16 +952,16 @@ u8 CreateBankHealthboxSprites(u8 bank)
}
}
- unkSpriteId = CreateSpriteAtEnd(&sUnknown_0832C1C0[gBanksByIdentity[bank]], 140, 60, 0);
+ unkSpriteId = CreateSpriteAtEnd(&sUnknown_0832C1C0[gBattlerPositions[battler]], 140, 60, 0);
unkSpritePtr = &gSprites[unkSpriteId];
- SetSubspriteTables(unkSpritePtr, &sUnknown_0832C28C[GetBankSide(bank)]);
+ SetSubspriteTables(unkSpritePtr, &sUnknown_0832C28C[GetBattlerSide(battler)]);
unkSpritePtr->subspriteMode = 2;
unkSpritePtr->oam.priority = 1;
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + unkSpritePtr->oam.tileNum * 32), 64);
gSprites[healthboxSpriteId_1].data[5] = unkSpriteId;
- gSprites[healthboxSpriteId_1].data[6] = bank;
+ gSprites[healthboxSpriteId_1].data[6] = battler;
gSprites[healthboxSpriteId_1].invisible = 1;
gSprites[healthboxSpriteId_2].invisible = 1;
@@ -1087,11 +1079,11 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- u8 healthboxSpriteId_1 = gHealthBoxesIds[i];
- u8 healthboxSpriteId_2 = gSprites[gHealthBoxesIds[i]].oam.affineParam;
- u8 healthboxSpriteId_3 = gSprites[gHealthBoxesIds[i]].data[5];
+ u8 healthboxSpriteId_1 = gHealthboxSpriteIds[i];
+ u8 healthboxSpriteId_2 = gSprites[gHealthboxSpriteIds[i]].oam.affineParam;
+ u8 healthboxSpriteId_3 = gSprites[gHealthboxSpriteIds[i]].data[5];
gSprites[healthboxSpriteId_1].oam.priority = priority;
gSprites[healthboxSpriteId_2].oam.priority = priority;
@@ -1099,37 +1091,37 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority)
}
}
-void SetBankHealthboxSpritePos(u8 bank)
+void InitBattlerHealthboxCoords(u8 battler)
{
s16 x = 0, y = 0;
if (!IsDoubleBattle())
{
- if (GetBankSide(bank) != SIDE_PLAYER)
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
x = 44, y = 30;
else
x = 158, y = 88;
}
else
{
- switch (GetBankIdentity(bank))
+ switch (GetBattlerPosition(battler))
{
- case IDENTITY_PLAYER_MON1:
+ case B_POSITION_PLAYER_LEFT:
x = 159, y = 76;
break;
- case IDENTITY_PLAYER_MON2:
+ case B_POSITION_PLAYER_RIGHT:
x = 171, y = 101;
break;
- case IDENTITY_OPPONENT_MON1:
+ case B_POSITION_OPPONENT_LEFT:
x = 44, y = 19;
break;
- case IDENTITY_OPPONENT_MON2:
+ case B_POSITION_OPPONENT_RIGHT:
x = 32, y = 44;
break;
}
}
- UpdateSpritePos(gHealthBoxesIds[bank], x, y);
+ UpdateSpritePos(gHealthboxSpriteIds[battler], x, y);
}
static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
@@ -1156,7 +1148,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId);
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
- if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
{
objVram = (void*)(OBJ_VRAM0);
if (!IsDoubleBattle())
@@ -1180,7 +1172,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
u8 text[32];
void *objVram;
- if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER && !IsDoubleBattle())
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER && !IsDoubleBattle())
{
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
if (maxOrCurrent != HP_CURRENT) // singles, max
@@ -1210,11 +1202,11 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
}
else
{
- u8 bank;
+ u8 battler;
memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4));
- bank = gSprites[healthboxSpriteId].data[6];
- if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT)
+ battler = gSprites[healthboxSpriteId].data[6];
+ if (IsDoubleBattle() == TRUE || GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent);
}
@@ -1223,7 +1215,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
u32 var;
u8 i;
- if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
{
if (maxOrCurrent == HP_CURRENT)
var = 29;
@@ -1258,9 +1250,9 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
u8 text[32];
void *objVram;
- if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
{
- if (gBattleSpritesDataPtr->bankData[gSprites[healthboxSpriteId].data[6]].hpNumbersNoBars) // don't print text if only bars are visible
+ if (gBattleSpritesDataPtr->battlerData[gSprites[healthboxSpriteId].data[6]].hpNumbersNoBars) // don't print text if only bars are visible
{
spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * 32;
objVram = (void*)(OBJ_VRAM0) + spriteTileNum;
@@ -1294,7 +1286,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
memcpy(text, sUnknown_0832C3D8, sizeof(sUnknown_0832C3D8));
bank = gSprites[healthboxSpriteId].data[6];
- if (gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) // don't print text if only bars are visible
+ if (gBattleSpritesDataPtr->battlerData[bank].hpNumbersNoBars) // don't print text if only bars are visible
{
u8 var = 4;
u8 r7;
@@ -1335,7 +1327,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
}
else
{
- if (GetBankSide(bank) == SIDE_PLAYER) // impossible to reach part, because the bank is from the opponent's side
+ if (GetBattlerSide(bank) == B_SIDE_PLAYER) // impossible to reach part, because the bank is from the opponent's side
{
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116),
(void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * 32),
@@ -1354,7 +1346,7 @@ static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon)
u8 i, var, nature, healthboxSpriteId_2;
memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4));
- barFontGfx = &gMonSpritesGfxPtr->barFontGfx[0x520 + (GetBankIdentity(gSprites[healthboxSpriteId].data[6]) * 384)];
+ barFontGfx = &gMonSpritesGfxPtr->barFontGfx[0x520 + (GetBattlerPosition(gSprites[healthboxSpriteId].data[6]) * 384)];
var = 5;
nature = GetNature(mon);
StringCopy(text + 6, gNatureNamePointers[nature]);
@@ -1415,17 +1407,17 @@ void SwapHpBarsWithHpText(void)
s32 i;
u8 spriteId;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gSprites[gHealthBoxesIds[i]].callback == SpriteCallbackDummy
- && GetBankSide(i) != SIDE_OPPONENT
- && (IsDoubleBattle() || GetBankSide(i) != SIDE_PLAYER))
+ if (gSprites[gHealthboxSpriteIds[i]].callback == SpriteCallbackDummy
+ && GetBattlerSide(i) != B_SIDE_OPPONENT
+ && (IsDoubleBattle() || GetBattlerSide(i) != B_SIDE_PLAYER))
{
bool8 noBars;
- gBattleSpritesDataPtr->bankData[i].hpNumbersNoBars ^= 1;
- noBars = gBattleSpritesDataPtr->bankData[i].hpNumbersNoBars;
- if (GetBankSide(i) == SIDE_PLAYER)
+ gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars ^= 1;
+ noBars = gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars;
+ if (GetBattlerSide(i) == B_SIDE_PLAYER)
{
if (!IsDoubleBattle())
continue;
@@ -1434,17 +1426,17 @@ void SwapHpBarsWithHpText(void)
if (noBars == TRUE) // bars to text
{
- spriteId = gSprites[gHealthBoxesIds[i]].data[5];
+ spriteId = gSprites[gHealthboxSpriteIds[i]].data[5];
CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100);
- UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), HP_CURRENT);
- UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_MAX_HP), HP_MAX);
+ UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT);
+ UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX);
}
else // text to bars
{
- UpdateStatusIconInHealthbox(gHealthBoxesIds[i]);
- UpdateHealthboxAttribute(gHealthBoxesIds[i], &gPlayerParty[gBattlePartyID[i]], HEALTHBOX_HEALTH_BAR);
- CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthBoxesIds[i]].oam.tileNum * 32), 32);
+ UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gPlayerParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * 32), 32);
}
}
else
@@ -1453,26 +1445,26 @@ void SwapHpBarsWithHpText(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
{
- sub_80730D4(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]]);
+ sub_80730D4(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]]);
}
else
{
- spriteId = gSprites[gHealthBoxesIds[i]].data[5];
+ spriteId = gSprites[gHealthboxSpriteIds[i]].data[5];
CpuFill32(0, (void *)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100);
- UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), HP_CURRENT);
- UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_MAX_HP), HP_MAX);
+ UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_HP), HP_CURRENT);
+ UpdateHpTextInHealthboxInDoubles(gHealthboxSpriteIds[i], GetMonData(&gEnemyParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP), HP_MAX);
}
}
else // text to bars
{
- UpdateStatusIconInHealthbox(gHealthBoxesIds[i]);
- UpdateHealthboxAttribute(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]], HEALTHBOX_HEALTH_BAR);
+ UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR);
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- UpdateHealthboxAttribute(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]], HEALTHBOX_NICK);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], HEALTHBOX_NICK);
}
}
- gSprites[gHealthBoxesIds[i]].data[7] ^= 1;
+ gSprites[gHealthboxSpriteIds[i]].data[7] ^= 1;
}
}
}
@@ -1486,9 +1478,9 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
u8 ballIconSpritesIds[6];
u8 taskId;
- if (!arg2 || GetBankIdentity(bank) != IDENTITY_OPPONENT_MON2)
+ if (!arg2 || GetBattlerPosition(bank) != B_POSITION_OPPONENT_RIGHT)
{
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(bank) == B_SIDE_PLAYER)
{
isOpponent = FALSE;
bar_X = 136, bar_Y = 96;
@@ -1536,7 +1528,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
gSprites[barSpriteId].pos1.x += 96;
}
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
ballIconSpritesIds[i] = CreateSpriteAtEnd(&sStatusSummaryBallsSpriteTemplates[isOpponent], bar_X, bar_Y - 4, 9);
@@ -1567,7 +1559,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
gSprites[ballIconSpritesIds[i]].data[2] = isOpponent;
}
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(bank) == B_SIDE_PLAYER)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
@@ -1712,7 +1704,7 @@ void sub_8073C30(u8 taskId)
{
for (i = 0; i < 6; i++)
{
- if (GetBankSide(bank) != SIDE_PLAYER)
+ if (GetBattlerSide(bank) != B_SIDE_PLAYER)
{
gSprites[sp[5 - i]].data[1] = 7 * i;
gSprites[sp[5 - i]].data[3] = 0;
@@ -1964,7 +1956,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
- if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
{
sub_8075198((void*)(0x6010040 + spriteTileNum), windowTileData, 6);
ptr = (void*)(OBJ_VRAM0);
@@ -1992,9 +1984,9 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
return;
bank = gSprites[healthboxSpriteId].data[6];
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(bank) == B_SIDE_PLAYER)
return;
- if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
+ if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
return;
healthboxSpriteId_2 = gSprites[healthboxSpriteId].data[5];
@@ -2016,9 +2008,9 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
bank = gSprites[healthboxSpriteId].data[6];
healthboxSpriteId_2 = gSprites[healthboxSpriteId].data[5];
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(bank) == B_SIDE_PLAYER)
{
- status = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_STATUS);
+ status = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_STATUS);
if (!IsDoubleBattle())
tileNumAdder = 0x1A;
else
@@ -2026,31 +2018,31 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
}
else
{
- status = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_STATUS);
+ status = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_STATUS);
tileNumAdder = 0x11;
}
- if (status & STATUS_SLEEP)
+ if (status & STATUS1_SLEEP)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_SLP_BANK0, bank));
statusPalId = PAL_STATUS_SLP;
}
- else if (status & STATUS_PSN_ANY)
+ else if (status & STATUS1_PSN_ANY)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_PSN_BANK0, bank));
statusPalId = PAL_STATUS_PSN;
}
- else if (status & STATUS_BURN)
+ else if (status & STATUS1_BURN)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_BRN_BANK0, bank));
statusPalId = PAL_STATUS_BRN;
}
- else if (status & STATUS_FREEZE)
+ else if (status & STATUS1_FREEZE)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_FRZ_BANK0, bank));
statusPalId = PAL_STATUS_FRZ;
}
- else if (status & STATUS_PARALYSIS)
+ else if (status & STATUS1_PARALYSIS)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_PRZ_BANK0, bank));
statusPalId = PAL_STATUS_PAR;
@@ -2062,7 +2054,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
for (i = 0; i < 3; i++)
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32);
- if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)
+ if (!gBattleSpritesDataPtr->battlerData[bank].hpNumbersNoBars)
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 64);
TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
@@ -2075,9 +2067,9 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
FillPalette(sStatusIconColors[statusPalId], pltAdder + 0x100, 2);
CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2);
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96);
- if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT)
+ if (IsDoubleBattle() == TRUE || GetBattlerSide(bank) == B_SIDE_OPPONENT)
{
- if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)
+ if (!gBattleSpritesDataPtr->battlerData[bank].hpNumbersNoBars)
{
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 32);
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 1) * 32), 32);
@@ -2181,9 +2173,9 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
u8 bank = gSprites[healthboxSpriteId].data[6];
if (elementId == HEALTHBOX_ALL && !IsDoubleBattle())
- GetBankSide(bank); // pointless function call
+ GetBattlerSide(bank); // pointless function call
- if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
{
u8 isDoubles;
@@ -2275,7 +2267,7 @@ s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3)
8, expFraction);
}
- if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars))
+ if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->battlerData[bank].hpNumbersNoBars))
sub_8074B9C(bank, whichBar);
if (var == -1)
@@ -2323,7 +2315,7 @@ static void sub_8074B9C(u8 bank, u8 whichBar)
gBattleSpritesDataPtr->battleBars[bank].receivedValue,
&gBattleSpritesDataPtr->battleBars[bank].field_10,
array, 8);
- level = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_LEVEL);
+ level = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_LEVEL);
if (level == MAX_MON_LEVEL)
{
for (i = 0; i < 8; i++)
@@ -2566,17 +2558,17 @@ u8 GetHPBarLevel(s16 hp, s16 maxhp)
static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId)
{
u16 winId;
- struct TextColor color;
+ u8 color[3];
struct WindowTemplate winTemplate = sHealthboxWindowTemplate;
winId = AddWindow(&winTemplate);
FillWindowPixelBuffer(winId, (arg3 << 4) | (arg3));
- color.fgColor = arg3;
- color.bgColor = 1;
- color.shadowColor = 3;
+ color[0] = arg3;
+ color[1] = 1;
+ color[2] = 3;
- AddTextPrinterParameterized2(winId, 0, x, y, 0, 0, &color, -1, str);
+ AddTextPrinterParameterized2(winId, 0, x, y, 0, 0, color, -1, str);
*windowId = winId;
return (u8*)(GetWindowAttribute(winId, WINDOW_TILE_DATA));
diff --git a/src/battle_2.c b/src/battle_main.c
index c03d22080..27a4bb314 100644
--- a/src/battle_2.c
+++ b/src/battle_main.c
@@ -7,6 +7,7 @@
#include "scanline_effect.h"
#include "battle_setup.h"
#include "battle_scripts.h"
+#include "battle_interface.h"
#include "pokemon.h"
#include "palette.h"
#include "task.h"
@@ -44,8 +45,11 @@
#include "roamer.h"
#include "tv.h"
#include "safari_zone.h"
-#include "battle_string_ids.h"
+#include "constants/battle_string_ids.h"
#include "data2.h"
+#include "decompress.h"
+#include "international_string_util.h"
+#include "pokeball.h"
struct UnknownPokemonStruct2
{
@@ -61,8 +65,6 @@ struct UnknownPokemonStruct2
/*0x1D*/ u8 language;
};
-extern u8 gBattleCommunication[];
-extern u8 gBattleTerrain;
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
extern u16 gBattle_BG1_X;
@@ -71,77 +73,13 @@ extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG3_X;
extern u16 gBattle_BG3_Y;
-extern u16 gPartnerTrainerId;
extern u16 gBattle_WIN0H;
extern u16 gBattle_WIN0V;
extern u16 gBattle_WIN1H;
extern u16 gBattle_WIN1V;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
-extern void (*gPreBattleCallback1)(void);
-extern void (*gBattleMainFunc)(void);
-extern void (*gCB2_AfterEvolution)(void);
-extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for?
-extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for?
extern struct MusicPlayerInfo gMPlayInfo_SE1;
extern struct MusicPlayerInfo gMPlayInfo_SE2;
-extern u8 gDecompressionBuffer[];
-extern u16 gUnknown_020243FC;
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
-extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern u8 gStringBank;
-extern u32 gUnknown_02022F88;
-extern u32 gHitMarker;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u16 gPaydayMoney;
-extern u16 gBattleWeather;
-extern u16 gPauseCounterBattle;
-extern u16 gRandomTurnNumber;
-extern u8 gActiveBank;
-extern u8 gNoOfAllBanks;
-extern u8 gBankAttacker;
-extern u8 gBankTarget;
-extern u8 gLeveledUpInBattle;
-extern u8 gAbsentBankFlags;
-extern u32 gBattleExecBuffer;
-extern u8 gMultiHitCounter;
-extern u8 gBattleMoveFlags;
-extern s32 gBattleMoveDamage;
-extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT];
-extern u16 gLastPrintedMoves[BATTLE_BANKS_COUNT];
-extern u16 gLastMoves[BATTLE_BANKS_COUNT];
-extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT];
-extern u16 gLastHitByType[BATTLE_BANKS_COUNT];
-extern u16 gLastResultingMoves[BATTLE_BANKS_COUNT];
-extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
-extern u8 gLastHitBy[BATTLE_BANKS_COUNT];
-extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT];
-extern u32 gStatuses3[BATTLE_BANKS_COUNT];
-extern u16 gSideAffecting[2];
-extern u16 gCurrentMove;
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT];
-extern u8 gActionForBanks[BATTLE_BANKS_COUNT];
-extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
-extern u8 gCurrentActionFuncId;
-extern u8 gLastUsedAbility;
extern u8 gUnknown_0203CF00[];
-extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT];
-extern const u8* gBattlescriptCurrInstr;
-extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT];
-extern u8 gCurrentTurnActionNumber;
-extern u16 gDynamicBasePower;
-extern u8 gCritMultiplier;
-extern u8 gCurrMovePos;
-extern u8 gUnknown_020241E9;
-extern u16 gChosenMove;
extern const struct BattleMove gBattleMoves[];
extern const u16 gBattleTextboxPalette[]; // battle textbox palette
@@ -173,20 +111,14 @@ extern const u8 gText_Confusion[];
extern const u8 gText_Love[];
// functions
-extern void ScanlineEffect_Clear(void);
-extern void sub_80356D0(void);
extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower
extern void sub_8166188(void); // battle tower, sets link battle mons level but why?
extern void sub_8165B88(u8* dst, u16 trainerId); // battle tower, gets language
-extern void PadNameString(u8* dst, u8 arg2); //
extern void sub_81B9150(void);
-extern void sub_800AC34(void);
extern void sub_80B3AF8(u8 taskId); // cable club
-extern void sub_8076918(u8 bank);
-extern void SetHealthboxSpriteVisible(u8 healthoxSpriteId);
extern void sub_81A56B4(void); // battle frontier 2
extern u8 sub_81A9E28(void); // battle frontier 2
-extern void sub_81A56E8(u8 bank); // battle frontier 2
+extern void sub_81A56E8(u8 battlerId); // battle frontier 2
extern void sub_81B8FB0(u8, u8); // party menu
extern u8 pokemon_order_func(u8); // party menu
extern bool8 InBattlePyramid(void);
@@ -234,7 +166,7 @@ static void BattleIntroPlayer1SendsOutMonAnimation(void);
static void TryDoEventsBeforeFirstTurn(void);
static void HandleTurnActionSelectionState(void);
static void RunTurnActionsFunctions(void);
-static void SetActionsAndBanksTurnOrder(void);
+static void SetActionsAndBattlersTurnOrder(void);
static void sub_803CDF8(void);
static bool8 sub_803CDB8(void);
static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void);
@@ -262,38 +194,145 @@ static void HandleAction_Action11(void);
static void HandleAction_NothingIsFainted(void);
static void HandleAction_ActionFinished(void);
+// EWRAM vars
+EWRAM_DATA static u32 sUnusedUnknownArray[25] = {0};
+EWRAM_DATA u32 gBattleTypeFlags = 0;
+EWRAM_DATA u8 gBattleTerrain = 0;
+EWRAM_DATA u32 gUnknown_02022FF4 = 0;
+EWRAM_DATA struct UnknownPokemonStruct2 gUnknown_02022FF8[3] = {0}; // what is it used for?
+EWRAM_DATA struct UnknownPokemonStruct2* gUnknown_02023058 = NULL; // what is it used for?
+EWRAM_DATA u8 *gUnknown_0202305C = NULL;
+EWRAM_DATA u8 *gUnknown_02023060 = NULL;
+EWRAM_DATA u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200] = {0};
+EWRAM_DATA u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200] = {0};
+EWRAM_DATA u8 gActiveBattler = 0;
+EWRAM_DATA u32 gBattleControllerExecFlags = 0;
+EWRAM_DATA u8 gBattlersCount = 0;
+EWRAM_DATA u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattlerPositions[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gActionsByTurnOrder[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattleTurnOrder[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gCurrentTurnActionNumber = 0;
+EWRAM_DATA u8 gCurrentActionFuncId = 0;
+EWRAM_DATA struct BattlePokemon gBattleMons[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gCurrMovePos = 0;
+EWRAM_DATA u8 gChosenMovePos = 0;
+EWRAM_DATA u16 gCurrentMove = 0;
+EWRAM_DATA u16 gChosenMove = 0;
+EWRAM_DATA u16 gRandomMove = 0;
+EWRAM_DATA s32 gBattleMoveDamage = 0;
+EWRAM_DATA s32 gHpDealt = 0;
+EWRAM_DATA s32 gTakenDmg[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastUsedItem = 0;
+EWRAM_DATA u8 gLastUsedAbility = 0;
+EWRAM_DATA u8 gBattlerAttacker = 0;
+EWRAM_DATA u8 gBattlerTarget = 0;
+EWRAM_DATA u8 gBattlerFainted = 0;
+EWRAM_DATA u8 gEffectBattler = 0;
+EWRAM_DATA u8 gPotentialItemEffectBattler = 0;
+EWRAM_DATA u8 gAbsentBattlerFlags = 0;
+EWRAM_DATA u8 gCritMultiplier = 0;
+EWRAM_DATA u8 gMultiHitCounter = 0;
+EWRAM_DATA const u8 *gBattlescriptCurrInstr = NULL;
+EWRAM_DATA u32 gUnusedBattleMainVar = 0;
+EWRAM_DATA u8 gChosenActionByBattler[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA const u8 *gSelectionBattleScripts[MAX_BATTLERS_COUNT] = {NULL};
+EWRAM_DATA const u8 *gPalaceSelectionBattleScripts[MAX_BATTLERS_COUNT] = {NULL};
+EWRAM_DATA u16 gLastPrintedMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastLandedMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastHitByType[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLastResultingMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gLockedMoves[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gLastHitBy[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gMoveResultFlags = 0;
+EWRAM_DATA u32 gHitMarker = 0;
+EWRAM_DATA static u8 sUnusedBattlersArray[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gUnknown_0202428C = 0;
+EWRAM_DATA u16 gSideStatuses[2] = {0};
+EWRAM_DATA struct SideTimer gSideTimers[2] = {0};
+EWRAM_DATA u32 gStatuses3[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gPauseCounterBattle = 0;
+EWRAM_DATA u16 gPaydayMoney = 0;
+EWRAM_DATA u16 gRandomTurnNumber = 0;
+EWRAM_DATA u8 gBattleCommunication[BATTLE_COMMUNICATION_ENTRIES_COUNT] = {0};
+EWRAM_DATA u8 gBattleOutcome = 0;
+EWRAM_DATA struct ProtectStruct gProtectStructs[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA struct SpecialStatus gSpecialStatuses[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u16 gBattleWeather = 0;
+EWRAM_DATA struct WishFutureKnock gWishFutureKnock = {0};
+EWRAM_DATA u16 gIntroSlideFlags = 0;
+EWRAM_DATA u8 gSentPokesToOpponent[2] = {0};
+EWRAM_DATA u16 gDynamicBasePower = 0;
+EWRAM_DATA u16 gExpShareExp = 0;
+EWRAM_DATA struct BattleEnigmaBerry gEnigmaBerries[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA struct BattleScripting gBattleScripting = {0};
+EWRAM_DATA struct BattleStruct *gBattleStruct = NULL;
+EWRAM_DATA u8 *gLinkBattleSendBuffer = NULL;
+EWRAM_DATA u8 *gLinkBattleRecvBuffer = NULL;
+EWRAM_DATA struct BattleResources *gBattleResources = NULL;
+EWRAM_DATA u8 gActionSelectionCursor[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattlerStatusSummaryTaskId[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gBattlerInMenuId = 0;
+EWRAM_DATA bool8 gDoingBattleAnim = FALSE;
+EWRAM_DATA u32 gTransformedPersonalities[MAX_BATTLERS_COUNT] = {0};
+EWRAM_DATA u8 gPlayerDpadHoldFrames = 0;
+EWRAM_DATA struct BattleSpriteData *gBattleSpritesDataPtr = NULL;
+EWRAM_DATA struct MonSpritesGfx *gMonSpritesGfxPtr = NULL;
+EWRAM_DATA struct BattleHealthboxInfo *gUnknown_020244D8 = NULL;
+EWRAM_DATA struct BattleHealthboxInfo *gUnknown_020244DC = NULL;
+EWRAM_DATA u16 gBattleMovePower = 0;
+EWRAM_DATA u16 gMoveToLearn = 0;
+EWRAM_DATA u8 gBattleMonForms[MAX_BATTLERS_COUNT] = {0};
+
+// IWRAM common vars
+void (*gPreBattleCallback1)(void);
+void (*gBattleMainFunc)(void);
+struct BattleResults gBattleResults;
+u8 gLeveledUpInBattle;
+void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
+u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
+u8 gMultiUsePlayerCursor;
+u8 gNumberOfMovesToChoose;
+u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
+
// rom const data
static void (* const sTurnActionsFuncsTable[])(void) =
{
- HandleAction_UseMove, // ACTION_USE_MOVE
- HandleAction_UseItem, // ACTION_USE_ITEM
- HandleAction_Switch, // ACTION_SWITCH
- HandleAction_Run, // ACTION_RUN
- HandleAction_WatchesCarefully, // ACTION_WATCHES_CAREFULLY
- HandleAction_SafariZoneBallThrow, // ACTION_SAFARI_ZONE_BALL
- HandleAction_ThrowPokeblock, // ACTION_POKEBLOCK_CASE
- HandleAction_GoNear, // ACTION_GO_NEAR
- HandleAction_SafriZoneRun, // ACTION_SAFARI_ZONE_RUN
- HandleAction_Action9, // ACTION_9
- HandleAction_RunBattleScript, // ACTION_RUN_BATTLESCRIPT
+ HandleAction_UseMove, // B_ACTION_USE_MOVE
+ HandleAction_UseItem, // B_ACTION_USE_ITEM
+ HandleAction_Switch, // B_ACTION_SWITCH
+ HandleAction_Run, // B_ACTION_RUN
+ HandleAction_WatchesCarefully, // B_ACTION_SAFARI_WATCH_CAREFULLY
+ HandleAction_SafariZoneBallThrow, // B_ACTION_SAFARI_BALL
+ HandleAction_ThrowPokeblock, // B_ACTION_SAFARI_POKEBLOCK
+ HandleAction_GoNear, // B_ACTION_SAFARI_GO_NEAR
+ HandleAction_SafriZoneRun, // B_ACTION_SAFARI_RUN
+ HandleAction_Action9, // B_ACTION_UNKNOWN9
+ HandleAction_RunBattleScript, // B_ACTION_EXEC_SCRIPT
HandleAction_Action11, // not sure about this one
- HandleAction_ActionFinished, // ACTION_FINISHED
- HandleAction_NothingIsFainted, // ACTION_NOTHING_FAINTED
+ HandleAction_ActionFinished, // B_ACTION_FINISHED
+ HandleAction_NothingIsFainted, // B_ACTION_NOTHING_FAINTED
};
static void (* const sEndTurnFuncsTable[])(void) =
{
HandleEndTurn_ContinueBattle, // battle outcome 0
- HandleEndTurn_BattleWon, // BATTLE_WON
- HandleEndTurn_BattleLost, // BATTLE_LOST
- HandleEndTurn_BattleLost, // BATTLE_DREW
- HandleEndTurn_RanFromBattle, // BATTLE_RAN
- HandleEndTurn_FinishBattle, // BATTLE_PLAYER_TELEPORTED
- HandleEndTurn_MonFled, // BATTLE_POKE_FLED
- HandleEndTurn_FinishBattle, // BATTLE_CAUGHT
+ HandleEndTurn_BattleWon, // B_OUTCOME_WON
+ HandleEndTurn_BattleLost, // B_OUTCOME_LOST
+ HandleEndTurn_BattleLost, // B_OUTCOME_DREW
+ HandleEndTurn_RanFromBattle, // B_OUTCOME_RAN
+ HandleEndTurn_FinishBattle, // B_OUTCOME_PLAYER_TELEPORTED
+ HandleEndTurn_MonFled, // B_OUTCOME_MON_FLED
+ HandleEndTurn_FinishBattle, // B_OUTCOME_CAUGHT
HandleEndTurn_FinishBattle, // battle outcome 8
- HandleEndTurn_FinishBattle, // BATTLE_FORFEITED
- HandleEndTurn_FinishBattle, // BATTLE_OPPONENT_TELEPORTED
+ HandleEndTurn_FinishBattle, // B_OUTCOME_FORFEITED
+ HandleEndTurn_FinishBattle, // B_OUTCOME_MON_TELEPORTED
};
const u8 gStatusConditionString_PoisonJpn[8] = _("どく$$$$$");
@@ -1576,7 +1615,7 @@ void BattleMainCB2(void)
if (gMain.heldKeys & B_BUTTON && gBattleTypeFlags & BATTLE_TYPE_RECORDED && sub_8186450())
{
- gSpecialVar_Result = gBattleOutcome = BATTLE_PLAYER_TELEPORTED;
+ gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED;
ResetPaletteFadeControl();
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
SetMainCallback2(CB2_QuitRecordedBattle);
@@ -1699,7 +1738,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
else
personalityValue = 0x88;
- for (j = 0; gTrainers[trainerNum].trainerName[j] != 0xFF; j++)
+ for (j = 0; gTrainers[trainerNum].trainerName[j] != EOS; j++)
nameHash += gTrainers[trainerNum].trainerName[j];
switch (gTrainers[trainerNum].partyFlags)
@@ -2372,8 +2411,8 @@ u32 sub_80397C4(u32 setId, u32 tableId)
return gUnknown_0831ABA0[setId][tableId].width * 8;
}
-#define tBank data[0]
-#define tSpeciesId data[2]
+#define sBattler data[0]
+#define sSpeciesId data[2]
void oac_poke_opponent(struct Sprite *sprite)
{
@@ -2384,7 +2423,7 @@ void oac_poke_opponent(struct Sprite *sprite)
static void sub_803980C(struct Sprite *sprite)
{
- if ((gUnknown_020243FC & 1) == 0)
+ if ((gIntroSlideFlags & 1) == 0)
{
sprite->pos2.x += 2;
if (sprite->pos2.x == 0)
@@ -2398,8 +2437,8 @@ static void sub_8039838(struct Sprite *sprite)
{
if (sprite->animEnded)
{
- sub_8076918(sprite->tBank);
- SetHealthboxSpriteVisible(gHealthBoxesIds[sprite->tBank]);
+ sub_8076918(sprite->sBattler);
+ SetHealthboxSpriteVisible(gHealthboxSpriteIds[sprite->sBattler]);
sprite->callback = sub_8039894;
StartSpriteAnimIfDifferent(sprite, 0);
BeginNormalPaletteFade(0x20000, 0, 10, 0, 0x2108);
@@ -2410,7 +2449,7 @@ static void sub_8039894(struct Sprite *sprite)
{
if (!gPaletteFade.active)
{
- BattleAnimateFrontSprite(sprite, sprite->tSpeciesId, FALSE, 1);
+ BattleAnimateFrontSprite(sprite, sprite->sSpeciesId, FALSE, 1);
}
}
@@ -2438,7 +2477,7 @@ static void sub_80398D0(struct Sprite *sprite)
{
sprite->invisible = FALSE;
sprite->callback = SpriteCallbackDummy_2;
- gUnknown_02022F88 = 0;
+ sUnusedUnknownArray[0] = 0;
}
}
}
@@ -2448,20 +2487,20 @@ extern const struct MonCoords gCastformFrontSpriteCoords[];
void sub_8039934(struct Sprite *sprite)
{
- u8 bank = sprite->tBank;
+ u8 battler = sprite->sBattler;
u16 species;
u8 yOffset;
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != 0)
- species = gBattleSpritesDataPtr->bankData[bank].transformSpecies;
+ if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies != 0)
+ species = gBattleSpritesDataPtr->battlerData[battler].transformSpecies;
else
- species = sprite->tSpeciesId;
+ species = sprite->sSpeciesId;
- GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_PERSONALITY); // Unused return value
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY); // Unused return value
if (species == SPECIES_UNOWN)
{
- u32 personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_PERSONALITY);
+ u32 personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY);
u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C);
u16 unownSpecies;
@@ -2474,7 +2513,7 @@ void sub_8039934(struct Sprite *sprite)
}
else if (species == SPECIES_CASTFORM)
{
- yOffset = gCastformFrontSpriteCoords[gBattleMonForms[bank]].y_offset;
+ yOffset = gCastformFrontSpriteCoords[gBattleMonForms[battler]].y_offset;
}
else if (species > NUM_SPECIES)
{
@@ -2507,12 +2546,12 @@ static void sub_8039A48(struct Sprite *sprite)
}
else
{
- u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBankIdentity(sprite->tBank)] + (gBattleMonForms[sprite->tBank] << 11) + (sprite->data[3] << 8);
+ u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8);
for (i = 0; i < 0x100; i++)
*(dst++) = 0;
- StartSpriteAnim(sprite, gBattleMonForms[sprite->tBank]);
+ StartSpriteAnim(sprite, gBattleMonForms[sprite->sBattler]);
}
}
}
@@ -2547,10 +2586,10 @@ void sub_8039B58(struct Sprite *sprite)
{
if (!(gHitMarker & HITMARKER_NO_ANIMATIONS) || gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
{
- if (HasTwoFramesAnimation(sprite->tSpeciesId))
+ if (HasTwoFramesAnimation(sprite->sSpeciesId))
StartSpriteAnim(sprite, 1);
}
- BattleAnimateFrontSprite(sprite, sprite->tSpeciesId, TRUE, 1);
+ BattleAnimateFrontSprite(sprite, sprite->sSpeciesId, TRUE, 1);
}
}
@@ -2561,7 +2600,7 @@ void sub_8039BB4(struct Sprite *sprite)
static void oac_poke_ally_(struct Sprite *sprite)
{
- if ((gUnknown_020243FC & 1) == 0)
+ if ((gIntroSlideFlags & 1) == 0)
{
sprite->pos2.x -= 2;
if (sprite->pos2.x == 0)
@@ -2583,42 +2622,42 @@ static void SpriteCallbackDummy_3(struct Sprite *sprite)
void sub_8039C00(struct Sprite *sprite)
{
- if (!(gUnknown_020243FC & 1))
+ if (!(gIntroSlideFlags & 1))
{
sprite->pos2.x += sprite->data[1];
sprite->pos2.y += sprite->data[2];
}
}
-void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d)
+void dp11b_obj_instanciate(u8 battler, u8 b, s8 c, s8 d)
{
u8 bounceHealthBoxSpriteId;
u8 spriteId2;
if (b)
{
- if (gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2)
+ if (gBattleSpritesDataPtr->healthBoxesData[battler].flag_x2)
return;
}
else
{
- if (gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4)
+ if (gBattleSpritesDataPtr->healthBoxesData[battler].flag_x4)
return;
}
bounceHealthBoxSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_HealthBoxBounce);
if (b == TRUE)
{
- spriteId2 = gHealthBoxesIds[bank];
- gBattleSpritesDataPtr->healthBoxesData[bank].field_2 = bounceHealthBoxSpriteId;
- gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2 = 1;
+ spriteId2 = gHealthboxSpriteIds[battler];
+ gBattleSpritesDataPtr->healthBoxesData[battler].field_2 = bounceHealthBoxSpriteId;
+ gBattleSpritesDataPtr->healthBoxesData[battler].flag_x2 = 1;
gSprites[bounceHealthBoxSpriteId].data[0] = 0x80;
}
else
{
- spriteId2 = gBankSpriteIds[bank];
- gBattleSpritesDataPtr->healthBoxesData[bank].field_3 = bounceHealthBoxSpriteId;
- gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4 = 1;
+ spriteId2 = gBattlerSpriteIds[battler];
+ gBattleSpritesDataPtr->healthBoxesData[battler].field_3 = bounceHealthBoxSpriteId;
+ gBattleSpritesDataPtr->healthBoxesData[battler].flag_x4 = 1;
gSprites[bounceHealthBoxSpriteId].data[0] = 0xC0;
}
gSprites[bounceHealthBoxSpriteId].data[1] = c;
@@ -2629,27 +2668,27 @@ void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d)
gSprites[spriteId2].pos2.y = 0;
}
-void dp11b_obj_free(u8 bank, bool8 b)
+void dp11b_obj_free(u8 battler, bool8 b)
{
u8 r4;
if (b == TRUE)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2)
+ if (!gBattleSpritesDataPtr->healthBoxesData[battler].flag_x2)
return;
- r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2].data[3];
- DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2]);
- gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2 = 0;
+ r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].field_2].data[3];
+ DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].field_2]);
+ gBattleSpritesDataPtr->healthBoxesData[battler].flag_x2 = 0;
}
else
{
- if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4)
+ if (!gBattleSpritesDataPtr->healthBoxesData[battler].flag_x4)
return;
- r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3].data[3];
- DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3]);
- gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4 = 0;
+ r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].field_3].data[3];
+ DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].field_3]);
+ gBattleSpritesDataPtr->healthBoxesData[battler].flag_x4 = 0;
}
gSprites[r4].pos2.x = 0;
gSprites[r4].pos2.y = 0;
@@ -2672,7 +2711,7 @@ static void SpriteCB_HealthBoxBounce(struct Sprite *sprite)
void sub_8039E44(struct Sprite *sprite)
{
if (sprite->affineAnimEnded)
- BattleAnimateBackSprite(sprite, sprite->tSpeciesId);
+ BattleAnimateBackSprite(sprite, sprite->sSpeciesId);
}
void sub_8039E60(struct Sprite *sprite)
@@ -2710,8 +2749,8 @@ static void BattleMainCB1(void)
{
gBattleMainFunc();
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
- gBattleBankFunc[gActiveBank]();
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
+ gBattlerControllerFuncs[gActiveBattler]();
}
static void BattleStartClearSetData(void)
@@ -2723,7 +2762,7 @@ static void BattleStartClearSetData(void)
TurnValuesCleanUp(FALSE);
SpecialStatusesClear();
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
gStatuses3[i] = 0;
@@ -2732,7 +2771,7 @@ static void BattleStartClearSetData(void)
dataPtr[j] = 0;
gDisableStructs[i].isFirstTurn = 2;
- gUnknown_02024284[i] = 0;
+ sUnusedBattlersArray[i] = 0;
gLastMoves[i] = 0;
gLastLandedMoves[i] = 0;
gLastHitByType[i] = 0;
@@ -2746,15 +2785,15 @@ static void BattleStartClearSetData(void)
for (i = 0; i < 2; i++)
{
- gSideAffecting[i] = 0;
+ gSideStatuses[i] = 0;
dataPtr = (u8 *)&gSideTimers[i];
for (j = 0; j < sizeof(struct SideTimer); j++)
dataPtr[j] = 0;
}
- gBankAttacker = 0;
- gBankTarget = 0;
+ gBattlerAttacker = 0;
+ gBattlerTarget = 0;
gBattleWeather = 0;
dataPtr = (u8 *)&gWishFutureKnock;
@@ -2775,7 +2814,7 @@ static void BattleStartClearSetData(void)
gMultiHitCounter = 0;
gBattleOutcome = 0;
- gBattleExecBuffer = 0;
+ gBattleControllerExecFlags = 0;
gPaydayMoney = 0;
gBattleResources->battleScriptsStack->size = 0;
gBattleResources->battleCallbackStack->size = 0;
@@ -2785,11 +2824,11 @@ static void BattleStartClearSetData(void)
gPauseCounterBattle = 0;
gBattleMoveDamage = 0;
- gUnknown_020243FC = 0;
+ gIntroSlideFlags = 0;
gBattleScripting.animTurn = 0;
gBattleScripting.animTargetsHit = 0;
gLeveledUpInBattle = 0;
- gAbsentBankFlags = 0;
+ gAbsentBattlerFlags = 0;
gBattleStruct->runTries = 0;
gBattleStruct->field_79 = 0;
gBattleStruct->field_7A = 0;
@@ -2810,7 +2849,7 @@ static void BattleStartClearSetData(void)
*(i + 3 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
}
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
*(gBattleStruct->AI_monToSwitchIntoId + i) = 6;
}
@@ -2832,35 +2871,35 @@ static void BattleStartClearSetData(void)
void SwitchInClearSetData(void)
{
- struct DisableStruct disableStructCopy = gDisableStructs[gActiveBank];
+ struct DisableStruct disableStructCopy = gDisableStructs[gActiveBattler];
s32 i;
u8 *ptr;
if (gBattleMoves[gCurrentMove].effect != EFFECT_BATON_PASS)
{
for (i = 0; i < BATTLE_STATS_NO; i++)
- gBattleMons[gActiveBank].statStages[i] = 6;
- for (i = 0; i < gNoOfAllBanks; i++)
+ gBattleMons[gActiveBattler].statStages[i] = 6;
+ for (i = 0; i < gBattlersCount; i++)
{
- if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
+ if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].battlerPreventingEscape == gActiveBattler)
gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
- if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank)
+ if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].battlerWithSureHit == gActiveBattler)
{
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
- gDisableStructs[i].bankWithSureHit = 0;
+ gDisableStructs[i].battlerWithSureHit = 0;
}
}
}
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
- gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED);
- gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
+ gBattleMons[gActiveBattler].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED);
+ gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(gActiveBank) != GetBankSide(i)
+ if (GetBattlerSide(gActiveBattler) != GetBattlerSide(i)
&& (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0
- && (gDisableStructs[i].bankWithSureHit == gActiveBank))
+ && (gDisableStructs[i].battlerWithSureHit == gActiveBattler))
{
gStatuses3[i] &= ~(STATUS3_ALWAYS_HITS);
gStatuses3[i] |= 0x10;
@@ -2869,77 +2908,77 @@ void SwitchInClearSetData(void)
}
else
{
- gBattleMons[gActiveBank].status2 = 0;
- gStatuses3[gActiveBank] = 0;
+ gBattleMons[gActiveBattler].status2 = 0;
+ gStatuses3[gActiveBattler] = 0;
}
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBank))
- gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBank));
- if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBank)
+ if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBattler))
+ gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBattler));
+ if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBattler)
gBattleMons[i].status2 &= ~(STATUS2_WRAPPED);
}
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
+ gActionSelectionCursor[gActiveBattler] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
- ptr = (u8 *)&gDisableStructs[gActiveBank];
+ ptr = (u8 *)&gDisableStructs[gActiveBattler];
for (i = 0; i < sizeof(struct DisableStruct); i++)
ptr[i] = 0;
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
- gDisableStructs[gActiveBank].substituteHP = disableStructCopy.substituteHP;
- gDisableStructs[gActiveBank].bankWithSureHit = disableStructCopy.bankWithSureHit;
- gDisableStructs[gActiveBank].perishSongTimer1 = disableStructCopy.perishSongTimer1;
- gDisableStructs[gActiveBank].perishSongTimer2 = disableStructCopy.perishSongTimer2;
- gDisableStructs[gActiveBank].bankPreventingEscape = disableStructCopy.bankPreventingEscape;
+ gDisableStructs[gActiveBattler].substituteHP = disableStructCopy.substituteHP;
+ gDisableStructs[gActiveBattler].battlerWithSureHit = disableStructCopy.battlerWithSureHit;
+ gDisableStructs[gActiveBattler].perishSongTimer1 = disableStructCopy.perishSongTimer1;
+ gDisableStructs[gActiveBattler].perishSongTimer2 = disableStructCopy.perishSongTimer2;
+ gDisableStructs[gActiveBattler].battlerPreventingEscape = disableStructCopy.battlerPreventingEscape;
}
- gBattleMoveFlags = 0;
- gDisableStructs[gActiveBank].isFirstTurn = 2;
- gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit;
- gLastMoves[gActiveBank] = 0;
- gLastLandedMoves[gActiveBank] = 0;
- gLastHitByType[gActiveBank] = 0;
- gLastResultingMoves[gActiveBank] = 0;
- gLastPrintedMoves[gActiveBank] = 0;
- gLastHitBy[gActiveBank] = 0xFF;
+ gMoveResultFlags = 0;
+ gDisableStructs[gActiveBattler].isFirstTurn = 2;
+ gDisableStructs[gActiveBattler].truantUnknownBit = disableStructCopy.truantUnknownBit;
+ gLastMoves[gActiveBattler] = 0;
+ gLastLandedMoves[gActiveBattler] = 0;
+ gLastHitByType[gActiveBattler] = 0;
+ gLastResultingMoves[gActiveBattler] = 0;
+ gLastPrintedMoves[gActiveBattler] = 0;
+ gLastHitBy[gActiveBattler] = 0xFF;
- *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0;
- *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0;
- *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
- *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
- *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
- *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(gBattleStruct->mirrorMoves + gActiveBattler * 2 + 0) = 0;
+ *(gBattleStruct->mirrorMoves + gActiveBattler * 2 + 1) = 0;
+ *(0 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(0 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(1 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(1 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(2 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(2 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(3 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(3 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
- gBattleStruct->field_92 &= ~(gBitTable[gActiveBank]);
+ gBattleStruct->field_92 &= ~(gBitTable[gActiveBattler]);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (i != gActiveBank && GetBankSide(i) != GetBankSide(gActiveBank))
+ if (i != gActiveBattler && GetBattlerSide(i) != GetBattlerSide(gActiveBattler))
{
*(gBattleStruct->mirrorMoves + i * 2 + 0) = 0;
*(gBattleStruct->mirrorMoves + i * 2 + 1) = 0;
}
- *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(i * 8 + gActiveBattler * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(i * 8 + gActiveBattler * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
}
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBattler]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBattler]) + 1) = 0;
- gBattleResources->flags->flags[gActiveBank] = 0;
+ gBattleResources->flags->flags[gActiveBattler] = 0;
gCurrentMove = 0;
gBattleStruct->field_DA = 0xFF;
- ClearBankMoveHistory(gActiveBank);
- ClearBankAbilityHistory(gActiveBank);
+ ClearBattlerMoveHistory(gActiveBattler);
+ ClearBattlerAbilityHistory(gActiveBattler);
}
void FaintClearSetData(void)
@@ -2948,91 +2987,91 @@ void FaintClearSetData(void)
u8 *ptr;
for (i = 0; i < BATTLE_STATS_NO; i++)
- gBattleMons[gActiveBank].statStages[i] = 6;
+ gBattleMons[gActiveBattler].statStages[i] = 6;
- gBattleMons[gActiveBank].status2 = 0;
- gStatuses3[gActiveBank] = 0;
+ gBattleMons[gActiveBattler].status2 = 0;
+ gStatuses3[gActiveBattler] = 0;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
+ if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].battlerPreventingEscape == gActiveBattler)
gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
- if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBank))
- gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBank));
- if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBank)
+ if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBattler))
+ gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBattler));
+ if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBattler)
gBattleMons[i].status2 &= ~(STATUS2_WRAPPED);
}
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
+ gActionSelectionCursor[gActiveBattler] = 0;
+ gMoveSelectionCursor[gActiveBattler] = 0;
- ptr = (u8 *)&gDisableStructs[gActiveBank];
+ ptr = (u8 *)&gDisableStructs[gActiveBattler];
for (i = 0; i < sizeof(struct DisableStruct); i++)
ptr[i] = 0;
- gProtectStructs[gActiveBank].protected = 0;
- gProtectStructs[gActiveBank].endured = 0;
- gProtectStructs[gActiveBank].onlyStruggle = 0;
- gProtectStructs[gActiveBank].helpingHand = 0;
- gProtectStructs[gActiveBank].bounceMove = 0;
- gProtectStructs[gActiveBank].stealMove = 0;
- gProtectStructs[gActiveBank].flag0Unknown = 0;
- gProtectStructs[gActiveBank].prlzImmobility = 0;
- gProtectStructs[gActiveBank].confusionSelfDmg = 0;
- gProtectStructs[gActiveBank].targetNotAffected = 0;
- gProtectStructs[gActiveBank].chargingTurn = 0;
- gProtectStructs[gActiveBank].fleeFlag = 0;
- gProtectStructs[gActiveBank].usedImprisionedMove = 0;
- gProtectStructs[gActiveBank].loveImmobility = 0;
- gProtectStructs[gActiveBank].usedDisabledMove = 0;
- gProtectStructs[gActiveBank].usedTauntedMove = 0;
- gProtectStructs[gActiveBank].flag2Unknown = 0;
- gProtectStructs[gActiveBank].flinchImmobility = 0;
- gProtectStructs[gActiveBank].notFirstStrike = 0;
-
- gDisableStructs[gActiveBank].isFirstTurn = 2;
-
- gLastMoves[gActiveBank] = 0;
- gLastLandedMoves[gActiveBank] = 0;
- gLastHitByType[gActiveBank] = 0;
- gLastResultingMoves[gActiveBank] = 0;
- gLastPrintedMoves[gActiveBank] = 0;
- gLastHitBy[gActiveBank] = 0xFF;
-
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0;
-
- *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0;
- *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0;
- *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
- *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
- *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
- *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
-
- gBattleStruct->field_92 &= ~(gBitTable[gActiveBank]);
-
- for (i = 0; i < gNoOfAllBanks; i++)
- {
- if (i != gActiveBank && GetBankSide(i) != GetBankSide(gActiveBank))
+ gProtectStructs[gActiveBattler].protected = 0;
+ gProtectStructs[gActiveBattler].endured = 0;
+ gProtectStructs[gActiveBattler].onlyStruggle = 0;
+ gProtectStructs[gActiveBattler].helpingHand = 0;
+ gProtectStructs[gActiveBattler].bounceMove = 0;
+ gProtectStructs[gActiveBattler].stealMove = 0;
+ gProtectStructs[gActiveBattler].flag0Unknown = 0;
+ gProtectStructs[gActiveBattler].prlzImmobility = 0;
+ gProtectStructs[gActiveBattler].confusionSelfDmg = 0;
+ gProtectStructs[gActiveBattler].targetNotAffected = 0;
+ gProtectStructs[gActiveBattler].chargingTurn = 0;
+ gProtectStructs[gActiveBattler].fleeFlag = 0;
+ gProtectStructs[gActiveBattler].usedImprisionedMove = 0;
+ gProtectStructs[gActiveBattler].loveImmobility = 0;
+ gProtectStructs[gActiveBattler].usedDisabledMove = 0;
+ gProtectStructs[gActiveBattler].usedTauntedMove = 0;
+ gProtectStructs[gActiveBattler].flag2Unknown = 0;
+ gProtectStructs[gActiveBattler].flinchImmobility = 0;
+ gProtectStructs[gActiveBattler].notFirstStrike = 0;
+
+ gDisableStructs[gActiveBattler].isFirstTurn = 2;
+
+ gLastMoves[gActiveBattler] = 0;
+ gLastLandedMoves[gActiveBattler] = 0;
+ gLastHitByType[gActiveBattler] = 0;
+ gLastResultingMoves[gActiveBattler] = 0;
+ gLastPrintedMoves[gActiveBattler] = 0;
+ gLastHitBy[gActiveBattler] = 0xFF;
+
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBattler]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBattler]) + 1) = 0;
+
+ *(gBattleStruct->mirrorMoves + gActiveBattler * 2 + 0) = 0;
+ *(gBattleStruct->mirrorMoves + gActiveBattler * 2 + 1) = 0;
+ *(0 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(0 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(1 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(1 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(2 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(2 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(3 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(3 * 2 + gActiveBattler * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+
+ gBattleStruct->field_92 &= ~(gBitTable[gActiveBattler]);
+
+ for (i = 0; i < gBattlersCount; i++)
+ {
+ if (i != gActiveBattler && GetBattlerSide(i) != GetBattlerSide(gActiveBattler))
{
*(gBattleStruct->mirrorMoves + i * 2 + 0) = 0;
*(gBattleStruct->mirrorMoves + i * 2 + 1) = 0;
}
- *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
- *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(i * 8 + gActiveBattler * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(i * 8 + gActiveBattler * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
}
- gBattleResources->flags->flags[gActiveBank] = 0;
+ gBattleResources->flags->flags[gActiveBattler] = 0;
- gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
- gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
+ gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
+ gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
- ClearBankMoveHistory(gActiveBank);
- ClearBankAbilityHistory(gActiveBank);
+ ClearBattlerMoveHistory(gActiveBattler);
+ ClearBattlerAbilityHistory(gActiveBattler);
}
static void BattleIntroGetMonsData(void)
@@ -3040,16 +3079,16 @@ static void BattleIntroGetMonsData(void)
switch (gBattleCommunication[MULTIUSE_STATE])
{
case 0:
- gActiveBank = gBattleCommunication[1];
- EmitGetMonData(0, 0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattleCommunication[1];
+ BtlController_EmitGetMonData(0, 0, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[MULTIUSE_STATE]++;
break;
case 1:
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
gBattleCommunication[1]++;
- if (gBattleCommunication[1] == gNoOfAllBanks)
+ if (gBattleCommunication[1] == gBattlersCount)
gBattleMainFunc = BattleIntroPrepareBackgroundSlide;
else
gBattleCommunication[MULTIUSE_STATE] = 0;
@@ -3060,11 +3099,11 @@ static void BattleIntroGetMonsData(void)
static void BattleIntroPrepareBackgroundSlide(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gActiveBank = GetBankByIdentity(0);
- EmitIntroSlide(0, gBattleTerrain);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerAtPosition(0);
+ BtlController_EmitIntroSlide(0, gBattleTerrain);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattleMainFunc = BattleIntroDrawTrainersOrMonsSprites;
gBattleCommunication[0] = 0;
gBattleCommunication[1] = 0;
@@ -3076,15 +3115,15 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
u8 *ptr;
s32 i;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- ptr = (u8 *)&gBattleMons[gActiveBank];
+ ptr = (u8 *)&gBattleMons[gActiveBattler];
for (i = 0; i < sizeof(struct BattlePokemon); i++)
ptr[i] = 0;
}
@@ -3092,46 +3131,46 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
{
u16* hpOnSwitchout;
- ptr = (u8 *)&gBattleMons[gActiveBank];
+ ptr = (u8 *)&gBattleMons[gActiveBattler];
for (i = 0; i < sizeof(struct BattlePokemon); i++)
- ptr[i] = gBattleBufferB[gActiveBank][4 + i];
+ ptr[i] = gBattleBufferB[gActiveBattler][4 + i];
- gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
- gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
- gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility);
- hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(gActiveBank)];
- *hpOnSwitchout = gBattleMons[gActiveBank].hp;
+ gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
+ gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
+ gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].altAbility);
+ hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)];
+ *hpOnSwitchout = gBattleMons[gActiveBattler].hp;
for (i = 0; i < BATTLE_STATS_NO; i++)
- gBattleMons[gActiveBank].statStages[i] = 6;
- gBattleMons[gActiveBank].status2 = 0;
+ gBattleMons[gActiveBattler].statStages[i] = 6;
+ gBattleMons[gActiveBattler].status2 = 0;
}
- if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON1)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT)
{
- EmitDrawTrainerPic(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitDrawTrainerPic(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- if (GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON1)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT)
{
- EmitDrawTrainerPic(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitDrawTrainerPic(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
| BATTLE_TYPE_x4000000)))
{
- HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality);
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
}
else
{
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
{
if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
@@ -3139,28 +3178,28 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
| BATTLE_TYPE_x2000000
| BATTLE_TYPE_x4000000)))
{
- HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality);
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
- EmitLoadMonSprite(0);
- MarkBufferBankForExecution(gActiveBank);
- gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL);
+ BtlController_EmitLoadMonSprite(0);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL);
}
}
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON2
- || GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON2)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT
+ || GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)
{
- EmitDrawTrainerPic(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitDrawTrainerPic(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
- if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON2)
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)
{
- EmitDrawTrainerPic(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitDrawTrainerPic(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
@@ -3174,7 +3213,7 @@ static void BattleIntroDrawPartySummaryScreens(void)
s32 i;
struct HpAndStatus hpStatus[6];
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
@@ -3193,9 +3232,9 @@ static void BattleIntroDrawPartySummaryScreens(void)
hpStatus[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS);
}
}
- gActiveBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ BtlController_EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
+ MarkBattlerForControllerExec(gActiveBattler);
for (i = 0; i < PARTY_SIZE; i++)
{
@@ -3211,9 +3250,9 @@ static void BattleIntroDrawPartySummaryScreens(void)
hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
}
}
- gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ BtlController_EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattleMainFunc = BattleIntroPrintTrainerWantsToBattle;
}
@@ -3245,17 +3284,17 @@ static void BattleIntroDrawPartySummaryScreens(void)
static void BattleIntroPrintTrainerWantsToBattle(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gActiveBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- PrepareStringBattle(STRINGID_INTROMSG, gActiveBank);
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ PrepareStringBattle(STRINGID_INTROMSG, gActiveBattler);
gBattleMainFunc = BattleIntroPrintOpponentSendsOut;
}
}
static void BattleIntroPrintWildMonAttacked(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
PrepareStringBattle(STRINGID_INTROMSG, 0);
@@ -3264,49 +3303,49 @@ static void BattleIntroPrintWildMonAttacked(void)
static void BattleIntroPrintOpponentSendsOut(void)
{
- u32 identity;
+ u32 position;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- identity = IDENTITY_OPPONENT_MON1;
+ position = B_POSITION_OPPONENT_LEFT;
else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
- identity = IDENTITY_OPPONENT_MON1;
+ position = B_POSITION_OPPONENT_LEFT;
else
- identity = IDENTITY_PLAYER_MON1;
+ position = B_POSITION_PLAYER_LEFT;
}
else
- identity = IDENTITY_OPPONENT_MON1;
+ position = B_POSITION_OPPONENT_LEFT;
- PrepareStringBattle(STRINGID_INTROSENDOUT, GetBankByIdentity(identity));
+ PrepareStringBattle(STRINGID_INTROSENDOUT, GetBattlerAtPosition(position));
gBattleMainFunc = BattleIntroOpponent1SendsOutMonAnimation;
}
static void BattleIntroOpponent2SendsOutMonAnimation(void)
{
- u32 identity;
+ u32 position;
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- identity = IDENTITY_OPPONENT_MON2;
+ position = B_POSITION_OPPONENT_RIGHT;
else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
- identity = IDENTITY_OPPONENT_MON2;
+ position = B_POSITION_OPPONENT_RIGHT;
else
- identity = IDENTITY_PLAYER_MON2;
+ position = B_POSITION_PLAYER_RIGHT;
}
else
- identity = IDENTITY_OPPONENT_MON2;
+ position = B_POSITION_OPPONENT_RIGHT;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankIdentity(gActiveBank) == identity)
+ if (GetBattlerPosition(gActiveBattler) == position)
{
- EmitIntroTrainerBallThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitIntroTrainerBallThrow(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -3316,29 +3355,29 @@ static void BattleIntroOpponent2SendsOutMonAnimation(void)
#ifdef NONMATCHING
static void BattleIntroOpponent1SendsOutMonAnimation(void)
{
- u32 identity;
+ u32 position;
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- identity = IDENTITY_OPPONENT_MON1;
+ position = B_POSITION_OPPONENT_LEFT;
else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
- identity = IDENTITY_OPPONENT_MON1;
+ position = B_POSITION_OPPONENT_LEFT;
else
- identity = IDENTITY_PLAYER_MON1;
+ position = B_POSITION_PLAYER_LEFT;
}
else
- identity = IDENTITY_OPPONENT_MON1;
+ position = B_POSITION_OPPONENT_LEFT;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankIdentity(gActiveBank) == identity)
+ if (GetBattlerPosition(gActiveBattler) == position)
{
- EmitIntroTrainerBallThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitIntroTrainerBallThrow(0);
+ MarkBattlerForControllerExec(gActiveBattler);
if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS))
{
gBattleMainFunc = BattleIntroOpponent2SendsOutMonAnimation;
@@ -3384,13 +3423,13 @@ _0803B288:\n\
_0803B298:\n\
movs r5, 0x1\n\
_0803B29A:\n\
- ldr r0, =gBattleExecBuffer\n\
+ ldr r0, =gBattleControllerExecFlags\n\
ldr r2, [r0]\n\
cmp r2, 0\n\
bne _0803B2F2\n\
- ldr r0, =gActiveBank\n\
+ ldr r0, =gActiveBattler\n\
strb r2, [r0]\n\
- ldr r1, =gNoOfAllBanks\n\
+ ldr r1, =gBattlersCount\n\
adds r4, r0, 0\n\
ldrb r1, [r1]\n\
cmp r2, r1\n\
@@ -3398,15 +3437,15 @@ _0803B29A:\n\
adds r6, r4, 0\n\
_0803B2B2:\n\
ldrb r0, [r4]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, r5\n\
bne _0803B2D8\n\
movs r0, 0\n\
- bl EmitIntroTrainerBallThrow\n\
+ bl BtlController_EmitIntroTrainerBallThrow\n\
ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
+ bl MarkBattlerForControllerExec\n\
ldr r0, =gBattleTypeFlags\n\
ldr r0, [r0]\n\
ldr r1, =0x00008040\n\
@@ -3417,10 +3456,10 @@ _0803B2D8:\n\
ldrb r0, [r6]\n\
adds r0, 0x1\n\
strb r0, [r6]\n\
- ldr r1, =gNoOfAllBanks\n\
+ ldr r1, =gBattlersCount\n\
lsls r0, 24\n\
lsrs r0, 24\n\
- ldr r4, =gActiveBank\n\
+ ldr r4, =gActiveBattler\n\
ldrb r1, [r1]\n\
cmp r0, r1\n\
bcc _0803B2B2\n\
@@ -3441,18 +3480,18 @@ _0803B2F2:\n\
static void BattleIntroRecordMonsToDex(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
| BATTLE_TYPE_x4000000)))
{
- HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality);
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
}
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
@@ -3461,30 +3500,30 @@ static void BattleIntroRecordMonsToDex(void)
void sub_803B3AC(void) // unused
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
}
static void BattleIntroPrintPlayerSendsOut(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- u8 identity;
+ u8 position;
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- identity = IDENTITY_PLAYER_MON1;
+ position = B_POSITION_PLAYER_LEFT;
else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
- identity = IDENTITY_PLAYER_MON1;
+ position = B_POSITION_PLAYER_LEFT;
else
- identity = IDENTITY_OPPONENT_MON1;
+ position = B_POSITION_OPPONENT_LEFT;
}
else
- identity = IDENTITY_PLAYER_MON1;
+ position = B_POSITION_PLAYER_LEFT;
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
- PrepareStringBattle(STRINGID_INTROSENDOUT, GetBankByIdentity(identity));
+ PrepareStringBattle(STRINGID_INTROSENDOUT, GetBattlerAtPosition(position));
gBattleMainFunc = BattleIntroPlayer1SendsOutMonAnimation;
}
@@ -3492,26 +3531,26 @@ static void BattleIntroPrintPlayerSendsOut(void)
static void BattleIntroPlayer2SendsOutMonAnimation(void)
{
- u32 identity;
+ u32 position;
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- identity = IDENTITY_PLAYER_MON2;
+ position = B_POSITION_PLAYER_RIGHT;
else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
- identity = IDENTITY_PLAYER_MON2;
+ position = B_POSITION_PLAYER_RIGHT;
else
- identity = IDENTITY_OPPONENT_MON2;
+ position = B_POSITION_OPPONENT_RIGHT;
}
else
- identity = IDENTITY_PLAYER_MON2;
+ position = B_POSITION_PLAYER_RIGHT;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankIdentity(gActiveBank) == identity)
+ if (GetBattlerPosition(gActiveBattler) == position)
{
- EmitIntroTrainerBallThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitIntroTrainerBallThrow(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -3524,29 +3563,29 @@ static void BattleIntroPlayer2SendsOutMonAnimation(void)
static void BattleIntroPlayer1SendsOutMonAnimation(void)
{
- u32 identity;
+ u32 position;
if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
- identity = IDENTITY_PLAYER_MON1;
+ position = B_POSITION_PLAYER_LEFT;
else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
{
if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
- identity = IDENTITY_PLAYER_MON1;
+ position = B_POSITION_PLAYER_LEFT;
else
- identity = IDENTITY_OPPONENT_MON1;
+ position = B_POSITION_OPPONENT_LEFT;
}
else
- identity = IDENTITY_PLAYER_MON1;
+ position = B_POSITION_PLAYER_LEFT;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankIdentity(gActiveBank) == identity)
+ if (GetBattlerPosition(gActiveBattler) == position)
{
- EmitIntroTrainerBallThrow(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitIntroTrainerBallThrow(0);
+ MarkBattlerForControllerExec(gActiveBattler);
if (gBattleTypeFlags & (BATTLE_TYPE_MULTI))
{
gBattleMainFunc = BattleIntroPlayer2SendsOutMonAnimation;
@@ -3564,14 +3603,14 @@ static void BattleIntroPlayer1SendsOutMonAnimation(void)
void sub_803B598(void) // unused
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], FALSE);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSwitchInAnim(0, gBattlerPartyIndexes[gActiveBattler], FALSE);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -3589,18 +3628,18 @@ static void TryDoEventsBeforeFirstTurn(void)
s32 j;
u8 effect = 0;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
if (gBattleStruct->switchInAbilitiesCounter == 0)
{
- for (i = 0; i < gNoOfAllBanks; i++)
- gBanksByTurnOrder[i] = i;
- for (i = 0; i < gNoOfAllBanks - 1; i++)
+ for (i = 0; i < gBattlersCount; i++)
+ gBattleTurnOrder[i] = i;
+ for (i = 0; i < gBattlersCount - 1; i++)
{
- for (j = i + 1; j < gNoOfAllBanks; j++)
+ for (j = i + 1; j < gBattlersCount; j++)
{
- if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], TRUE) != 0)
+ if (GetWhoStrikesFirst(gBattleTurnOrder[i], gBattleTurnOrder[j], TRUE) != 0)
SwapTurnOrder(i, j);
}
}
@@ -3612,9 +3651,9 @@ static void TryDoEventsBeforeFirstTurn(void)
return;
}
// check all switch in abilities happening from the fastest mon to slowest
- while (gBattleStruct->switchInAbilitiesCounter < gNoOfAllBanks)
+ while (gBattleStruct->switchInAbilitiesCounter < gBattlersCount)
{
- if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBanksByTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0)
+ if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBattleTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0)
effect++;
gBattleStruct->switchInAbilitiesCounter++;
@@ -3627,9 +3666,9 @@ static void TryDoEventsBeforeFirstTurn(void)
if (AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) != 0)
return;
// check all switch in items having effect from the fastest mon to slowest
- while (gBattleStruct->switchInItemsCounter < gNoOfAllBanks)
+ while (gBattleStruct->switchInItemsCounter < gBattlersCount)
{
- if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBanksByTurnOrder[gBattleStruct->switchInItemsCounter], 0) != 0)
+ if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBattleTurnOrder[gBattleStruct->switchInItemsCounter], 0) != 0)
effect++;
gBattleStruct->switchInItemsCounter++;
@@ -3637,15 +3676,15 @@ static void TryDoEventsBeforeFirstTurn(void)
if (effect)
return;
}
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
*(gBattleStruct->monToSwitchIntoId + i) = 6;
- gActionForBanks[i] = ACTION_INIT_VALUE;
- gChosenMovesByBanks[i] = MOVE_NONE;
+ gChosenActionByBattler[i] = B_ACTION_NONE;
+ gChosenMoveByBattler[i] = MOVE_NONE;
}
TurnValuesCleanUp(FALSE);
SpecialStatusesClear();
- *(&gBattleStruct->field_91) = gAbsentBankFlags;
+ *(&gBattleStruct->field_91) = gAbsentBattlerFlags;
BattleHandleAddTextPrinter(gText_EmptyString3, 0);
gBattleMainFunc = HandleTurnActionSelectionState;
ResetSentPokesToOpponentValue();
@@ -3653,17 +3692,17 @@ static void TryDoEventsBeforeFirstTurn(void)
for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++)
gBattleCommunication[i] = 0;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
gBattleMons[i].status2 &= ~(STATUS2_FLINCHED);
*(&gBattleStruct->turnEffectsTracker) = 0;
- *(&gBattleStruct->turnEffectsBank) = 0;
+ *(&gBattleStruct->turnEffectsBattlerId) = 0;
*(&gBattleStruct->wishPerishSongState) = 0;
- *(&gBattleStruct->wishPerishSongBank) = 0;
+ *(&gBattleStruct->wishPerishSongBattlerId) = 0;
gBattleScripting.atk49_state = 0;
gBattleStruct->faintedActionsState = 0;
- gBattleStruct->turncountersTracker = 0;
- gBattleMoveFlags = 0;
+ gBattleStruct->turnCountersTracker = 0;
+ gMoveResultFlags = 0;
gRandomTurnNumber = Random();
@@ -3678,23 +3717,23 @@ static void HandleEndTurn_ContinueBattle(void)
{
s32 i;
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
gBattleMainFunc = BattleTurnPassed;
for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++)
gBattleCommunication[i] = 0;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
gBattleMons[i].status2 &= ~(STATUS2_FLINCHED);
- if ((gBattleMons[i].status1 & STATUS_SLEEP) && (gBattleMons[i].status2 & STATUS2_MULTIPLETURNS))
+ if ((gBattleMons[i].status1 & STATUS1_SLEEP) && (gBattleMons[i].status2 & STATUS2_MULTIPLETURNS))
CancelMultiTurnMoves(i);
}
gBattleStruct->turnEffectsTracker = 0;
- gBattleStruct->turnEffectsBank = 0;
+ gBattleStruct->turnEffectsBattlerId = 0;
gBattleStruct->wishPerishSongState = 0;
- gBattleStruct->wishPerishSongBank = 0;
- gBattleStruct->turncountersTracker = 0;
- gBattleMoveFlags = 0;
+ gBattleStruct->wishPerishSongBattlerId = 0;
+ gBattleStruct->turnCountersTracker = 0;
+ gMoveResultFlags = 0;
}
}
@@ -3725,7 +3764,7 @@ void BattleTurnPassed(void)
gBattleScripting.animTargetsHit = 0;
gBattleScripting.atk49_state = 0;
gBattleMoveDamage = 0;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
for (i = 0; i < 5; i++)
gBattleCommunication[i] = 0;
@@ -3743,16 +3782,16 @@ void BattleTurnPassed(void)
gBattleStruct->field_DA++;
}
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- gActionForBanks[i] = ACTION_INIT_VALUE;
- gChosenMovesByBanks[i] = MOVE_NONE;
+ gChosenActionByBattler[i] = B_ACTION_NONE;
+ gChosenMoveByBattler[i] = MOVE_NONE;
}
for (i = 0; i < 4; i++)
*(gBattleStruct->monToSwitchIntoId + i) = 6;
- *(&gBattleStruct->field_91) = gAbsentBankFlags;
+ *(&gBattleStruct->field_91) = gAbsentBattlerFlags;
BattleHandleAddTextPrinter(gText_EmptyString3, 0);
gBattleMainFunc = HandleTurnActionSelectionState;
gRandomTurnNumber = Random();
@@ -3769,54 +3808,54 @@ u8 IsRunningFromBattleImpossible(void)
u8 side;
s32 i;
- if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY)
- holdEffect = gEnigmaBerries[gActiveBank].holdEffect;
+ if (gBattleMons[gActiveBattler].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[gActiveBattler].holdEffect;
else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item);
- gStringBank = gActiveBank;
+ gPotentialItemEffectBattler = gActiveBattler;
if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
return 0;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
return 0;
- if (gBattleMons[gActiveBank].ability == ABILITY_RUN_AWAY)
+ if (gBattleMons[gActiveBattler].ability == ABILITY_RUN_AWAY)
return 0;
- side = GetBankSide(gActiveBank);
+ side = GetBattlerSide(gActiveBattler);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (side != GetBankSide(i)
+ if (side != GetBattlerSide(i)
&& gBattleMons[i].ability == ABILITY_SHADOW_TAG)
{
- gBattleScripting.bank = i;
+ gBattleScripting.battler = i;
gLastUsedAbility = gBattleMons[i].ability;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
return 2;
}
- if (side != GetBankSide(i)
- && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE
- && gBattleMons[gActiveBank].type1 != TYPE_FLYING
- && gBattleMons[gActiveBank].type2 != TYPE_FLYING
+ if (side != GetBattlerSide(i)
+ && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE
+ && gBattleMons[gActiveBattler].type1 != TYPE_FLYING
+ && gBattleMons[gActiveBattler].type2 != TYPE_FLYING
&& gBattleMons[i].ability == ABILITY_ARENA_TRAP)
{
- gBattleScripting.bank = i;
+ gBattleScripting.battler = i;
gLastUsedAbility = gBattleMons[i].ability;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
return 2;
}
}
- i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBank, ABILITY_MAGNET_PULL, 0, 0);
- if (i != 0 && (gBattleMons[gActiveBank].type1 == TYPE_STEEL || gBattleMons[gActiveBank].type2 == TYPE_STEEL))
+ i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0);
+ if (i != 0 && (gBattleMons[gActiveBattler].type1 == TYPE_STEEL || gBattleMons[gActiveBattler].type2 == TYPE_STEEL))
{
- gBattleScripting.bank = i - 1;
+ gBattleScripting.battler = i - 1;
gLastUsedAbility = gBattleMons[i - 1].ability;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
return 2;
}
- if ((gBattleMons[gActiveBank].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED))
- || (gStatuses3[gActiveBank] & STATUS3_ROOTED))
+ if ((gBattleMons[gActiveBattler].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED))
+ || (gStatuses3[gActiveBattler] & STATUS3_ROOTED))
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
return 1;
@@ -3829,34 +3868,34 @@ u8 IsRunningFromBattleImpossible(void)
return 0;
}
-void sub_803BDA0(u8 bank)
+void sub_803BDA0(u8 battler)
{
s32 i;
u8 r4;
u8 r1;
- // gBattleStruct->field_60[bank][i]
+ // gBattleStruct->field_60[battler][i]
for (i = 0; i < 3; i++)
- gUnknown_0203CF00[i] = *(bank * 3 + i + (u8*)(gBattleStruct->field_60));
+ gUnknown_0203CF00[i] = *(battler * 3 + i + (u8*)(gBattleStruct->field_60));
- r4 = pokemon_order_func(gBattlePartyID[bank]);
- r1 = pokemon_order_func(*(gBattleStruct->monToSwitchIntoId + bank));
+ r4 = pokemon_order_func(gBattlerPartyIndexes[battler]);
+ r1 = pokemon_order_func(*(gBattleStruct->monToSwitchIntoId + battler));
sub_81B8FB0(r4, r1);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
for (i = 0; i < 3; i++)
{
- *(bank * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
- *((bank ^ BIT_MON) * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
+ *(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
+ *(BATTLE_PARTNER(battler) * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
}
}
else
{
for (i = 0; i < 3; i++)
{
- *(bank * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
+ *(battler * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
}
}
}
@@ -3879,235 +3918,235 @@ static void HandleTurnActionSelectionState(void)
s32 i;
gBattleCommunication[ACTIONS_CONFIRMED_COUNT] = 0;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- u8 identity = GetBankIdentity(gActiveBank);
- switch (gBattleCommunication[gActiveBank])
+ u8 position = GetBattlerPosition(gActiveBattler);
+ switch (gBattleCommunication[gActiveBattler])
{
case STATE_TURN_START_RECORD: // recorded battle related on start of every turn
- RecordedBattle_CopyBankMoves();
- gBattleCommunication[gActiveBank] = STATE_BEFORE_ACTION_CHOSEN;
+ RecordedBattle_CopyBattlerMoves();
+ gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
break;
case STATE_BEFORE_ACTION_CHOSEN: // choose an action
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = 6;
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI
- || !(identity & BIT_MON)
- || gBattleStruct->field_91 & gBitTable[GetBankByIdentity(identity ^ BIT_MON)]
- || gBattleCommunication[GetBankByIdentity(identity ^ BIT_MON)] == 5)
+ || !(position & BIT_FLANK)
+ || gBattleStruct->field_91 & gBitTable[GetBattlerAtPosition(BATTLE_PARTNER(position))]
+ || gBattleCommunication[GetBattlerAtPosition(BATTLE_PARTNER(position))] == 5)
{
- if (gBattleStruct->field_91 & gBitTable[gActiveBank])
+ if (gBattleStruct->field_91 & gBitTable[gActiveBattler])
{
- gActionForBanks[gActiveBank] = ACTION_NOTHING_FAINTED;
+ gChosenActionByBattler[gActiveBattler] = B_ACTION_NOTHING_FAINTED;
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED;
+ gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED;
else
- gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
}
else
{
- if (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS
- || gBattleMons[gActiveBank].status2 & STATUS2_RECHARGE)
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS
+ || gBattleMons[gActiveBattler].status2 & STATUS2_RECHARGE)
{
- gActionForBanks[gActiveBank] = ACTION_USE_MOVE;
- gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ gChosenActionByBattler[gActiveBattler] = B_ACTION_USE_MOVE;
+ gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
}
else
{
- EmitChooseAction(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
- MarkBufferBankForExecution(gActiveBank);
- gBattleCommunication[gActiveBank]++;
+ BtlController_EmitChooseAction(0, gChosenActionByBattler[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattleCommunication[gActiveBattler]++;
}
}
}
break;
case STATE_WAIT_ACTION_CHOSEN: // try to perform an action
- if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
{
- RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]);
- gActionForBanks[gActiveBank] = gBattleBufferB[gActiveBank][1];
+ RecordedBattle_SetBattlerAction(gActiveBattler, gBattleBufferB[gActiveBattler][1]);
+ gChosenActionByBattler[gActiveBattler] = gBattleBufferB[gActiveBattler][1];
- switch (gBattleBufferB[gActiveBank][1])
+ switch (gBattleBufferB[gActiveBattler][1])
{
- case ACTION_USE_MOVE:
+ case B_ACTION_USE_MOVE:
if (AreAllMovesUnusable())
{
- gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
- *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
- *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
- *(gBattleStruct->moveTarget + gActiveBank) = gBattleBufferB[gActiveBank][3];
+ gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ *(gBattleStruct->moveTarget + gActiveBattler) = gBattleBufferB[gActiveBattler][3];
return;
}
- else if (gDisableStructs[gActiveBank].encoredMove != 0)
+ else if (gDisableStructs[gActiveBattler].encoredMove != 0)
{
- gChosenMovesByBanks[gActiveBank] = gDisableStructs[gActiveBank].encoredMove;
- *(gBattleStruct->chosenMovePositions + gActiveBank) = gDisableStructs[gActiveBank].encoredMovePos;
- gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ gChosenMoveByBattler[gActiveBattler] = gDisableStructs[gActiveBattler].encoredMove;
+ *(gBattleStruct->chosenMovePositions + gActiveBattler) = gDisableStructs[gActiveBattler].encoredMovePos;
+ gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
return;
}
else
{
struct ChooseMoveStruct moveInfo;
- moveInfo.species = gBattleMons[gActiveBank].species;
- moveInfo.monType1 = gBattleMons[gActiveBank].type1;
- moveInfo.monType2 = gBattleMons[gActiveBank].type2;
+ moveInfo.species = gBattleMons[gActiveBattler].species;
+ moveInfo.monType1 = gBattleMons[gActiveBattler].type1;
+ moveInfo.monType2 = gBattleMons[gActiveBattler].type2;
for (i = 0; i < 4; i++)
{
- moveInfo.moves[i] = gBattleMons[gActiveBank].moves[i];
- moveInfo.currentPp[i] = gBattleMons[gActiveBank].pp[i];
+ moveInfo.moves[i] = gBattleMons[gActiveBattler].moves[i];
+ moveInfo.currentPp[i] = gBattleMons[gActiveBattler].pp[i];
moveInfo.maxPp[i] = CalculatePPWithBonus(
- gBattleMons[gActiveBank].moves[i],
- gBattleMons[gActiveBank].ppBonuses,
+ gBattleMons[gActiveBattler].moves[i],
+ gBattleMons[gActiveBattler].ppBonuses,
i);
}
- EmitChooseMove(0, (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) != 0, FALSE, &moveInfo);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitChooseMove(0, (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) != 0, FALSE, &moveInfo);
+ MarkBattlerForControllerExec(gActiveBattler);
}
break;
- case ACTION_USE_ITEM:
+ case B_ACTION_USE_ITEM:
if (gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_FRONTIER_NO_PYRAMID
| BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_x2000000))
{
- RecordedBattle_ClearBankAction(gActiveBank, 1);
- gSelectionBattleScripts[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed;
- gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
- *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
- *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
+ RecordedBattle_ClearBattlerAction(gActiveBattler, 1);
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_ActionSelectionItemsCantBeUsed;
+ gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN;
return;
}
else
{
- EmitChooseItem(0, gBattleStruct->field_60[gActiveBank]);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitChooseItem(0, gBattleStruct->field_60[gActiveBattler]);
+ MarkBattlerForControllerExec(gActiveBattler);
}
break;
- case ACTION_SWITCH:
- *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank];
- if (gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)
+ case B_ACTION_SWITCH:
+ *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)
|| gBattleTypeFlags & BATTLE_TYPE_ARENA
- || gStatuses3[gActiveBank] & STATUS3_ROOTED)
+ || gStatuses3[gActiveBattler] & STATUS3_ROOTED)
{
- EmitChoosePokemon(0, 2, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBank]);
+ BtlController_EmitChoosePokemon(0, 2, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
}
- else if ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_SHADOW_TAG, 0, 0))
- || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_ARENA_TRAP, 0, 0))
- && gBattleMons[gActiveBank].type1 != TYPE_FLYING
- && gBattleMons[gActiveBank].type2 != TYPE_FLYING
- && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE)
- || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBank, ABILITY_MAGNET_PULL, 0, 0))
- && (gBattleMons[gActiveBank].type1 == TYPE_STEEL
- || gBattleMons[gActiveBank].type2 == TYPE_STEEL)))
+ else if ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_SHADOW_TAG, 0, 0))
+ || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBattler, ABILITY_ARENA_TRAP, 0, 0))
+ && gBattleMons[gActiveBattler].type1 != TYPE_FLYING
+ && gBattleMons[gActiveBattler].type2 != TYPE_FLYING
+ && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE)
+ || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBattler, ABILITY_MAGNET_PULL, 0, 0))
+ && (gBattleMons[gActiveBattler].type1 == TYPE_STEEL
+ || gBattleMons[gActiveBattler].type2 == TYPE_STEEL)))
{
- EmitChoosePokemon(0, ((i - 1) << 4) | 4, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBank]);
+ BtlController_EmitChoosePokemon(0, ((i - 1) << 4) | 4, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBattler]);
}
else
{
- if (gActiveBank == 2 && gActionForBanks[0] == ACTION_SWITCH)
- EmitChoosePokemon(0, 0, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]);
- else if (gActiveBank == 3 && gActionForBanks[1] == ACTION_SWITCH)
- EmitChoosePokemon(0, 0, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]);
+ if (gActiveBattler == 2 && gChosenActionByBattler[0] == B_ACTION_SWITCH)
+ BtlController_EmitChoosePokemon(0, 0, *(gBattleStruct->monToSwitchIntoId + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ else if (gActiveBattler == 3 && gChosenActionByBattler[1] == B_ACTION_SWITCH)
+ BtlController_EmitChoosePokemon(0, 0, *(gBattleStruct->monToSwitchIntoId + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
else
- EmitChoosePokemon(0, 0, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBank]);
+ BtlController_EmitChoosePokemon(0, 0, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
}
- MarkBufferBankForExecution(gActiveBank);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
- case ACTION_SAFARI_ZONE_BALL:
+ case B_ACTION_SAFARI_BALL:
if (IsPlayerPartyAndPokemonStorageFull())
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_PrintFullBox;
- gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
- *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
- *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_PrintFullBox;
+ gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN;
return;
}
break;
- case ACTION_POKEBLOCK_CASE:
- EmitChooseItem(0, gBattleStruct->field_60[gActiveBank]);
- MarkBufferBankForExecution(gActiveBank);
+ case B_ACTION_SAFARI_POKEBLOCK:
+ BtlController_EmitChooseItem(0, gBattleStruct->field_60[gActiveBattler]);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
- case ACTION_CANCEL_PARTNER:
- gBattleCommunication[gActiveBank] = 7;
- gBattleCommunication[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] = 1;
- RecordedBattle_ClearBankAction(gActiveBank, 1);
- if (gBattleMons[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].status2 & STATUS2_MULTIPLETURNS
- || gBattleMons[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].status2 & STATUS2_RECHARGE)
+ case B_ACTION_CANCEL_PARTNER:
+ gBattleCommunication[gActiveBattler] = 7;
+ gBattleCommunication[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))] = 1;
+ RecordedBattle_ClearBattlerAction(gActiveBattler, 1);
+ if (gBattleMons[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))].status2 & STATUS2_MULTIPLETURNS
+ || gBattleMons[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))].status2 & STATUS2_RECHARGE)
{
- EmitCmd50(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitCmd50(0);
+ MarkBattlerForControllerExec(gActiveBattler);
return;
}
- else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_SWITCH)
+ else if (gChosenActionByBattler[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))] == B_ACTION_SWITCH)
{
- RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 2);
+ RecordedBattle_ClearBattlerAction(GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))), 2);
}
- else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_RUN)
+ else if (gChosenActionByBattler[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))] == B_ACTION_RUN)
{
- RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1);
+ RecordedBattle_ClearBattlerAction(GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))), 1);
}
- else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_USE_MOVE
- && (gProtectStructs[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].onlyStruggle
- || gDisableStructs[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].encoredMove))
+ else if (gChosenActionByBattler[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))] == B_ACTION_USE_MOVE
+ && (gProtectStructs[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))].onlyStruggle
+ || gDisableStructs[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))].encoredMove))
{
- RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1);
+ RecordedBattle_ClearBattlerAction(GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))), 1);
}
else if (gBattleTypeFlags & BATTLE_TYPE_PALACE
- && gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_USE_MOVE)
+ && gChosenActionByBattler[GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler)))] == B_ACTION_USE_MOVE)
{
gRngValue = gBattlePalaceMoveSelectionRngValue;
- RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1);
+ RecordedBattle_ClearBattlerAction(GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))), 1);
}
else
{
- RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 3);
+ RecordedBattle_ClearBattlerAction(GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gActiveBattler))), 3);
}
- EmitCmd50(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitCmd50(0);
+ MarkBattlerForControllerExec(gActiveBattler);
return;
}
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
&& gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000)
- && gBattleBufferB[gActiveBank][1] == ACTION_RUN)
+ && gBattleBufferB[gActiveBattler][1] == B_ACTION_RUN)
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_AskIfWantsToForfeitMatch;
- gBattleCommunication[gActiveBank] = 8;
- *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
- *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_AskIfWantsToForfeitMatch;
+ gBattleCommunication[gActiveBattler] = 8;
+ *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN;
return;
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
- && gBattleBufferB[gActiveBank][1] == ACTION_RUN)
+ && gBattleBufferB[gActiveBattler][1] == B_ACTION_RUN)
{
BattleScriptExecute(BattleScript_PrintCantRunFromTrainer);
- gBattleCommunication[gActiveBank] = 1;
+ gBattleCommunication[gActiveBattler] = 1;
}
else if (IsRunningFromBattleImpossible()
- && gBattleBufferB[gActiveBank][1] == ACTION_RUN)
+ && gBattleBufferB[gActiveBattler][1] == B_ACTION_RUN)
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_PrintCantEscapeFromBattle;
- gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
- *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
- *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_PrintCantEscapeFromBattle;
+ gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_BEFORE_ACTION_CHOSEN;
return;
}
else
{
- gBattleCommunication[gActiveBank]++;
+ gBattleCommunication[gActiveBattler]++;
}
}
break;
case STATE_WAIT_ACTION_CASE_CHOSEN:
- if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
{
- switch (gActionForBanks[gActiveBank])
+ switch (gChosenActionByBattler[gActiveBattler])
{
- case ACTION_USE_MOVE:
- switch (gBattleBufferB[gActiveBank][1])
+ case B_ACTION_USE_MOVE:
+ switch (gBattleBufferB[gActiveBattler][1])
{
case 3:
case 4:
@@ -4116,186 +4155,186 @@ static void HandleTurnActionSelectionState(void)
case 7:
case 8:
case 9:
- gActionForBanks[gActiveBank] = gBattleBufferB[gActiveBank][1];
+ gChosenActionByBattler[gActiveBattler] = gBattleBufferB[gActiveBattler][1];
return;
case 15:
- gActionForBanks[gActiveBank] = ACTION_SWITCH;
+ gChosenActionByBattler[gActiveBattler] = B_ACTION_SWITCH;
sub_803CDF8();
return;
default:
sub_818603C(2);
- if ((gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8)) == 0xFFFF)
+ if ((gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8)) == 0xFFFF)
{
- gBattleCommunication[gActiveBank] = 1;
- RecordedBattle_ClearBankAction(gActiveBank, 1);
+ gBattleCommunication[gActiveBattler] = 1;
+ RecordedBattle_ClearBattlerAction(gActiveBattler, 1);
}
else if (TrySetCantSelectMoveBattleScript())
{
- RecordedBattle_ClearBankAction(gActiveBank, 1);
- gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
- *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
- gBattleBufferB[gActiveBank][1] = 0;
- *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_WAIT_ACTION_CHOSEN;
+ RecordedBattle_ClearBattlerAction(gActiveBattler, 1);
+ gBattleCommunication[gActiveBattler] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBattler) = FALSE;
+ gBattleBufferB[gActiveBattler][1] = 0;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBattler) = STATE_WAIT_ACTION_CHOSEN;
return;
}
else
{
if (!(gBattleTypeFlags & BATTLE_TYPE_PALACE))
{
- RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][2]);
- RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][3]);
+ RecordedBattle_SetBattlerAction(gActiveBattler, gBattleBufferB[gActiveBattler][2]);
+ RecordedBattle_SetBattlerAction(gActiveBattler, gBattleBufferB[gActiveBattler][3]);
}
- *(gBattleStruct->chosenMovePositions + gActiveBank) = gBattleBufferB[gActiveBank][2];
- gChosenMovesByBanks[gActiveBank] = gBattleMons[gActiveBank].moves[*(gBattleStruct->chosenMovePositions + gActiveBank)];
- *(gBattleStruct->moveTarget + gActiveBank) = gBattleBufferB[gActiveBank][3];
- gBattleCommunication[gActiveBank]++;
+ *(gBattleStruct->chosenMovePositions + gActiveBattler) = gBattleBufferB[gActiveBattler][2];
+ gChosenMoveByBattler[gActiveBattler] = gBattleMons[gActiveBattler].moves[*(gBattleStruct->chosenMovePositions + gActiveBattler)];
+ *(gBattleStruct->moveTarget + gActiveBattler) = gBattleBufferB[gActiveBattler][3];
+ gBattleCommunication[gActiveBattler]++;
}
break;
}
break;
- case ACTION_USE_ITEM:
- if ((gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)) == 0)
+ case B_ACTION_USE_ITEM:
+ if ((gBattleBufferB[gActiveBattler][1] | (gBattleBufferB[gActiveBattler][2] << 8)) == 0)
{
- gBattleCommunication[gActiveBank] = 1;
+ gBattleCommunication[gActiveBattler] = 1;
}
else
{
- gLastUsedItem = (gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8));
- gBattleCommunication[gActiveBank]++;
+ gLastUsedItem = (gBattleBufferB[gActiveBattler][1] | (gBattleBufferB[gActiveBattler][2] << 8));
+ gBattleCommunication[gActiveBattler]++;
}
break;
- case ACTION_SWITCH:
- if (gBattleBufferB[gActiveBank][1] == 6)
+ case B_ACTION_SWITCH:
+ if (gBattleBufferB[gActiveBattler][1] == 6)
{
- gBattleCommunication[gActiveBank] = 1;
- RecordedBattle_ClearBankAction(gActiveBank, 1);
+ gBattleCommunication[gActiveBattler] = 1;
+ RecordedBattle_ClearBattlerAction(gActiveBattler, 1);
}
else
{
sub_803CDF8();
- gBattleCommunication[gActiveBank]++;
+ gBattleCommunication[gActiveBattler]++;
}
break;
- case ACTION_RUN:
+ case B_ACTION_RUN:
gHitMarker |= HITMARKER_RUN;
- gBattleCommunication[gActiveBank]++;
+ gBattleCommunication[gActiveBattler]++;
break;
- case ACTION_WATCHES_CAREFULLY:
- gBattleCommunication[gActiveBank]++;
+ case B_ACTION_SAFARI_WATCH_CAREFULLY:
+ gBattleCommunication[gActiveBattler]++;
break;
- case ACTION_SAFARI_ZONE_BALL:
- gBattleCommunication[gActiveBank]++;
+ case B_ACTION_SAFARI_BALL:
+ gBattleCommunication[gActiveBattler]++;
break;
- case ACTION_POKEBLOCK_CASE:
- if ((gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)) != 0)
+ case B_ACTION_SAFARI_POKEBLOCK:
+ if ((gBattleBufferB[gActiveBattler][1] | (gBattleBufferB[gActiveBattler][2] << 8)) != 0)
{
- gBattleCommunication[gActiveBank]++;
+ gBattleCommunication[gActiveBattler]++;
}
else
{
- gBattleCommunication[gActiveBank] = STATE_BEFORE_ACTION_CHOSEN;
+ gBattleCommunication[gActiveBattler] = STATE_BEFORE_ACTION_CHOSEN;
}
break;
- case ACTION_GO_NEAR:
- gBattleCommunication[gActiveBank]++;
+ case B_ACTION_SAFARI_GO_NEAR:
+ gBattleCommunication[gActiveBattler]++;
break;
- case ACTION_SAFARI_ZONE_RUN:
+ case B_ACTION_SAFARI_RUN:
gHitMarker |= HITMARKER_RUN;
- gBattleCommunication[gActiveBank]++;
+ gBattleCommunication[gActiveBattler]++;
break;
- case ACTION_9:
- gBattleCommunication[gActiveBank]++;
+ case B_ACTION_UNKNOWN9:
+ gBattleCommunication[gActiveBattler]++;
break;
}
}
break;
case STATE_WAIT_ACTION_CONFIRMED_STANDBY:
- if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
{
i = (sub_803CDB8() != 0);
if (((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) != BATTLE_TYPE_DOUBLE)
- || (identity & BIT_MON)
- || (*(&gBattleStruct->field_91) & gBitTable[GetBankByIdentity(identity ^ BIT_MON)]))
+ || (position & BIT_FLANK)
+ || (*(&gBattleStruct->field_91) & gBitTable[GetBattlerAtPosition(position ^ BIT_FLANK)]))
{
- EmitLinkStandbyMsg(0, 0, i);
+ BtlController_EmitLinkStandbyMsg(0, 0, i);
}
else
{
- EmitLinkStandbyMsg(0, 1, i);
+ BtlController_EmitLinkStandbyMsg(0, 1, i);
}
- MarkBufferBankForExecution(gActiveBank);
- gBattleCommunication[gActiveBank]++;
+ MarkBattlerForControllerExec(gActiveBattler);
+ gBattleCommunication[gActiveBattler]++;
}
break;
case STATE_WAIT_ACTION_CONFIRMED:
- if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
{
gBattleCommunication[ACTIONS_CONFIRMED_COUNT]++;
}
break;
case STATE_SELECTION_SCRIPT:
- if (*(gBattleStruct->selectionScriptFinished + gActiveBank))
+ if (*(gBattleStruct->selectionScriptFinished + gActiveBattler))
{
- gBattleCommunication[gActiveBank] = *(gBattleStruct->stateIdAfterSelScript + gActiveBank);
+ gBattleCommunication[gActiveBattler] = *(gBattleStruct->stateIdAfterSelScript + gActiveBattler);
}
else
{
- gBankAttacker = gActiveBank;
- gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBank];
- if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ gBattlerAttacker = gActiveBattler;
+ gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBattler];
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
{
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
- gSelectionBattleScripts[gActiveBank] = gBattlescriptCurrInstr;
+ gSelectionBattleScripts[gActiveBattler] = gBattlescriptCurrInstr;
}
break;
case STATE_WAIT_SET_BEFORE_ACTION:
- if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
{
- gBattleCommunication[gActiveBank] = 1;
+ gBattleCommunication[gActiveBattler] = 1;
}
break;
case STATE_SELECTION_SCRIPT_MAY_RUN:
- if (*(gBattleStruct->selectionScriptFinished + gActiveBank))
+ if (*(gBattleStruct->selectionScriptFinished + gActiveBattler))
{
- if (gBattleBufferB[gActiveBank][1] == 13)
+ if (gBattleBufferB[gActiveBattler][1] == 13)
{
gHitMarker |= HITMARKER_RUN;
- gActionForBanks[gActiveBank] = ACTION_RUN;
- gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ gChosenActionByBattler[gActiveBattler] = B_ACTION_RUN;
+ gBattleCommunication[gActiveBattler] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
}
else
{
- RecordedBattle_ClearBankAction(gActiveBank, 1);
- gBattleCommunication[gActiveBank] = *(gBattleStruct->stateIdAfterSelScript + gActiveBank);
+ RecordedBattle_ClearBattlerAction(gActiveBattler, 1);
+ gBattleCommunication[gActiveBattler] = *(gBattleStruct->stateIdAfterSelScript + gActiveBattler);
}
}
else
{
- gBankAttacker = gActiveBank;
- gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBank];
- if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ gBattlerAttacker = gActiveBattler;
+ gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBattler];
+ if (!(gBattleControllerExecFlags & ((gBitTable[gActiveBattler]) | (0xF0000000) | (gBitTable[gActiveBattler] << 4) | (gBitTable[gActiveBattler] << 8) | (gBitTable[gActiveBattler] << 0xC))))
{
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
- gSelectionBattleScripts[gActiveBank] = gBattlescriptCurrInstr;
+ gSelectionBattleScripts[gActiveBattler] = gBattlescriptCurrInstr;
}
break;
}
}
// check if everyone chose actions
- if (gBattleCommunication[ACTIONS_CONFIRMED_COUNT] == gNoOfAllBanks)
+ if (gBattleCommunication[ACTIONS_CONFIRMED_COUNT] == gBattlersCount)
{
sub_818603C(1);
- gBattleMainFunc = SetActionsAndBanksTurnOrder;
+ gBattleMainFunc = SetActionsAndBattlersTurnOrder;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gActionForBanks[i] == ACTION_SWITCH)
+ if (gChosenActionByBattler[i] == B_ACTION_SWITCH)
sub_80571DC(i, *(gBattleStruct->monToSwitchIntoId + i));
}
}
@@ -4306,13 +4345,13 @@ static bool8 sub_803CDB8(void)
{
s32 i, var;
- for (var = 0, i = 0; i < gNoOfAllBanks; i++)
+ for (var = 0, i = 0; i < gBattlersCount; i++)
{
if (gBattleCommunication[i] == 5)
var++;
}
- if (var + 1 == gNoOfAllBanks)
+ if (var + 1 == gBattlersCount)
return TRUE;
else
return FALSE;
@@ -4320,18 +4359,18 @@ static bool8 sub_803CDB8(void)
static void sub_803CDF8(void)
{
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = gBattleBufferB[gActiveBank][1];
- RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]);
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = gBattleBufferB[gActiveBattler][1];
+ RecordedBattle_SetBattlerAction(gActiveBattler, gBattleBufferB[gActiveBattler][1]);
if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
- *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0);
- *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBank][3];
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3];
- *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
- *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4;
- *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBank][3];
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3];
}
}
@@ -4341,177 +4380,177 @@ void SwapTurnOrder(u8 id1, u8 id2)
gActionsByTurnOrder[id1] = gActionsByTurnOrder[id2];
gActionsByTurnOrder[id2] = temp;
- temp = gBanksByTurnOrder[id1];
- gBanksByTurnOrder[id1] = gBanksByTurnOrder[id2];
- gBanksByTurnOrder[id2] = temp;
+ temp = gBattleTurnOrder[id1];
+ gBattleTurnOrder[id1] = gBattleTurnOrder[id2];
+ gBattleTurnOrder[id2] = temp;
}
-u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves)
+u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves)
{
u8 strikesFirst = 0;
- u8 speedMultiplierBank1 = 0, speedMultiplierBank2 = 0;
- u32 speedBank1 = 0, speedBank2 = 0;
+ u8 speedMultiplierBattler1 = 0, speedMultiplierBattler2 = 0;
+ u32 speedBattler1 = 0, speedBattler2 = 0;
u8 holdEffect = 0;
u8 holdEffectParam = 0;
- u16 moveBank1 = 0, moveBank2 = 0;
+ u16 moveBattler1 = 0, moveBattler2 = 0;
if (WEATHER_HAS_EFFECT)
{
- if ((gBattleMons[bank1].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
- || (gBattleMons[bank1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
- speedMultiplierBank1 = 2;
+ if ((gBattleMons[battler1].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
+ || (gBattleMons[battler1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
+ speedMultiplierBattler1 = 2;
else
- speedMultiplierBank1 = 1;
+ speedMultiplierBattler1 = 1;
- if ((gBattleMons[bank2].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
- || (gBattleMons[bank2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
- speedMultiplierBank2 = 2;
+ if ((gBattleMons[battler2].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
+ || (gBattleMons[battler2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
+ speedMultiplierBattler2 = 2;
else
- speedMultiplierBank2 = 1;
+ speedMultiplierBattler2 = 1;
}
else
{
- speedMultiplierBank1 = 1;
- speedMultiplierBank2 = 1;
+ speedMultiplierBattler1 = 1;
+ speedMultiplierBattler2 = 1;
}
- speedBank1 = (gBattleMons[bank1].speed * speedMultiplierBank1)
- * (gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][0])
- / (gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][1]);
+ speedBattler1 = (gBattleMons[battler1].speed * speedMultiplierBattler1)
+ * (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][0])
+ / (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][1]);
- if (gBattleMons[bank1].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[battler1].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[bank1].holdEffect;
- holdEffectParam = gEnigmaBerries[bank1].holdEffectParam;
+ holdEffect = gEnigmaBerries[battler1].holdEffect;
+ holdEffectParam = gEnigmaBerries[battler1].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[bank1].item);
- holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank1].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[battler1].item);
+ holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[battler1].item);
}
// badge boost
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
&& FlagGet(FLAG_BADGE03_GET)
- && GetBankSide(bank1) == SIDE_PLAYER)
+ && GetBattlerSide(battler1) == B_SIDE_PLAYER)
{
- speedBank1 = (speedBank1 * 110) / 100;
+ speedBattler1 = (speedBattler1 * 110) / 100;
}
if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
- speedBank1 /= 2;
+ speedBattler1 /= 2;
- if (gBattleMons[bank1].status1 & STATUS_PARALYSIS)
- speedBank1 /= 4;
+ if (gBattleMons[battler1].status1 & STATUS1_PARALYSIS)
+ speedBattler1 /= 4;
if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
- speedBank1 = UINT_MAX;
+ speedBattler1 = UINT_MAX;
- // check second bank's speed
+ // check second battlerId's speed
- speedBank2 = (gBattleMons[bank2].speed * speedMultiplierBank2)
- * (gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][0])
- / (gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][1]);
+ speedBattler2 = (gBattleMons[battler2].speed * speedMultiplierBattler2)
+ * (gStatStageRatios[gBattleMons[battler2].statStages[STAT_SPEED]][0])
+ / (gStatStageRatios[gBattleMons[battler2].statStages[STAT_SPEED]][1]);
- if (gBattleMons[bank2].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[battler2].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[bank2].holdEffect;
- holdEffectParam = gEnigmaBerries[bank2].holdEffectParam;
+ holdEffect = gEnigmaBerries[battler2].holdEffect;
+ holdEffectParam = gEnigmaBerries[battler2].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[bank2].item);
- holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank2].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[battler2].item);
+ holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[battler2].item);
}
// badge boost
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
&& FlagGet(FLAG_BADGE03_GET)
- && GetBankSide(bank2) == SIDE_PLAYER)
+ && GetBattlerSide(battler2) == B_SIDE_PLAYER)
{
- speedBank2 = (speedBank2 * 110) / 100;
+ speedBattler2 = (speedBattler2 * 110) / 100;
}
if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
- speedBank2 /= 2;
+ speedBattler2 /= 2;
- if (gBattleMons[bank2].status1 & STATUS_PARALYSIS)
- speedBank2 /= 4;
+ if (gBattleMons[battler2].status1 & STATUS1_PARALYSIS)
+ speedBattler2 /= 4;
if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
- speedBank2 = UINT_MAX;
+ speedBattler2 = UINT_MAX;
if (ignoreChosenMoves)
{
- moveBank1 = MOVE_NONE;
- moveBank2 = MOVE_NONE;
+ moveBattler1 = MOVE_NONE;
+ moveBattler2 = MOVE_NONE;
}
else
{
- if (gActionForBanks[bank1] == ACTION_USE_MOVE)
+ if (gChosenActionByBattler[battler1] == B_ACTION_USE_MOVE)
{
- if (gProtectStructs[bank1].onlyStruggle)
- moveBank1 = MOVE_STRUGGLE;
+ if (gProtectStructs[battler1].onlyStruggle)
+ moveBattler1 = MOVE_STRUGGLE;
else
- moveBank1 = gBattleMons[bank1].moves[*(gBattleStruct->chosenMovePositions + bank1)];
+ moveBattler1 = gBattleMons[battler1].moves[*(gBattleStruct->chosenMovePositions + battler1)];
}
else
- moveBank1 = MOVE_NONE;
+ moveBattler1 = MOVE_NONE;
- if (gActionForBanks[bank2] == ACTION_USE_MOVE)
+ if (gChosenActionByBattler[battler2] == B_ACTION_USE_MOVE)
{
- if (gProtectStructs[bank2].onlyStruggle)
- moveBank2 = MOVE_STRUGGLE;
+ if (gProtectStructs[battler2].onlyStruggle)
+ moveBattler2 = MOVE_STRUGGLE;
else
- moveBank2 = gBattleMons[bank2].moves[*(gBattleStruct->chosenMovePositions + bank2)];
+ moveBattler2 = gBattleMons[battler2].moves[*(gBattleStruct->chosenMovePositions + battler2)];
}
else
- moveBank2 = MOVE_NONE;
+ moveBattler2 = MOVE_NONE;
}
// both move priorities are different than 0
- if (gBattleMoves[moveBank1].priority != 0 || gBattleMoves[moveBank2].priority != 0)
+ if (gBattleMoves[moveBattler1].priority != 0 || gBattleMoves[moveBattler2].priority != 0)
{
// both priorities are the same
- if (gBattleMoves[moveBank1].priority == gBattleMoves[moveBank2].priority)
+ if (gBattleMoves[moveBattler1].priority == gBattleMoves[moveBattler2].priority)
{
- if (speedBank1 == speedBank2 && Random() & 1)
+ if (speedBattler1 == speedBattler2 && Random() & 1)
strikesFirst = 2; // same speeds, same priorities
- else if (speedBank1 < speedBank2)
- strikesFirst = 1; // bank2 has more speed
+ else if (speedBattler1 < speedBattler2)
+ strikesFirst = 1; // battler2 has more speed
- // else bank1 has more speed
+ // else battler1 has more speed
}
- else if (gBattleMoves[moveBank1].priority < gBattleMoves[moveBank2].priority)
- strikesFirst = 1; // bank2's move has greater priority
+ else if (gBattleMoves[moveBattler1].priority < gBattleMoves[moveBattler2].priority)
+ strikesFirst = 1; // battler2's move has greater priority
- // else bank1's move has greater priority
+ // else battler1's move has greater priority
}
// both priorities are equal to 0
else
{
- if (speedBank1 == speedBank2 && Random() & 1)
+ if (speedBattler1 == speedBattler2 && Random() & 1)
strikesFirst = 2; // same speeds, same priorities
- else if (speedBank1 < speedBank2)
- strikesFirst = 1; // bank2 has more speed
+ else if (speedBattler1 < speedBattler2)
+ strikesFirst = 1; // battler2 has more speed
- // else bank1 has more speed
+ // else battler1 has more speed
}
return strikesFirst;
}
-static void SetActionsAndBanksTurnOrder(void)
+static void SetActionsAndBattlersTurnOrder(void)
{
s32 var = 0;
s32 i, j;
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
- gBanksByTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gChosenActionByBattler[gActiveBattler];
+ gBattleTurnOrder[var] = gActiveBattler;
var++;
}
}
@@ -4519,9 +4558,9 @@ static void SetActionsAndBanksTurnOrder(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN)
{
var = 5;
break;
@@ -4530,68 +4569,68 @@ static void SetActionsAndBanksTurnOrder(void)
}
else
{
- if (gActionForBanks[0] == ACTION_RUN)
+ if (gChosenActionByBattler[0] == B_ACTION_RUN)
{
- gActiveBank = 0;
+ gActiveBattler = 0;
var = 5;
}
- if (gActionForBanks[2] == ACTION_RUN)
+ if (gChosenActionByBattler[2] == B_ACTION_RUN)
{
- gActiveBank = 2;
+ gActiveBattler = 2;
var = 5;
}
}
if (var == 5)
{
- gActionsByTurnOrder[0] = gActionForBanks[gActiveBank];
- gBanksByTurnOrder[0] = gActiveBank;
+ gActionsByTurnOrder[0] = gChosenActionByBattler[gActiveBattler];
+ gBattleTurnOrder[0] = gActiveBattler;
var = 1;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (i != gActiveBank)
+ if (i != gActiveBattler)
{
- gActionsByTurnOrder[var] = gActionForBanks[i];
- gBanksByTurnOrder[var] = i;
+ gActionsByTurnOrder[var] = gChosenActionByBattler[i];
+ gBattleTurnOrder[var] = i;
var++;
}
}
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
- gBattleStruct->focusPunchBank = 0;
+ gBattleStruct->focusPunchBattlerId = 0;
return;
}
else
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gActionForBanks[gActiveBank] == ACTION_USE_ITEM || gActionForBanks[gActiveBank] == ACTION_SWITCH)
+ if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH)
{
- gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
- gBanksByTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gChosenActionByBattler[gActiveBattler];
+ gBattleTurnOrder[var] = gActiveBattler;
var++;
}
}
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gActionForBanks[gActiveBank] != ACTION_USE_ITEM && gActionForBanks[gActiveBank] != ACTION_SWITCH)
+ if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH)
{
- gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
- gBanksByTurnOrder[var] = gActiveBank;
+ gActionsByTurnOrder[var] = gChosenActionByBattler[gActiveBattler];
+ gBattleTurnOrder[var] = gActiveBattler;
var++;
}
}
- for (i = 0; i < gNoOfAllBanks - 1; i++)
+ for (i = 0; i < gBattlersCount - 1; i++)
{
- for (j = i + 1; j < gNoOfAllBanks; j++)
+ for (j = i + 1; j < gBattlersCount; j++)
{
- u8 bank1 = gBanksByTurnOrder[i];
- u8 bank2 = gBanksByTurnOrder[j];
- if (gActionsByTurnOrder[i] != ACTION_USE_ITEM
- && gActionsByTurnOrder[j] != ACTION_USE_ITEM
- && gActionsByTurnOrder[i] != ACTION_SWITCH
- && gActionsByTurnOrder[j] != ACTION_SWITCH)
+ u8 battler1 = gBattleTurnOrder[i];
+ u8 battler2 = gBattleTurnOrder[j];
+ if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM
+ && gActionsByTurnOrder[j] != B_ACTION_USE_ITEM
+ && gActionsByTurnOrder[i] != B_ACTION_SWITCH
+ && gActionsByTurnOrder[j] != B_ACTION_SWITCH)
{
- if (GetWhoStrikesFirst(bank1, bank2, FALSE))
+ if (GetWhoStrikesFirst(battler1, battler2, FALSE))
SwapTurnOrder(i, j);
}
}
@@ -4599,7 +4638,7 @@ static void SetActionsAndBanksTurnOrder(void)
}
}
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
- gBattleStruct->focusPunchBank = 0;
+ gBattleStruct->focusPunchBattlerId = 0;
}
static void TurnValuesCleanUp(bool8 var0)
@@ -4607,32 +4646,32 @@ static void TurnValuesCleanUp(bool8 var0)
s32 i;
u8 *dataPtr;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
if (var0)
{
- gProtectStructs[gActiveBank].protected = 0;
- gProtectStructs[gActiveBank].endured = 0;
+ gProtectStructs[gActiveBattler].protected = 0;
+ gProtectStructs[gActiveBattler].endured = 0;
}
else
{
- dataPtr = (u8*)(&gProtectStructs[gActiveBank]);
+ dataPtr = (u8*)(&gProtectStructs[gActiveBattler]);
for (i = 0; i < sizeof(struct ProtectStruct); i++)
dataPtr[i] = 0;
- if (gDisableStructs[gActiveBank].isFirstTurn)
- gDisableStructs[gActiveBank].isFirstTurn--;
+ if (gDisableStructs[gActiveBattler].isFirstTurn)
+ gDisableStructs[gActiveBattler].isFirstTurn--;
- if (gDisableStructs[gActiveBank].rechargeCounter)
+ if (gDisableStructs[gActiveBattler].rechargeCounter)
{
- gDisableStructs[gActiveBank].rechargeCounter--;
- if (gDisableStructs[gActiveBank].rechargeCounter == 0)
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_RECHARGE);
+ gDisableStructs[gActiveBattler].rechargeCounter--;
+ if (gDisableStructs[gActiveBattler].rechargeCounter == 0)
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_RECHARGE);
}
}
- if (gDisableStructs[gActiveBank].substituteHP == 0)
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_SUBSTITUTE);
+ if (gDisableStructs[gActiveBattler].substituteHP == 0)
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_SUBSTITUTE);
}
gSideTimers[0].followmeTimer = 0;
@@ -4641,10 +4680,10 @@ static void TurnValuesCleanUp(bool8 var0)
static void SpecialStatusesClear(void)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
s32 i;
- u8 *dataPtr = (u8*)(&gSpecialStatuses[gActiveBank]);
+ u8 *dataPtr = (u8*)(&gSpecialStatuses[gActiveBattler]);
for (i = 0; i < sizeof(struct SpecialStatus); i++)
dataPtr[i] = 0;
@@ -4655,14 +4694,14 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
{
if (!(gHitMarker & HITMARKER_RUN))
{
- while (gBattleStruct->focusPunchBank < gNoOfAllBanks)
+ while (gBattleStruct->focusPunchBattlerId < gBattlersCount)
{
- gActiveBank = gBankAttacker = gBattleStruct->focusPunchBank;
- gBattleStruct->focusPunchBank++;
- if (gChosenMovesByBanks[gActiveBank] == MOVE_FOCUS_PUNCH
- && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP)
- && !(gDisableStructs[gBankAttacker].truantCounter)
- && !(gProtectStructs[gActiveBank].onlyStruggle))
+ gActiveBattler = gBattlerAttacker = gBattleStruct->focusPunchBattlerId;
+ gBattleStruct->focusPunchBattlerId++;
+ if (gChosenMoveByBattler[gActiveBattler] == MOVE_FOCUS_PUNCH
+ && !(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
+ && !(gDisableStructs[gBattlerAttacker].truantCounter)
+ && !(gProtectStructs[gActiveBattler].onlyStruggle))
{
BattleScriptExecute(BattleScript_FocusPunchSetUp);
return;
@@ -4694,14 +4733,14 @@ static void RunTurnActionsFunctions(void)
*(&gBattleStruct->savedTurnActionNumber) = gCurrentTurnActionNumber;
sTurnActionsFuncsTable[gCurrentActionFuncId]();
- if (gCurrentTurnActionNumber >= gNoOfAllBanks) // everyone did their actions, turn finished
+ if (gCurrentTurnActionNumber >= gBattlersCount) // everyone did their actions, turn finished
{
gHitMarker &= ~(HITMARKER_x100000);
gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F];
}
else
{
- if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank
+ if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId
{
gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
@@ -4717,9 +4756,9 @@ static void HandleEndTurn_BattleWon(void)
{
gSpecialVar_Result = gBattleOutcome;
gBattleTextBuff1[0] = gBattleOutcome;
- gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
- gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
+ gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN);
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
&& gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000 | BATTLE_TYPE_EREADER_TRAINER))
@@ -4775,24 +4814,24 @@ static void HandleEndTurn_BattleLost(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- if (gBattleOutcome & OUTCOME_LINK_BATTLE_RUN)
+ if (gBattleOutcome & B_OUTCOME_LINK_BATTLE_RAN)
{
gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeitedLinkBattle;
- gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
+ gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN);
gSaveBlock2Ptr->field_CA9_b = 1;
}
else
{
gBattlescriptCurrInstr = BattleScript_82DAA0B;
- gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
+ gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN);
}
}
else
{
gBattleTextBuff1[0] = gBattleOutcome;
- gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
- gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
+ gBattleOutcome &= ~(B_OUTCOME_LINK_BATTLE_RAN);
}
}
else
@@ -4810,17 +4849,17 @@ static void HandleEndTurn_RanFromBattle(void)
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER && gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited;
- gBattleOutcome = BATTLE_FORFEITED;
+ gBattleOutcome = B_OUTCOME_FORFEITED;
gSaveBlock2Ptr->field_CA9_b = 1;
}
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
{
gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited;
- gBattleOutcome = BATTLE_FORFEITED;
+ gBattleOutcome = B_OUTCOME_FORFEITED;
}
else
{
- switch (gProtectStructs[gBankAttacker].fleeFlag)
+ switch (gProtectStructs[gBattlerAttacker].fleeFlag)
{
default:
gBattlescriptCurrInstr = BattleScript_GotAwaySafely;
@@ -4841,7 +4880,7 @@ static void HandleEndTurn_MonFled(void)
{
gCurrentActionFuncId = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]);
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker]);
gBattlescriptCurrInstr = BattleScript_WildMonFled;
gBattleMainFunc = HandleEndTurn_FinishBattle;
@@ -4859,19 +4898,19 @@ static void HandleEndTurn_FinishBattle(void)
| BATTLE_TYPE_WALLY_TUTORIAL
| BATTLE_TYPE_FRONTIER)))
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
if (gBattleResults.playerMon1Species == SPECIES_NONE)
{
- gBattleResults.playerMon1Species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL);
- GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, gBattleResults.playerMon1Name);
+ gBattleResults.playerMon1Species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_NICKNAME, gBattleResults.playerMon1Name);
}
else
{
- gBattleResults.playerMon2Species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL);
- GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, gBattleResults.playerMon2Name);
+ gBattleResults.playerMon2Species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_NICKNAME, gBattleResults.playerMon2Name);
}
}
}
@@ -4899,7 +4938,7 @@ static void HandleEndTurn_FinishBattle(void)
}
else
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
}
@@ -4909,7 +4948,7 @@ static void FreeResetData_ReturnToOvOrDoEvolutions(void)
if (!gPaletteFade.active)
{
ResetSpriteData();
- if (gLeveledUpInBattle == 0 || gBattleOutcome != BATTLE_WON)
+ if (gLeveledUpInBattle == 0 || gBattleOutcome != B_OUTCOME_WON)
{
gBattleMainFunc = ReturnFromBattleToOverworld;
return;
@@ -4935,7 +4974,7 @@ static void TryEvolvePokemon(void)
while (gLeveledUpInBattle != 0)
{
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (gLeveledUpInBattle & gBitTable[i])
{
@@ -4984,7 +5023,7 @@ static void ReturnFromBattleToOverworld(void)
if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
{
UpdateRoamerHPStatus(&gEnemyParty[0]);
- if ((gBattleOutcome & BATTLE_WON) || gBattleOutcome == BATTLE_CAUGHT)
+ if ((gBattleOutcome & B_OUTCOME_WON) || gBattleOutcome == B_OUTCOME_CAUGHT)
SetRoamerInactive();
}
@@ -4996,20 +5035,20 @@ void RunBattleScriptCommands_PopCallbacksStack(void)
{
if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
{
- if (BATTLE_CALLBACKS_STACK->size != 0)
- BATTLE_CALLBACKS_STACK->size--;
- gBattleMainFunc = BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size];
+ if (gBattleResources->battleCallbackStack->size != 0)
+ gBattleResources->battleCallbackStack->size--;
+ gBattleMainFunc = gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size];
}
else
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
}
void RunBattleScriptCommands(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
@@ -5018,200 +5057,200 @@ static void HandleAction_UseMove(void)
u8 side;
u8 var = 4;
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
- if (*(&gBattleStruct->field_91) & gBitTable[gBankAttacker])
+ if (*(&gBattleStruct->field_91) & gBitTable[gBattlerAttacker])
{
- gCurrentActionFuncId = ACTION_FINISHED;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
return;
}
gCritMultiplier = 1;
gBattleScripting.dmgMultiplier = 1;
gBattleStruct->atkCancellerTracker = 0;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gMultiHitCounter = 0;
gBattleCommunication[6] = 0;
- gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovePositions + gBankAttacker);
+ gCurrMovePos = gChosenMovePos = *(gBattleStruct->chosenMovePositions + gBattlerAttacker);
// choose move
- if (gProtectStructs[gBankAttacker].onlyStruggle)
+ if (gProtectStructs[gBattlerAttacker].onlyStruggle)
{
- gProtectStructs[gBankAttacker].onlyStruggle = 0;
+ gProtectStructs[gBattlerAttacker].onlyStruggle = 0;
gCurrentMove = gChosenMove = MOVE_STRUGGLE;
gHitMarker |= HITMARKER_NO_PPDEDUCT;
- *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
}
- else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE)
+ else if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE)
{
- gCurrentMove = gChosenMove = gLockedMoves[gBankAttacker];
+ gCurrentMove = gChosenMove = gLockedMoves[gBattlerAttacker];
}
// encore forces you to use the same move
- else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
- && gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
+ else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
+ && gDisableStructs[gBattlerAttacker].encoredMove == gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
{
- gCurrentMove = gChosenMove = gDisableStructs[gBankAttacker].encoredMove;
- gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
- *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove;
+ gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
}
// check if the encored move wasn't overwritten
- else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
- && gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
+ else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE
+ && gDisableStructs[gBattlerAttacker].encoredMove != gBattleMons[gBattlerAttacker].moves[gDisableStructs[gBattlerAttacker].encoredMovePos])
{
- gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
- gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
- gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE;
- gDisableStructs[gBankAttacker].encoredMovePos = 0;
- gDisableStructs[gBankAttacker].encoreTimer1 = 0;
- *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
+ gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
+ gDisableStructs[gBattlerAttacker].encoredMove = MOVE_NONE;
+ gDisableStructs[gBattlerAttacker].encoredMovePos = 0;
+ gDisableStructs[gBattlerAttacker].encoreTimer1 = 0;
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
}
- else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker])
+ else if (gBattleMons[gBattlerAttacker].moves[gCurrMovePos] != gChosenMoveByBattler[gBattlerAttacker])
{
- gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
- *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0);
}
else
{
- gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
}
- if (gBattleMons[gBankAttacker].hp != 0)
+ if (gBattleMons[gBattlerAttacker].hp != 0)
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
gBattleResults.lastUsedMovePlayer = gCurrentMove;
else
gBattleResults.lastUsedMoveOpponent = gCurrentMove;
}
// choose target
- side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
if (gSideTimers[side].followmeTimer != 0
&& gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED
- && GetBankSide(gBankAttacker) != GetBankSide(gSideTimers[side].followmeTarget)
+ && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gSideTimers[side].followmeTarget)
&& gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
{
- gBankTarget = gSideTimers[side].followmeTarget;
+ gBattlerTarget = gSideTimers[side].followmeTarget;
}
else if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
&& gSideTimers[side].followmeTimer == 0
&& (gBattleMoves[gCurrentMove].power != 0
|| gBattleMoves[gCurrentMove].target != MOVE_TARGET_x10)
- && gBattleMons[*(gBattleStruct->moveTarget + gBankAttacker)].ability != ABILITY_LIGHTNING_ROD
+ && gBattleMons[*(gBattleStruct->moveTarget + gBattlerAttacker)].ability != ABILITY_LIGHTNING_ROD
&& gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
{
- side = GetBankSide(gBankAttacker);
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ side = GetBattlerSide(gBattlerAttacker);
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (side != GetBankSide(gActiveBank)
- && *(gBattleStruct->moveTarget + gBankAttacker) != gActiveBank
- && gBattleMons[gActiveBank].ability == ABILITY_LIGHTNING_ROD
- && BankGetTurnOrder(gActiveBank) < var)
+ if (side != GetBattlerSide(gActiveBattler)
+ && *(gBattleStruct->moveTarget + gBattlerAttacker) != gActiveBattler
+ && gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD
+ && GetBattlerTurnOrderNum(gActiveBattler) < var)
{
- var = BankGetTurnOrder(gActiveBank);
+ var = GetBattlerTurnOrderNum(gActiveBattler);
}
}
if (var == 4)
{
if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
{
if (Random() & 1)
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
else
{
if (Random() & 1)
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
}
else
{
- gBankTarget = *(gBattleStruct->moveTarget + gBankAttacker);
+ gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker);
}
- if (gAbsentBankFlags & gBitTable[gBankTarget])
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
{
- if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
}
else
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
}
}
}
else
{
- gActiveBank = gBanksByTurnOrder[var];
- RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability);
- gSpecialStatuses[gActiveBank].lightningRodRedirected = 1;
- gBankTarget = gActiveBank;
+ gActiveBattler = gBattleTurnOrder[var];
+ RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability);
+ gSpecialStatuses[gActiveBattler].lightningRodRedirected = 1;
+ gBattlerTarget = gActiveBattler;
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
&& gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
{
if (Random() & 1)
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
else
{
if (Random() & 1)
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
- if (gAbsentBankFlags & gBitTable[gBankTarget]
- && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]
+ && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
}
}
else
{
- gBankTarget = *(gBattleStruct->moveTarget + gBankAttacker);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
+ gBattlerTarget = *(gBattleStruct->moveTarget + gBattlerAttacker);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
{
- if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ if (GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget))
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
}
else
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerTarget) ^ BIT_FLANK);
}
}
}
// choose battlescript
if (gBattleTypeFlags & BATTLE_TYPE_PALACE
- && gProtectStructs[gBankAttacker].flag_x10)
+ && gProtectStructs[gBattlerAttacker].flag_x10)
{
- if (gBattleMons[gBankAttacker].hp == 0)
+ if (gBattleMons[gBattlerAttacker].hp == 0)
{
- gCurrentActionFuncId = 12;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
return;
}
- else if (gPalaceSelectionBattleScripts[gBankAttacker] != NULL)
+ else if (gPalaceSelectionBattleScripts[gBattlerAttacker] != NULL)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- gBattlescriptCurrInstr = gPalaceSelectionBattleScripts[gBankAttacker];
- gPalaceSelectionBattleScripts[gBankAttacker] = NULL;
+ gBattlescriptCurrInstr = gPalaceSelectionBattleScripts[gBattlerAttacker];
+ gPalaceSelectionBattleScripts[gBattlerAttacker] = NULL;
}
else
{
@@ -5225,24 +5264,24 @@ static void HandleAction_UseMove(void)
}
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
- sub_81A56E8(gBankAttacker);
+ sub_81A56E8(gBattlerAttacker);
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
static void HandleAction_Switch(void)
{
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- gActionSelectionCursor[gBankAttacker] = 0;
- gMoveSelectionCursor[gBankAttacker] = 0;
+ gActionSelectionCursor[gBattlerAttacker] = 0;
+ gMoveSelectionCursor[gBattlerAttacker] = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, *(gBattleStruct->field_58 + gBankAttacker))
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, *(gBattleStruct->field_58 + gBattlerAttacker))
- gBattleScripting.bank = gBankAttacker;
+ gBattleScripting.battler = gBattlerAttacker;
gBattlescriptCurrInstr = BattleScript_ActionSwitch;
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
if (gBattleResults.playerSwitchesCounter < 255)
gBattleResults.playerSwitchesCounter++;
@@ -5250,11 +5289,11 @@ static void HandleAction_Switch(void)
static void HandleAction_UseItem(void)
{
- gBankAttacker = gBankTarget = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattlerTarget = gBattleTurnOrder[gCurrentTurnActionNumber];
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- ClearFuryCutterDestinyBondGrudge(gBankAttacker);
- gLastUsedItem = gBattleBufferB[gBankAttacker][1] | (gBattleBufferB[gBankAttacker][2] << 8);
+ ClearFuryCutterDestinyBondGrudge(gBattlerAttacker);
+ gLastUsedItem = gBattleBufferB[gBattlerAttacker][1] | (gBattleBufferB[gBattlerAttacker][2] << 8);
if (gLastUsedItem <= ITEM_PREMIER_BALL) // is ball
{
@@ -5264,38 +5303,38 @@ static void HandleAction_UseItem(void)
{
gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0];
}
- else if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ else if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
{
gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0];
}
else
{
- gBattleScripting.bank = gBankAttacker;
+ gBattleScripting.battler = gBattlerAttacker;
- switch (*(gBattleStruct->AI_itemType + (gBankAttacker >> 1)))
+ switch (*(gBattleStruct->AI_itemType + (gBattlerAttacker >> 1)))
{
case AI_ITEM_FULL_RESTORE:
case AI_ITEM_HEAL_HP:
break;
case AI_ITEM_CURE_CONDITION:
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 1)
+ if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1)
{
- if (*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 0x3E)
+ if (*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 0x3E)
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
else
{
- while (!(*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 1))
+ while (!(*(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) & 1))
{
- *(gBattleStruct->AI_itemFlags + gBankAttacker / 2) >>= 1;
+ *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1;
gBattleCommunication[MULTISTRING_CHOOSER]++;
}
}
break;
case AI_ITEM_X_STAT:
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- if (*(gBattleStruct->AI_itemFlags + (gBankAttacker >> 1)) & 0x80)
+ if (*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1)) & 0x80)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
@@ -5304,9 +5343,9 @@ static void HandleAction_UseItem(void)
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2)
- while (!((*(gBattleStruct->AI_itemFlags + (gBankAttacker >> 1))) & 1))
+ while (!((*(gBattleStruct->AI_itemFlags + (gBattlerAttacker >> 1))) & 1))
{
- *(gBattleStruct->AI_itemFlags + gBankAttacker / 2) >>= 1;
+ *(gBattleStruct->AI_itemFlags + gBattlerAttacker / 2) >>= 1;
gBattleTextBuff1[2]++;
}
@@ -5322,49 +5361,49 @@ static void HandleAction_UseItem(void)
break;
}
- gBattlescriptCurrInstr = gBattlescriptsForUsingItem[*(gBattleStruct->AI_itemType + gBankAttacker / 2)];
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[*(gBattleStruct->AI_itemType + gBattlerAttacker / 2)];
}
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
-bool8 TryRunFromBattle(u8 bank)
+bool8 TryRunFromBattle(u8 battler)
{
bool8 effect = FALSE;
u8 holdEffect;
u8 pyramidMultiplier;
u8 speedVar;
- if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
- holdEffect = gEnigmaBerries[bank].holdEffect;
+ if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[battler].holdEffect;
else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[battler].item);
- gStringBank = bank;
+ gPotentialItemEffectBattler = battler;
if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
{
- gLastUsedItem = gBattleMons[bank].item ;
- gProtectStructs[bank].fleeFlag = 1;
+ gLastUsedItem = gBattleMons[battler].item ;
+ gProtectStructs[battler].fleeFlag = 1;
effect++;
}
- else if (gBattleMons[bank].ability == ABILITY_RUN_AWAY)
+ else if (gBattleMons[battler].ability == ABILITY_RUN_AWAY)
{
if (InBattlePyramid())
{
gBattleStruct->runTries++;
pyramidMultiplier = sub_81A9E28();
- speedVar = (gBattleMons[bank].speed * pyramidMultiplier) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30);
+ speedVar = (gBattleMons[battler].speed * pyramidMultiplier) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
if (speedVar > (Random() & 0xFF))
{
gLastUsedAbility = ABILITY_RUN_AWAY;
- gProtectStructs[bank].fleeFlag = 2;
+ gProtectStructs[battler].fleeFlag = 2;
effect++;
}
}
else
{
gLastUsedAbility = ABILITY_RUN_AWAY;
- gProtectStructs[bank].fleeFlag = 2;
+ gProtectStructs[battler].fleeFlag = 2;
effect++;
}
}
@@ -5379,13 +5418,13 @@ bool8 TryRunFromBattle(u8 bank)
if (InBattlePyramid())
{
pyramidMultiplier = sub_81A9E28();
- speedVar = (gBattleMons[bank].speed * pyramidMultiplier) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30);
+ speedVar = (gBattleMons[battler].speed * pyramidMultiplier) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
if (speedVar > (Random() & 0xFF))
effect++;
}
- else if (gBattleMons[bank].speed < gBattleMons[bank ^ BIT_SIDE].speed)
+ else if (gBattleMons[battler].speed < gBattleMons[BATTLE_OPPOSITE(battler)].speed)
{
- speedVar = (gBattleMons[bank].speed * 128) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30);
+ speedVar = (gBattleMons[battler].speed * 128) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30);
if (speedVar > (Random() & 0xFF))
effect++;
}
@@ -5400,8 +5439,8 @@ bool8 TryRunFromBattle(u8 bank)
if (effect)
{
- gCurrentTurnActionNumber = gNoOfAllBanks;
- gBattleOutcome = BATTLE_RAN;
+ gCurrentTurnActionNumber = gBattlersCount;
+ gBattleOutcome = B_OUTCOME_RAN;
}
return effect;
@@ -5409,53 +5448,53 @@ bool8 TryRunFromBattle(u8 bank)
static void HandleAction_Run(void)
{
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
{
- gCurrentTurnActionNumber = gNoOfAllBanks;
+ gCurrentTurnActionNumber = gBattlersCount;
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
- if (gActionForBanks[gActiveBank] == ACTION_RUN)
- gBattleOutcome |= BATTLE_LOST;
+ if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN)
+ gBattleOutcome |= B_OUTCOME_LOST;
}
else
{
- if (gActionForBanks[gActiveBank] == ACTION_RUN)
- gBattleOutcome |= BATTLE_WON;
+ if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN)
+ gBattleOutcome |= B_OUTCOME_WON;
}
}
- gBattleOutcome |= OUTCOME_LINK_BATTLE_RUN;
+ gBattleOutcome |= B_OUTCOME_LINK_BATTLE_RAN;
gSaveBlock2Ptr->field_CA9_b = 1;
}
else
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
{
- if (!TryRunFromBattle(gBankAttacker)) // failed to run away
+ if (!TryRunFromBattle(gBattlerAttacker)) // failed to run away
{
- ClearFuryCutterDestinyBondGrudge(gBankAttacker);
+ ClearFuryCutterDestinyBondGrudge(gBattlerAttacker);
gBattleCommunication[MULTISTRING_CHOOSER] = 3;
gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
}
else
{
- if (gBattleMons[gBankAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ if (gBattleMons[gBattlerAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
{
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
else
{
- gCurrentTurnActionNumber = gNoOfAllBanks;
- gBattleOutcome = BATTLE_POKE_FLED;
+ gCurrentTurnActionNumber = gBattlersCount;
+ gBattleOutcome = B_OUTCOME_MON_FLED;
}
}
}
@@ -5463,31 +5502,31 @@ static void HandleAction_Run(void)
static void HandleAction_WatchesCarefully(void)
{
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0];
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
static void HandleAction_SafariZoneBallThrow(void)
{
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
gNumSafariBalls--;
gLastUsedItem = ITEM_SAFARI_BALL;
gBattlescriptCurrInstr = gBattlescriptsForBallThrow[ITEM_SAFARI_BALL];
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
static void HandleAction_ThrowPokeblock(void)
{
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBankAttacker][1] - 1;
- gLastUsedItem = gBattleBufferB[gBankAttacker][2];
+ gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBattlerAttacker][1] - 1;
+ gLastUsedItem = gBattleBufferB[gBattlerAttacker][2];
if (gBattleResults.field_1F < 0xFF)
gBattleResults.field_1F++;
@@ -5502,12 +5541,12 @@ static void HandleAction_ThrowPokeblock(void)
}
gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2];
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
static void HandleAction_GoNear(void)
{
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
@@ -5529,28 +5568,28 @@ static void HandleAction_GoNear(void)
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1];
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
}
static void HandleAction_SafriZoneRun(void)
{
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
PlaySE(SE_NIGERU);
- gCurrentTurnActionNumber = gNoOfAllBanks;
- gBattleOutcome = BATTLE_RAN;
+ gCurrentTurnActionNumber = gBattlersCount;
+ gBattleOutcome = B_OUTCOME_RAN;
}
static void HandleAction_Action9(void)
{
- gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattlerAttacker = gBattleTurnOrder[gCurrentTurnActionNumber];
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker])
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3];
- gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
- gActionsByTurnOrder[1] = ACTION_FINISHED;
+ gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT;
+ gActionsByTurnOrder[1] = B_ACTION_FINISHED;
}
static void HandleAction_Action11(void)
@@ -5558,7 +5597,7 @@ static void HandleAction_Action11(void)
if (!HandleFaintedMonActions())
{
gBattleStruct->faintedActionsState = 0;
- gCurrentActionFuncId = ACTION_FINISHED;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
}
}
@@ -5575,7 +5614,7 @@ static void HandleAction_NothingIsFainted(void)
static void HandleAction_ActionFinished(void)
{
- *(gBattleStruct->monToSwitchIntoId + gBanksByTurnOrder[gCurrentTurnActionNumber]) = 6;
+ *(gBattleStruct->monToSwitchIntoId + gBattleTurnOrder[gCurrentTurnActionNumber]) = 6;
gCurrentTurnActionNumber++;
gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
SpecialStatusesClear();
@@ -5587,11 +5626,11 @@ static void HandleAction_ActionFinished(void)
gCurrentMove = 0;
gBattleMoveDamage = 0;
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gBattleScripting.animTurn = 0;
gBattleScripting.animTargetsHit = 0;
- gLastLandedMoves[gBankAttacker] = 0;
- gLastHitByType[gBankAttacker] = 0;
+ gLastLandedMoves[gBattlerAttacker] = 0;
+ gLastHitByType[gBattlerAttacker] = 0;
gBattleStruct->dynamicMoveType = 0;
gDynamicBasePower = 0;
gBattleScripting.atk49_state = 0;
diff --git a/src/battle_message.c b/src/battle_message.c
index 3fa3d0563..2b9783f1a 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_message.h"
-#include "battle_string_ids.h"
+#include "constants/battle_string_ids.h"
#include "constants/moves.h"
#include "text.h"
#include "string_util.h"
@@ -13,23 +13,11 @@
#include "palette.h"
#include "battle_controllers.h"
#include "battle_setup.h"
+#include "menu.h"
+#include "recorded_battle.h"
+#include "international_string_util.h"
-extern u16 gLastUsedItem;
-extern u8 gLastUsedAbility;
-extern u8 gActiveBank;
-extern u8 gBankAttacker;
-extern u8 gBankTarget;
-extern u8 gStringBank;
-extern u8 gEffectBank;
-extern u8 gAbilitiesPerBank[BATTLE_BANKS_COUNT];
-extern u32 gBattleTypeFlags;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u16 gPartnerTrainerId;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
-extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gBattlerAbilities[MAX_BATTLERS_COUNT];
extern u8 gUnknown_0203C7B4;
extern struct StringInfoBattle *gStringInfo;
@@ -56,9 +44,6 @@ extern void GetEreaderTrainerName(u8 *txtPtr);
extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2
extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav
extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
-extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing);
-extern u8 GetTextSpeedInRecordedBattle(void);
-extern u8 GetPlayerTextSpeed(void);
// this file's functions
static void sub_814F8F8(u8 *textPtr);
@@ -1430,18 +1415,18 @@ void BufferStringBattle(u16 stringID)
s32 i;
const u8* stringPtr = NULL;
- gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]);
+ gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBattler][4]);
gLastUsedItem = gStringInfo->lastItem;
gLastUsedAbility = gStringInfo->lastAbility;
- gBattleScripting.bank = gStringInfo->scrActive;
+ gBattleScripting.battler = gStringInfo->scrActive;
*(&gBattleStruct->field_52) = gStringInfo->unk1605E;
*(&gBattleStruct->hpScale) = gStringInfo->hpScale;
- gStringBank = gStringInfo->StringBank;
+ gPotentialItemEffectBattler = gStringInfo->StringBank;
*(&gBattleStruct->stringMoveType) = gStringInfo->moveType;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- gAbilitiesPerBank[i] = gStringInfo->abilities[i];
+ gBattlerAbilities[i] = gStringInfo->abilities[i];
}
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
{
@@ -1501,7 +1486,7 @@ void BufferStringBattle(u16 stringID)
}
break;
case STRINGID_INTROSENDOUT: // poke first send-out
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@@ -1546,7 +1531,7 @@ void BufferStringBattle(u16 stringID)
}
break;
case STRINGID_RETURNMON: // sending poke to ball msg
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
if (*(&gBattleStruct->hpScale) == 0)
stringPtr = gText_PkmnThatsEnough;
@@ -1573,7 +1558,7 @@ void BufferStringBattle(u16 stringID)
}
break;
case STRINGID_SWITCHINMON: // switch-in msg
- if (GetBankSide(gBattleScripting.bank) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER)
{
if (*(&gBattleStruct->hpScale) == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
stringPtr = gText_GoPkmn2;
@@ -1590,7 +1575,7 @@ void BufferStringBattle(u16 stringID)
{
if (gBattleTypeFlags & BATTLE_TYPE_x800000)
{
- if (gBattleScripting.bank == 1)
+ if (gBattleScripting.battler == 1)
stringPtr = gText_Trainer1SentOutPkmn2;
else
stringPtr = gText_Trainer2SentOutPkmn;
@@ -1609,7 +1594,7 @@ void BufferStringBattle(u16 stringID)
{
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
- if (gBattleScripting.bank == 1)
+ if (gBattleScripting.battler == 1)
stringPtr = gText_Trainer1SentOutPkmn2;
else
stringPtr = gText_Trainer2SentOutPkmn;
@@ -1633,13 +1618,13 @@ void BufferStringBattle(u16 stringID)
stringPtr = gText_AttackerUsedX;
break;
case STRINGID_BATTLEEND: // battle end
- if (gBattleTextBuff1[0] & OUTCOME_LINK_BATTLE_RUN)
+ if (gBattleTextBuff1[0] & B_OUTCOME_LINK_BATTLE_RAN)
{
- gBattleTextBuff1[0] &= ~(OUTCOME_LINK_BATTLE_RUN);
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW)
- gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON);
+ gBattleTextBuff1[0] &= ~(B_OUTCOME_LINK_BATTLE_RAN);
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW)
+ gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON);
- if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW)
+ if (gBattleTextBuff1[0] == B_OUTCOME_LOST || gBattleTextBuff1[0] == B_OUTCOME_DREW)
stringPtr = gText_GotAwaySafely;
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
stringPtr = gText_TwoWildFled;
@@ -1648,23 +1633,23 @@ void BufferStringBattle(u16 stringID)
}
else
{
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW)
- gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON);
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW)
+ gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON);
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
switch (gBattleTextBuff1[0])
{
- case BATTLE_WON:
+ case B_OUTCOME_WON:
if (gBattleTypeFlags & BATTLE_TYPE_x800000)
stringPtr = gText_TwoInGameTrainersDefeated;
else
stringPtr = gText_TwoLinkTrainersDefeated;
break;
- case BATTLE_LOST:
+ case B_OUTCOME_LOST:
stringPtr = gText_PlayerLostToTwo;
break;
- case BATTLE_DREW:
+ case B_OUTCOME_DREW:
stringPtr = gText_PlayerBattledToDrawVsTwo;
break;
}
@@ -1673,13 +1658,13 @@ void BufferStringBattle(u16 stringID)
{
switch (gBattleTextBuff1[0])
{
- case BATTLE_WON:
+ case B_OUTCOME_WON:
stringPtr = gText_PlayerDefeatedLinkTrainerTrainer1;
break;
- case BATTLE_LOST:
+ case B_OUTCOME_LOST:
stringPtr = gText_PlayerLostAgainstTrainer1;
break;
- case BATTLE_DREW:
+ case B_OUTCOME_DREW:
stringPtr = gText_PlayerBattledToDrawTrainer1;
break;
}
@@ -1688,13 +1673,13 @@ void BufferStringBattle(u16 stringID)
{
switch (gBattleTextBuff1[0])
{
- case BATTLE_WON:
+ case B_OUTCOME_WON:
stringPtr = gText_PlayerDefeatedLinkTrainer;
break;
- case BATTLE_LOST:
+ case B_OUTCOME_LOST:
stringPtr = gText_PlayerLostAgainstLinkTrainer;
break;
- case BATTLE_DREW:
+ case B_OUTCOME_DREW:
stringPtr = gText_PlayerBattledToDrawLinkTrainer;
break;
}
@@ -1754,7 +1739,7 @@ static const u8* TryGetStatusString(u8* src)
}
#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
- if (GetBankSide(bank) != SIDE_PLAYER) \
+ if (GetBattlerSide(bank) != B_SIDE_PLAYER) \
{ \
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
toCpy = gText_FoePkmnPrefix; \
@@ -1836,80 +1821,80 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
toCpy = gStringVar3;
break;
case B_TXT_PLAYER_MON1_NAME: // first player poke name
- GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(IDENTITY_PLAYER_MON1)]],
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name
- GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(IDENTITY_OPPONENT_MON1)]],
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_PLAYER_MON2_NAME: // second player poke name
- GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(IDENTITY_PLAYER_MON2)]],
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name
- GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(IDENTITY_OPPONENT_MON2)]],
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name
- GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]],
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name
- GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]],
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name
- GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]],
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name
- GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]],
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only bank 0/1
- HANDLE_NICKNAME_STRING_CASE(gBankAttacker,
- gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker))])
+ HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker,
+ gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker))])
break;
case B_TXT_ATK_PARTNER_NAME: // attacker partner name
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
- GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker)) + 2]], MON_DATA_NICKNAME, text);
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker)) + 2]], MON_DATA_NICKNAME, text);
else
- GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker)) + 2]], MON_DATA_NICKNAME, text);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker)) + 2]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix
- HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker])
+ HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
break;
case B_TXT_DEF_NAME_WITH_PREFIX: // target name with prefix
- HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget])
+ HANDLE_NICKNAME_STRING_CASE(gBattlerTarget, gBattlerPartyIndexes[gBattlerTarget])
break;
case B_TXT_EFF_NAME_WITH_PREFIX: // effect bank name with prefix
- HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank])
+ HANDLE_NICKNAME_STRING_CASE(gEffectBattler, gBattlerPartyIndexes[gEffectBattler])
break;
case B_TXT_ACTIVE_NAME_WITH_PREFIX: // active bank name with prefix
- HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank])
+ HANDLE_NICKNAME_STRING_CASE(gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
break;
case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active bank name with prefix
- HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, gBattlePartyID[gBattleScripting.bank])
+ HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, gBattlerPartyIndexes[gBattleScripting.battler])
break;
case B_TXT_CURRENT_MOVE: // current move name
if (gStringInfo->currentMove > LAST_MOVE_INDEX)
@@ -1930,10 +1915,10 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- if ((gBattleScripting.multiplayerId != 0 && (gStringBank & BIT_SIDE))
- || (gBattleScripting.multiplayerId == 0 && !(gStringBank & BIT_SIDE)))
+ if ((gBattleScripting.multiplayerId != 0 && (gPotentialItemEffectBattler & BIT_SIDE))
+ || (gBattleScripting.multiplayerId == 0 && !(gPotentialItemEffectBattler & BIT_SIDE)))
{
- StringCopy(text, gEnigmaBerries[gStringBank].name);
+ StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
StringAppend(text, gText_BerrySuffix);
toCpy = text;
}
@@ -1944,9 +1929,9 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
}
else
{
- if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBank)
+ if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gPotentialItemEffectBattler)
{
- StringCopy(text, gEnigmaBerries[gStringBank].name);
+ StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
StringAppend(text, gText_BerrySuffix);
toCpy = text;
}
@@ -1970,16 +1955,16 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
toCpy = gAbilityNames[gLastUsedAbility];
break;
case B_TXT_ATK_ABILITY: // attacker ability
- toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]];
+ toCpy = gAbilityNames[gBattlerAbilities[gBattlerAttacker]];
break;
case B_TXT_DEF_ABILITY: // target ability
- toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]];
+ toCpy = gAbilityNames[gBattlerAbilities[gBattlerTarget]];
break;
case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability
- toCpy = gAbilityNames[gAbilitiesPerBank[gBattleScripting.bank]];
+ toCpy = gAbilityNames[gBattlerAbilities[gBattleScripting.battler]];
break;
case B_TXT_EFF_ABILITY: // effect bank ability
- toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]];
+ toCpy = gAbilityNames[gBattlerAbilities[gEffectBattler]];
break;
case B_TXT_TRAINER1_CLASS: // trainer class name
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
@@ -2039,16 +2024,16 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
toCpy = gLinkPlayers[multiplayerID].name;
break;
case B_TXT_1F: // link partner name?
- toCpy = gLinkPlayers[GetBankMultiplayerId(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ toCpy = gLinkPlayers[GetBattlerMultiplayerId(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
break;
case B_TXT_20: // link opponent 1 name?
- toCpy = gLinkPlayers[GetBankMultiplayerId(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ toCpy = gLinkPlayers[GetBattlerMultiplayerId(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
break;
case B_TXT_21: // link opponent 2 name?
- toCpy = gLinkPlayers[GetBankMultiplayerId(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ toCpy = gLinkPlayers[GetBattlerMultiplayerId(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
break;
case B_TXT_22: // link scripting active name
- toCpy = gLinkPlayers[GetBankMultiplayerId(gBattleScripting.bank)].name;
+ toCpy = gLinkPlayers[GetBattlerMultiplayerId(gBattleScripting.battler)].name;
break;
case B_TXT_PLAYER_NAME: // player name
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
@@ -2085,7 +2070,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
}
break;
case B_TXT_26: // ?
- HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, *(&gBattleStruct->field_52))
+ HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, *(&gBattleStruct->field_52))
break;
case B_TXT_PC_CREATOR_NAME: // lanette pc
if (FlagGet(FLAG_SYS_PC_LANETTE))
@@ -2094,37 +2079,37 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
toCpy = gText_Someones;
break;
case B_TXT_ATK_PREFIX2:
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
toCpy = gText_AllyPkmnPrefix2;
else
toCpy = gText_FoePkmnPrefix3;
break;
case B_TXT_DEF_PREFIX2:
- if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
toCpy = gText_AllyPkmnPrefix2;
else
toCpy = gText_FoePkmnPrefix3;
break;
case B_TXT_ATK_PREFIX1:
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
toCpy = gText_AllyPkmnPrefix;
else
toCpy = gText_FoePkmnPrefix2;
break;
case B_TXT_DEF_PREFIX1:
- if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
toCpy = gText_AllyPkmnPrefix;
else
toCpy = gText_FoePkmnPrefix2;
break;
case B_TXT_ATK_PREFIX3:
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
toCpy = gText_AllyPkmnPrefix3;
else
toCpy = gText_FoePkmnPrefix4;
break;
case B_TXT_DEF_PREFIX3:
- if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
toCpy = gText_AllyPkmnPrefix3;
else
toCpy = gText_FoePkmnPrefix4;
@@ -2266,7 +2251,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
srcID += 2;
break;
case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix
- if (GetBankSide(src[srcID + 1]) == SIDE_PLAYER)
+ if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER)
{
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
}
@@ -2292,7 +2277,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
srcID += 3;
break;
case B_BUFF_MON_NICK: // poke nick without prefix
- if (GetBankSide(src[srcID + 1]) == SIDE_PLAYER)
+ if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER)
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
else
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
@@ -2313,9 +2298,9 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
{
if (hword == ITEM_ENIGMA_BERRY)
{
- if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBank)
+ if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gPotentialItemEffectBattler)
{
- StringCopy(dst, gEnigmaBerries[gStringBank].name);
+ StringCopy(dst, gEnigmaBerries[gPotentialItemEffectBattler].name);
StringAppend(dst, gText_BerrySuffix);
}
else
@@ -2360,20 +2345,20 @@ static void sub_814F8F8(u8* textBuff)
// Appends "!" to the text buffer `dst`. In the original Japanese this looked
// into the table of moves at sUnknownMoveTable and varied the line accordingly.
-//
+//
// gText_ExclamationMark was a plain "!", used for any attack not on the list.
// It resulted in the translation "<NAME>'s <ATTACK>!".
-//
+//
// gText_ExclamationMark2 was "を つかった!". This resulted in the translation
// "<NAME> used <ATTACK>!", which was used for all attacks in English.
-//
+//
// gText_ExclamationMark3 was "した!". This was used for those moves whose
// names were verbs, such as Recover, and resulted in translations like "<NAME>
// recovered itself!".
-//
+//
// gText_ExclamationMark4 was "を した!" This resulted in a translation of
// "<NAME> did an <ATTACK>!".
-//
+//
// gText_ExclamationMark5 was " こうげき!" This resulted in a translation of
// "<NAME>'s <ATTACK> attack!".
static void sub_814F950(u8* dst)
@@ -2440,7 +2425,7 @@ void BattleHandleAddTextPrinter(const u8 *text, u8 arg1)
textSubPrinter.letterSpacing = r8[(12 * arg1) + 4];
textSubPrinter.lineSpacing = r8[(12 * arg1) + 5];
textSubPrinter.fontColor_l = 0;
- textSubPrinter.fontColor_h = r8[(12 * arg1) + 7];
+ textSubPrinter.fgColor = r8[(12 * arg1) + 7];
textSubPrinter.bgColor = r8[(12 * arg1) + 8];
textSubPrinter.shadowColor = r8[(12 * arg1) + 9];
@@ -2490,10 +2475,10 @@ void BattleHandleAddTextPrinter(const u8 *text, u8 arg1)
void SetPpNumbersPaletteInMoveSelection(void)
{
- struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
const u16 *palPtr = gUnknown_08D85620;
- u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBank]],
- chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBank]]);
+ u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBattler]],
+ chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBattler]]);
gPlttBufferUnfaded[92] = palPtr[(var * 2) + 0];
gPlttBufferUnfaded[91] = palPtr[(var * 2) + 1];
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index b7e493122..906253016 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "constants/battle_move_effects.h"
+#include "constants/battle_script_commands.h"
#include "battle_message.h"
#include "battle_ai_script_commands.h"
#include "battle_scripts.h"
@@ -38,75 +39,10 @@
#include "pokemon_storage_system.h"
#include "task.h"
#include "naming_screen.h"
-#include "battle_string_ids.h"
-
-// variables
-
-extern u8 gCritMultiplier;
-extern s32 gBattleMoveDamage;
-extern u32 gStatuses3[BATTLE_BANKS_COUNT];
-extern u32 gBattleTypeFlags;
-extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u8 gActiveBank;
-extern u32 gBattleExecBuffer;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT];
-extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT];
-extern u16 gCurrentMove;
-extern u8 gLastUsedAbility;
-extern u16 gBattleWeather;
-extern u8 gStringBank;
-extern u8 gEffectBank;
-extern u8 gAbsentBankFlags;
-extern u8 gMultiHitCounter;
-extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
-extern u16 gSideAffecting[2];
-extern u16 gPauseCounterBattle;
-extern u16 gPaydayMoney;
-extern u16 gRandomTurnNumber;
-extern u8 gBattleOutcome;
-extern u8 gBattleTerrain;
-extern u8 gBankAttacker;
-extern u8 gBankTarget;
-extern const u8* gBattlescriptCurrInstr;
-extern u8 gCurrMovePos;
-extern u8 gCurrentActionFuncId;
-extern u32 gHitMarker;
-extern u8 gBattleMoveFlags;
-extern u8 gBattleCommunication[];
-extern u16 gLastLandedMoves[4];
-extern u16 gLastHitByType[4];
-extern u16 gLastResultingMoves[4];
-extern u8 gLastHitBy[4];
-extern u8 gStringBank;
-extern u16 gDynamicBasePower;
-extern u16 gLastUsedItem;
-extern u16 gBattleMovePower;
-extern s32 gHpDealt;
-extern s32 gTakenDmg[BATTLE_BANKS_COUNT];
-extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT];
-extern u8 gSentPokesToOpponent[2];
-extern u8 gBank1;
-extern u16 gExpShareExp;
-extern u8 gLeveledUpInBattle;
-extern void (*gBattleMainFunc)(void);
-extern u8 gPlayerPartyCount;
-extern u16 gMoveToLearn;
-extern u16 gRandomMove;
-extern u8 gBankInMenu;
-extern u8 gActionForBanks[BATTLE_BANKS_COUNT];
-extern u8 gCurrentTurnActionNumber;
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
-extern u16 gPartnerTrainerId;
-extern u16 gChosenMove;
-extern u16 gLastPrintedMoves[BATTLE_BANKS_COUNT];
-extern u16 gLastMoves[BATTLE_BANKS_COUNT];
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u8 gUnknown_020241E9;
+#include "constants/battle_string_ids.h"
+#include "battle_setup.h"
+#include "overworld.h"
+
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG1_Y;
extern u16 gBattle_BG2_X;
@@ -121,17 +57,15 @@ struct TrainerMoney
};
extern const struct BattleMove gBattleMoves[];
-extern const struct BaseStats gBaseStats[];
extern const u8 gTypeEffectiveness[336];
extern const struct TrainerMoney gTrainerMoneyTable[];
extern const u8* const gBattleScriptsForMoveEffects[];
// functions
-extern void sub_81A5718(u8 bank); // battle frontier 2
+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 u8 sub_81C1B94(void); // pokemon summary screen
-extern void IncrementGameStat(u8 statId); // rom_4
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
extern void sub_81D3784(u8 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s
@@ -139,7 +73,7 @@ extern u8* GetMonNickname(struct Pokemon* mon, u8* dst); // party_menu
extern u8 sub_81A5258(u8* arg0); // battle frontier 2
extern void sub_81A5BF8(void); // battle frontier 2
extern void sub_81A5D44(void); // battle frontier 2
-extern void sub_81B8E80(u8 bank, u8, u8); // party menu
+extern void sub_81B8E80(u8 battlerId, u8, u8); // party menu
extern bool8 sub_81B1250(void); // ?
extern bool8 InBattlePike(void);
extern bool8 InBattlePyramid(void);
@@ -147,7 +81,6 @@ extern u16 GetBattlePyramidPickupItemId(void);
extern u8 sav1_map_get_light_level(void);
extern u8 sub_813B21C(void);
extern u16 get_unknown_box_id(void);
-extern void sub_80356D0(void);
// strings
extern const u8 gText_BattleYesNoChoice[];
@@ -162,14 +95,15 @@ extern const u8 gText_BattleYesNoChoice[];
#define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
#define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr))
-#define TARGET_PROTECT_AFFECTED ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
+#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
-#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)))
+#define TARGET_TURN_DAMAGED (gSpecialStatuses[gBattlerTarget].physicalDmg != 0 \
+ || gSpecialStatuses[gBattlerTarget].specialDmg != 0)
// this file's functions
static bool8 IsTwoTurnsMove(u16 move);
static void TrySetDestinyBondToHappen(void);
-static u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
+static u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
static void CheckWonderGuardAndLevitate(void);
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr);
static bool32 IsMonGettingExpSentOut(void);
@@ -715,12 +649,12 @@ static const u16 sCriticalHitChance[] = {16, 8, 4, 3, 2};
static const u32 sStatusFlagsForMoveEffects[] =
{
0x00000000,
- STATUS_SLEEP,
- STATUS_POISON,
- STATUS_BURN,
- STATUS_FREEZE,
- STATUS_PARALYSIS,
- STATUS_TOXIC_POISON,
+ STATUS1_SLEEP,
+ STATUS1_POISON,
+ STATUS1_BURN,
+ STATUS1_FREEZE,
+ STATUS1_PARALYSIS,
+ STATUS1_TOXIC_POISON,
STATUS2_CONFUSION,
STATUS2_FLINCHED,
0x00000000,
@@ -956,11 +890,11 @@ static const u16 sRarePickupItems[] =
ITEM_FULL_RESTORE,
ITEM_ETHER,
ITEM_WHITE_HERB,
- ITEM_TM44,
+ ITEM_TM44_REST,
ITEM_ELIXIR,
- ITEM_TM01,
+ ITEM_TM01_FOCUS_PUNCH,
ITEM_LEFTOVERS,
- ITEM_TM26,
+ ITEM_TM26_EARTHQUAKE,
};
static const u8 sPickupProbabilities[] =
@@ -1030,10 +964,10 @@ static void atk00_attackcanceler(void)
if (gBattleOutcome != 0)
{
- gCurrentActionFuncId = ACTION_FINISHED;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
return;
}
- if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
+ if (gBattleMons[gBattlerAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
{
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
gBattlescriptCurrInstr = BattleScript_MoveEnd;
@@ -1041,19 +975,19 @@ static void atk00_attackcanceler(void)
}
if (AtkCanceller_UnableToUseMove())
return;
- if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBankTarget, 0, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBattlerTarget, 0, 0, 0))
return;
- if (!gBattleMons[gBankAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200)
- && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
+ if (!gBattleMons[gBattlerAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200)
+ && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))
{
gBattlescriptCurrInstr = BattleScript_NoPPForMove;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
return;
}
gHitMarker &= ~(HITMARKER_x800000);
- if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
+ if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))
{
i = IsMonDisobedient(); // why use the 'i' variable...?
switch (i)
@@ -1064,51 +998,51 @@ static void atk00_attackcanceler(void)
gHitMarker |= HITMARKER_OBEYS;
return;
default:
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
return;
}
}
gHitMarker |= HITMARKER_OBEYS;
- if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED)
+ if (gProtectStructs[gBattlerTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED)
{
- PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT);
- gProtectStructs[gBankTarget].bounceMove = 0;
+ PressurePPLose(gBattlerAttacker, gBattlerTarget, MOVE_MAGIC_COAT);
+ gProtectStructs[gBattlerTarget].bounceMove = 0;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MagicCoatBounce;
return;
}
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
+ if ((gProtectStructs[gBattleTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
{
- PressurePPLose(gBankAttacker, gBanksByTurnOrder[i], MOVE_SNATCH);
- gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0;
- gBattleScripting.bank = gBanksByTurnOrder[i];
+ PressurePPLose(gBattlerAttacker, gBattleTurnOrder[i], MOVE_SNATCH);
+ gProtectStructs[gBattleTurnOrder[i]].stealMove = 0;
+ gBattleScripting.battler = gBattleTurnOrder[i];
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SnatchedMove;
return;
}
}
- if (gSpecialStatuses[gBankTarget].lightningRodRedirected)
+ if (gSpecialStatuses[gBattlerTarget].lightningRodRedirected)
{
- gSpecialStatuses[gBankTarget].lightningRodRedirected = 0;
+ gSpecialStatuses[gBattlerTarget].lightningRodRedirected = 0;
gLastUsedAbility = ABILITY_LIGHTNING_ROD;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_TookAttack;
- RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
- else if (TARGET_PROTECT_AFFECTED
- && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST))
- && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))))
+ else if (DEFENDER_IS_PROTECTED
+ && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST))
+ && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS))))
{
- CancelMultiTurnMoves(gBankAttacker);
- gBattleMoveFlags |= MOVESTATUS_MISSED;
- gLastLandedMoves[gBankTarget] = 0;
- gLastHitByType[gBankTarget] = 0;
+ CancelMultiTurnMoves(gBattlerAttacker);
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
+ gLastLandedMoves[gBattlerTarget] = 0;
+ gLastHitByType[gBattlerTarget] = 0;
gBattleCommunication[6] = 1;
gBattlescriptCurrInstr++;
}
@@ -1121,16 +1055,16 @@ static void atk00_attackcanceler(void)
static void JumpIfMoveFailed(u8 adder, u16 move)
{
const u8 *BS_ptr = gBattlescriptCurrInstr + adder;
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
- gLastLandedMoves[gBankTarget] = 0;
- gLastHitByType[gBankTarget] = 0;
+ gLastLandedMoves[gBattlerTarget] = 0;
+ gLastHitByType[gBattlerTarget] = 0;
BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
TrySetDestinyBondToHappen();
- if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBankTarget, 0, 0, move))
+ if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBattlerTarget, 0, 0, move))
return;
}
gBattlescriptCurrInstr = BS_ptr;
@@ -1138,9 +1072,9 @@ static void JumpIfMoveFailed(u8 adder, u16 move)
static void atk40_jumpifaffectedbyprotect(void)
{
- if (TARGET_PROTECT_AFFECTED)
+ if (DEFENDER_IS_PROTECTED)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(5, 0);
gBattleCommunication[6] = 1;
}
@@ -1153,9 +1087,9 @@ static void atk40_jumpifaffectedbyprotect(void)
bool8 JumpIfMoveAffectedByProtect(u16 move)
{
bool8 affected = FALSE;
- if (TARGET_PROTECT_AFFECTED)
+ if (DEFENDER_IS_PROTECTED)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
gBattleCommunication[6] = 1;
affected = TRUE;
@@ -1165,33 +1099,33 @@ bool8 JumpIfMoveAffectedByProtect(u16 move)
static bool8 AccuracyCalcHelper(u16 move)
{
- if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker)
+ if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker)
{
JumpIfMoveFailed(7, move);
return TRUE;
}
- if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBankTarget] & STATUS3_ON_AIR)
+ if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBattlerTarget] & STATUS3_ON_AIR)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
return TRUE;
}
gHitMarker &= ~HITMARKER_IGNORE_ON_AIR;
- if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBankTarget] & STATUS3_UNDERGROUND)
+ if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBattlerTarget] & STATUS3_UNDERGROUND)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
return TRUE;
}
gHitMarker &= ~HITMARKER_IGNORE_UNDERGROUND;
- if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBankTarget] & STATUS3_UNDERWATER)
+ if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBattlerTarget] & STATUS3_UNDERWATER)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
JumpIfMoveFailed(7, move);
return TRUE;
}
@@ -1214,16 +1148,16 @@ static void atk01_accuracycheck(void)
if (move == 0xFFFE || move == 0xFFFF)
{
- if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker)
+ if (gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker)
gBattlescriptCurrInstr += 7;
- else if (gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ else if (gStatuses3[gBattlerTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
else if (!JumpIfMoveAffectedByProtect(0))
gBattlescriptCurrInstr += 7;
}
else
{
- u8 type, moveAcc, holdEffect, quality;
+ u8 type, moveAcc, holdEffect, param;
s8 buff;
u16 calc;
@@ -1237,15 +1171,15 @@ static void atk01_accuracycheck(void)
if (AccuracyCalcHelper(move))
return;
- if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT)
{
- u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC];
+ u8 acc = gBattleMons[gBattlerAttacker].statStages[STAT_ACC];
buff = acc;
}
else
{
- u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC];
- buff = acc + 6 - gBattleMons[gBankTarget].statStages[STAT_STAGE_EVASION];
+ u8 acc = gBattleMons[gBattlerAttacker].statStages[STAT_ACC];
+ buff = acc + 6 - gBattleMons[gBattlerTarget].statStages[STAT_EVASION];
}
if (buff < 0)
@@ -1261,33 +1195,33 @@ static void atk01_accuracycheck(void)
calc = sAccuracyStageRatios[buff].dividend * moveAcc;
calc /= sAccuracyStageRatios[buff].divisor;
- if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES)
+ if (gBattleMons[gBattlerAttacker].ability == ABILITY_COMPOUND_EYES)
calc = (calc * 130) / 100; // 1.3 compound eyes boost
- if (WEATHER_HAS_EFFECT && gBattleMons[gBankTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY)
+ if (WEATHER_HAS_EFFECT && gBattleMons[gBattlerTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY)
calc = (calc * 80) / 100; // 1.2 sand veil loss
- if (gBattleMons[gBankAttacker].ability == ABILITY_HUSTLE && type < 9)
+ if (gBattleMons[gBattlerAttacker].ability == ABILITY_HUSTLE && type < 9)
calc = (calc * 80) / 100; // 1.2 hustle loss
- if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[gBankTarget].holdEffect;
- quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
- quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBank = gBankTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
if (holdEffect == HOLD_EFFECT_EVASION_UP)
- calc = (calc * (100 - quality)) / 100;
+ calc = (calc * (100 - param)) / 100;
// final calculation
if ((Random() % 100 + 1) > calc)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE &&
(gBattleMoves[move].target == MOVE_TARGET_BOTH || gBattleMoves[move].target == MOVE_TARGET_FOES_AND_ALLY))
gBattleCommunication[6] = 2;
@@ -1302,11 +1236,11 @@ static void atk01_accuracycheck(void)
static void atk02_attackstring(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED)))
{
- PrepareStringBattle(STRINGID_USEDMOVE, gBankAttacker);
+ PrepareStringBattle(STRINGID_USEDMOVE, gBattlerAttacker);
gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED;
}
gBattlescriptCurrInstr++;
@@ -1317,42 +1251,42 @@ static void atk03_ppreduce(void)
{
s32 ppToDeduct = 1;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- if (!gSpecialStatuses[gBankAttacker].flag20)
+ if (!gSpecialStatuses[gBattlerAttacker].flag20)
{
switch (gBattleMoves[gCurrentMove].target)
{
case MOVE_TARGET_FOES_AND_ALLY:
- ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0);
+ ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBattlerAttacker, ABILITY_PRESSURE, 0, 0);
break;
case MOVE_TARGET_BOTH:
case MOVE_TARGET_OPPONENTS_FIELD:
- ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_PRESSURE, 0, 0);
+ ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBattlerAttacker, ABILITY_PRESSURE, 0, 0);
break;
default:
- if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE)
+ if (gBattlerAttacker != gBattlerTarget && gBattleMons[gBattlerTarget].ability == ABILITY_PRESSURE)
ppToDeduct++;
break;
}
}
- if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBankAttacker].pp[gCurrMovePos])
+ if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBattlerAttacker].pp[gCurrMovePos])
{
- gProtectStructs[gBankAttacker].notFirstStrike = 1;
+ gProtectStructs[gBattlerAttacker].notFirstStrike = 1;
- if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > ppToDeduct)
- gBattleMons[gBankAttacker].pp[gCurrMovePos] -= ppToDeduct;
+ if (gBattleMons[gBattlerAttacker].pp[gCurrMovePos] > ppToDeduct)
+ gBattleMons[gBattlerAttacker].pp[gCurrMovePos] -= ppToDeduct;
else
- gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0;
+ gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 0;
- if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
- && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos]))
+ if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)
+ && !((gDisableStructs[gBattlerAttacker].unk18_b) & gBitTable[gCurrMovePos]))
{
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]);
- MarkBufferBankForExecution(gBankAttacker);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBattlerAttacker].pp[gCurrMovePos]);
+ MarkBattlerForControllerExec(gBattlerAttacker);
}
}
@@ -1365,29 +1299,29 @@ static void atk04_critcalc(void)
u8 holdEffect;
u16 item, critChance;
- item = gBattleMons[gBankAttacker].item;
+ item = gBattleMons[gBattlerAttacker].item;
if (item == ITEM_ENIGMA_BERRY)
- holdEffect = gEnigmaBerries[gBankAttacker].holdEffect;
+ holdEffect = gEnigmaBerries[gBattlerAttacker].holdEffect;
else
holdEffect = ItemId_GetHoldEffect(item);
- gStringBank = gBankAttacker;
+ gPotentialItemEffectBattler = gBattlerAttacker;
- critChance = 2 * ((gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0)
+ critChance = 2 * ((gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0)
+ (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL)
+ (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK)
+ (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK)
+ (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL)
+ (holdEffect == HOLD_EFFECT_SCOPE_LENS)
- + 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY)
- + 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD);
+ + 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBattlerAttacker].species == SPECIES_CHANSEY)
+ + 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBattlerAttacker].species == SPECIES_FARFETCHD);
if (critChance > 4)
critChance = 4;
- if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR)
- && !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT)
+ if ((gBattleMons[gBattlerTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBattlerTarget].ability != ABILITY_SHELL_ARMOR)
+ && !(gStatuses3[gBattlerAttacker] & STATUS3_CANT_SCORE_A_CRIT)
&& !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE))
&& !(Random() % sCriticalHitChance[critChance]))
gCritMultiplier = 2;
@@ -1399,32 +1333,32 @@ static void atk04_critcalc(void)
static void atk05_damagecalc(void)
{
- u16 sideStatus = gSideAffecting[GET_BANK_SIDE(gBankTarget)];
- gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove,
sideStatus, gDynamicBasePower,
- gBattleStruct->dynamicMoveType, gBankAttacker, gBankTarget);
+ gBattleStruct->dynamicMoveType, gBattlerAttacker, gBattlerTarget);
gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleScripting.dmgMultiplier;
- if (gStatuses3[gBankAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ if (gStatuses3[gBattlerAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
gBattleMoveDamage *= 2;
- if (gProtectStructs[gBankAttacker].helpingHand)
+ if (gProtectStructs[gBattlerAttacker].helpingHand)
gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
gBattlescriptCurrInstr++;
}
-void AI_CalcDmg(u8 bankAtk, u8 bankDef)
+void AI_CalcDmg(u8 attacker, u8 defender)
{
- u16 sideStatus = gSideAffecting[GET_BANK_SIDE(bankDef)];
- gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[bankAtk], &gBattleMons[bankDef], gCurrentMove,
+ u16 sideStatus = gSideStatuses[GET_BATTLER_SIDE(defender)];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[attacker], &gBattleMons[defender], gCurrentMove,
sideStatus, gDynamicBasePower,
- gBattleStruct->dynamicMoveType, bankAtk, bankDef);
+ gBattleStruct->dynamicMoveType, attacker, defender);
gDynamicBasePower = 0;
gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleScripting.dmgMultiplier;
- if (gStatuses3[bankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ if (gStatuses3[attacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
gBattleMoveDamage *= 2;
- if (gProtectStructs[bankAtk].helpingHand)
+ if (gProtectStructs[attacker].helpingHand)
gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
}
@@ -1437,26 +1371,26 @@ static void ModulateDmgByType(u8 multiplier)
switch (multiplier)
{
case TYPE_MUL_NO_EFFECT:
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
- gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
- gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
+ gMoveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE;
+ gMoveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE;
break;
case TYPE_MUL_NOT_EFFECTIVE:
- if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
- gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE)
+ gMoveResultFlags &= ~MOVE_RESULT_SUPER_EFFECTIVE;
else
- gBattleMoveFlags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ gMoveResultFlags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
}
break;
case TYPE_MUL_SUPER_EFFECTIVE:
- if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (gBattleMoves[gCurrentMove].power && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
- gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
+ gMoveResultFlags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE;
else
- gBattleMoveFlags |= MOVESTATUS_SUPEREFFECTIVE;
+ gMoveResultFlags |= MOVE_RESULT_SUPER_EFFECTIVE;
}
break;
}
@@ -1476,20 +1410,20 @@ static void atk06_typecalc(void)
GET_MOVE_TYPE(gCurrentMove, moveType);
// check stab
- if (gBattleMons[gBankAttacker].type1 == moveType || gBattleMons[gBankAttacker].type2 == moveType)
+ if (gBattleMons[gBattlerAttacker].type1 == moveType || gBattleMons[gBattlerAttacker].type2 == moveType)
{
gBattleMoveDamage = gBattleMoveDamage * 15;
gBattleMoveDamage = gBattleMoveDamage / 10;
}
- if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
{
- gLastUsedAbility = gBattleMons[gBankTarget].ability;
- gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
- gLastLandedMoves[gBankTarget] = 0;
- gLastHitByType[gBankTarget] = 0;
+ gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
+ gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
+ gLastLandedMoves[gBattlerTarget] = 0;
+ gLastHitByType[gBattlerTarget] = 0;
gBattleCommunication[6] = moveType;
- RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
else
{
@@ -1497,7 +1431,7 @@ static void atk06_typecalc(void)
{
if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT)
{
- if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT)
break;
i += 3;
continue;
@@ -1505,30 +1439,30 @@ static void atk06_typecalc(void)
else if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
{
// check type1
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1)
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1)
ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i));
// check type2
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2 &&
- gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2)
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 &&
+ gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2)
ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i));
}
i += 3;
}
}
- if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2
- && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBattlerAttacker, gCurrentMove) == 2
+ && (!(gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) || ((gMoveResultFlags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[gCurrentMove].power)
{
gLastUsedAbility = ABILITY_WONDER_GUARD;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
- gLastLandedMoves[gBankTarget] = 0;
- gLastHitByType[gBankTarget] = 0;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
+ gLastLandedMoves[gBattlerTarget] = 0;
+ gLastHitByType[gBattlerTarget] = 0;
gBattleCommunication[6] = 3;
- RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
- if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
- gProtectStructs[gBankAttacker].targetNotAffected = 1;
+ if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
+ gProtectStructs[gBattlerAttacker].targetNotAffected = 1;
gBattlescriptCurrInstr++;
}
@@ -1544,11 +1478,11 @@ static void CheckWonderGuardAndLevitate(void)
GET_MOVE_TYPE(gCurrentMove, moveType);
- if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
{
gLastUsedAbility = ABILITY_LEVITATE;
gBattleCommunication[6] = moveType;
- RecordAbilityBattle(gBankTarget, ABILITY_LEVITATE);
+ RecordAbilityBattle(gBattlerTarget, ABILITY_LEVITATE);
return;
}
@@ -1556,7 +1490,7 @@ static void CheckWonderGuardAndLevitate(void)
{
if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT)
{
- if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT)
break;
i += 3;
continue;
@@ -1564,46 +1498,46 @@ static void CheckWonderGuardAndLevitate(void)
if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
{
// check no effect
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT)
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
- gProtectStructs[gBankAttacker].targetNotAffected = 1;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
+ gProtectStructs[gBattlerAttacker].targetNotAffected = 1;
}
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2 &&
- gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 &&
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 &&
+ gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2 &&
TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT)
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
- gProtectStructs[gBankAttacker].targetNotAffected = 1;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
+ gProtectStructs[gBattlerAttacker].targetNotAffected = 1;
}
// check super effective
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 20)
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 20)
flags |= 1;
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2
- && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2
+ && gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE)
flags |= 1;
// check not very effective
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 5)
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 5)
flags |= 2;
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2
- && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2
+ && gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE)
flags |= 2;
}
i += 3;
}
- if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2)
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBattlerAttacker, gCurrentMove) == 2)
{
if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power)
{
gLastUsedAbility = ABILITY_WONDER_GUARD;
gBattleCommunication[6] = 3;
- RecordAbilityBattle(gBankTarget, ABILITY_WONDER_GUARD);
+ RecordAbilityBattle(gBattlerTarget, ABILITY_WONDER_GUARD);
}
}
}
@@ -1617,32 +1551,32 @@ static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) // same as Mo
switch (multiplier)
{
case TYPE_MUL_NO_EFFECT:
- *flags |= MOVESTATUS_NOTAFFECTED;
- *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
- *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ *flags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
+ *flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE;
+ *flags &= ~MOVE_RESULT_SUPER_EFFECTIVE;
break;
case TYPE_MUL_NOT_EFFECTIVE:
- if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT))
{
- if (*flags & MOVESTATUS_SUPEREFFECTIVE)
- *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ if (*flags & MOVE_RESULT_SUPER_EFFECTIVE)
+ *flags &= ~MOVE_RESULT_SUPER_EFFECTIVE;
else
- *flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ *flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
}
break;
case TYPE_MUL_SUPER_EFFECTIVE:
- if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ if (gBattleMoves[move].power && !(*flags & MOVE_RESULT_NO_EFFECT))
{
- if (*flags & MOVESTATUS_NOTVERYEFFECTIVE)
- *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ if (*flags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
+ *flags &= ~MOVE_RESULT_NOT_VERY_EFFECTIVE;
else
- *flags |= MOVESTATUS_SUPEREFFECTIVE;
+ *flags |= MOVE_RESULT_SUPER_EFFECTIVE;
}
break;
}
}
-u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef)
+u8 TypeCalc(u16 move, u8 attacker, u8 defender)
{
s32 i = 0;
u8 flags = 0;
@@ -1654,15 +1588,15 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef)
moveType = gBattleMoves[move].type;
// check stab
- if (gBattleMons[bankAtk].type1 == moveType || gBattleMons[bankAtk].type2 == moveType)
+ if (gBattleMons[attacker].type1 == moveType || gBattleMons[attacker].type2 == moveType)
{
gBattleMoveDamage = gBattleMoveDamage * 15;
gBattleMoveDamage = gBattleMoveDamage / 10;
}
- if (gBattleMons[bankDef].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ if (gBattleMons[defender].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
{
- flags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ flags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
}
else
{
@@ -1670,7 +1604,7 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef)
{
if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT)
{
- if (gBattleMons[bankDef].status2 & STATUS2_FORESIGHT)
+ if (gBattleMons[defender].status2 & STATUS2_FORESIGHT)
break;
i += 3;
continue;
@@ -1679,23 +1613,23 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef)
else if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
{
// check type1
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[bankDef].type1)
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[defender].type1)
ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags);
// check type2
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[bankDef].type2 &&
- gBattleMons[bankDef].type1 != gBattleMons[bankDef].type2)
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[defender].type2 &&
+ gBattleMons[defender].type1 != gBattleMons[defender].type2)
ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags);
}
i += 3;
}
}
- if (gBattleMons[bankDef].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_MISSED)
- && AttacksThisTurn(bankAtk, move) == 2
- && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ if (gBattleMons[defender].ability == ABILITY_WONDER_GUARD && !(flags & MOVE_RESULT_MISSED)
+ && AttacksThisTurn(attacker, move) == 2
+ && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[move].power)
{
- flags |= MOVESTATUS_MISSED;
+ flags |= MOVE_RESULT_MISSED;
}
return flags;
}
@@ -1714,7 +1648,7 @@ u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility)
if (targetAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND)
{
- flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED;
+ flags = MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE;
}
else
{
@@ -1738,9 +1672,9 @@ u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility)
}
}
if (targetAbility == ABILITY_WONDER_GUARD
- && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[move].power)
- flags |= MOVESTATUS_NOTAFFECTED;
+ flags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
return flags;
}
@@ -1766,46 +1700,47 @@ static void Unused_ApplyRandomDmgMultiplier(void)
static void atk07_adjustnormaldamage(void)
{
- u8 holdEffect, quality;
+ u8 holdEffect, param;
ApplyRandomDmgMultiplier();
- if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
- quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBank = gBankTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
- if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
{
- RecordItemEffectBattle(gBankTarget, holdEffect);
- gSpecialStatuses[gBankTarget].focusBanded = 1;
+ RecordItemEffectBattle(gBattlerTarget, holdEffect);
+ gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
- if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
goto END;
- if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured
- && !gSpecialStatuses[gBankTarget].focusBanded)
+ if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBattlerTarget].endured
+ && !gSpecialStatuses[gBattlerTarget].focusBanded)
goto END;
- if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
goto END;
- gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
- if (gProtectStructs[gBankTarget].endured)
+ if (gProtectStructs[gBattlerTarget].endured)
{
- gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
}
- else if (gSpecialStatuses[gBankTarget].focusBanded)
+ else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
- gBattleMoveFlags |= MOVESTATUS_HUNGON;
- gLastUsedItem = gBattleMons[gBankTarget].item;
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
END:
@@ -1814,44 +1749,45 @@ static void atk07_adjustnormaldamage(void)
static void atk08_adjustnormaldamage2(void) // The same as 0x7 except it doesn't check for false swipe move effect.
{
- u8 holdEffect, quality;
+ u8 holdEffect, param;
ApplyRandomDmgMultiplier();
- if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
- quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBank = gBankTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
- if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
{
- RecordItemEffectBattle(gBankTarget, holdEffect);
- gSpecialStatuses[gBankTarget].focusBanded = 1;
+ RecordItemEffectBattle(gBattlerTarget, holdEffect);
+ gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
- if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
goto END;
- if (!gProtectStructs[gBankTarget].endured && !gSpecialStatuses[gBankTarget].focusBanded)
+ if (!gProtectStructs[gBattlerTarget].endured && !gSpecialStatuses[gBattlerTarget].focusBanded)
goto END;
- if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
goto END;
- gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
- if (gProtectStructs[gBankTarget].endured)
+ if (gProtectStructs[gBattlerTarget].endured)
{
- gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
}
- else if (gSpecialStatuses[gBankTarget].focusBanded)
+ else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
- gBattleMoveFlags |= MOVESTATUS_HUNGON;
- gLastUsedItem = gBattleMons[gBankTarget].item;
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
END:
@@ -1860,7 +1796,7 @@ static void atk08_adjustnormaldamage2(void) // The same as 0x7 except it doesn't
static void atk09_attackanimation(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE))
@@ -1880,17 +1816,17 @@ static void atk09_attackanimation(void)
gBattlescriptCurrInstr++;
return;
}
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
u8 multihit;
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBattlerAttacker;
- if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
multihit = gMultiHitCounter;
else if (gMultiHitCounter != 0 && gMultiHitCounter != 1)
{
- if (gBattleMons[gBankTarget].hp <= gBattleMoveDamage)
+ if (gBattleMons[gBattlerTarget].hp <= gBattleMoveDamage)
multihit = 1;
else
multihit = gMultiHitCounter;
@@ -1898,10 +1834,10 @@ static void atk09_attackanimation(void)
else
multihit = gMultiHitCounter;
- EmitMoveAnimation(0, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker], multihit);
+ BtlController_EmitMoveAnimation(0, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBattlerAttacker].friendship, &gDisableStructs[gBattlerAttacker], multihit);
gBattleScripting.animTurn += 1;
gBattleScripting.animTargetsHit += 1;
- MarkBufferBankForExecution(gBankAttacker);
+ MarkBattlerForControllerExec(gBattlerAttacker);
gBattlescriptCurrInstr++;
}
else
@@ -1914,22 +1850,22 @@ static void atk09_attackanimation(void)
static void atk0A_waitanimation(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
gBattlescriptCurrInstr++;
}
static void atk0B_healthbarupdate(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
{
- PrepareStringBattle(STRINGID_SUBSTITUTEDAMAGED, gActiveBank);
+ PrepareStringBattle(STRINGID_SUBSTITUTEDAMAGED, gActiveBattler);
}
else
{
@@ -1943,10 +1879,10 @@ static void atk0B_healthbarupdate(void)
else
healthValue = maxPossibleDmgValue;
- EmitHealthBarUpdate(0, healthValue);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitHealthBarUpdate(0, healthValue);
+ MarkBattlerForControllerExec(gActiveBattler);
- if (GetBankSide(gActiveBank) == SIDE_PLAYER && gBattleMoveDamage > 0)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleMoveDamage > 0)
gBattleResults.unk5_0 = 1;
}
}
@@ -1958,7 +1894,7 @@ static void atk0C_datahpupdate(void)
{
u32 moveType;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
if (gBattleStruct->dynamicMoveType == 0)
@@ -1968,27 +1904,27 @@ static void atk0C_datahpupdate(void)
else
moveType = gBattleMoves[gCurrentMove].type;
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBattler].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
{
- if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage)
+ if (gDisableStructs[gActiveBattler].substituteHP >= gBattleMoveDamage)
{
- if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBank].moveturnLostHP = gBattleMoveDamage;
- gDisableStructs[gActiveBank].substituteHP -= gBattleMoveDamage;
+ if (gSpecialStatuses[gActiveBattler].dmg == 0)
+ gSpecialStatuses[gActiveBattler].dmg = gBattleMoveDamage;
+ gDisableStructs[gActiveBattler].substituteHP -= gBattleMoveDamage;
gHpDealt = gBattleMoveDamage;
}
else
{
- if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP;
- gHpDealt = gDisableStructs[gActiveBank].substituteHP;
- gDisableStructs[gActiveBank].substituteHP = 0;
+ if (gSpecialStatuses[gActiveBattler].dmg == 0)
+ gSpecialStatuses[gActiveBattler].dmg = gDisableStructs[gActiveBattler].substituteHP;
+ gHpDealt = gDisableStructs[gActiveBattler].substituteHP;
+ gDisableStructs[gActiveBattler].substituteHP = 0;
}
// check substitute fading
- if (gDisableStructs[gActiveBank].substituteHP == 0)
+ if (gDisableStructs[gActiveBattler].substituteHP == 0)
{
gBattlescriptCurrInstr += 2;
BattleScriptPushCursor();
@@ -2001,9 +1937,9 @@ static void atk0C_datahpupdate(void)
gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE);
if (gBattleMoveDamage < 0) // hp goes up
{
- gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
- if (gBattleMons[gActiveBank].hp > gBattleMons[gActiveBank].maxHP)
- gBattleMons[gActiveBank].hp = gBattleMons[gActiveBank].maxHP;
+ gBattleMons[gActiveBattler].hp -= gBattleMoveDamage;
+ if (gBattleMons[gActiveBattler].hp > gBattleMons[gActiveBattler].maxHP)
+ gBattleMons[gActiveBattler].hp = gBattleMons[gActiveBattler].maxHP;
}
else // hp goes down
@@ -2014,79 +1950,79 @@ static void atk0C_datahpupdate(void)
}
else
{
- gTakenDmg[gActiveBank] += gBattleMoveDamage;
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
- gTakenDmgBanks[gActiveBank] = gBankAttacker;
+ gTakenDmg[gActiveBattler] += gBattleMoveDamage;
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
+ gTakenDmgByBattler[gActiveBattler] = gBattlerAttacker;
else
- gTakenDmgBanks[gActiveBank] = gBankTarget;
+ gTakenDmgByBattler[gActiveBattler] = gBattlerTarget;
}
- if (gBattleMons[gActiveBank].hp > gBattleMoveDamage)
+ if (gBattleMons[gActiveBattler].hp > gBattleMoveDamage)
{
- gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
+ gBattleMons[gActiveBattler].hp -= gBattleMoveDamage;
gHpDealt = gBattleMoveDamage;
}
else
{
- gHpDealt = gBattleMons[gActiveBank].hp;
- gBattleMons[gActiveBank].hp = 0;
+ gHpDealt = gBattleMons[gActiveBattler].hp;
+ gBattleMons[gActiveBattler].hp = 0;
}
- if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000))
- gSpecialStatuses[gActiveBank].moveturnLostHP = gHpDealt;
+ if (!gSpecialStatuses[gActiveBattler].dmg && !(gHitMarker & HITMARKER_x100000))
+ gSpecialStatuses[gActiveBattler].dmg = gHpDealt;
- if (moveType <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
+ if (IS_MOVE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
{
- gProtectStructs[gActiveBank].physicalDmg = gHpDealt;
- gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHpDealt;
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ gProtectStructs[gActiveBattler].physicalDmg = gHpDealt;
+ gSpecialStatuses[gActiveBattler].physicalDmg = gHpDealt;
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
{
- gProtectStructs[gActiveBank].physicalBank = gBankAttacker;
- gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker;
+ gProtectStructs[gActiveBattler].physicalBattlerId = gBattlerAttacker;
+ gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerAttacker;
}
else
{
- gProtectStructs[gActiveBank].physicalBank = gBankTarget;
- gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget;
+ gProtectStructs[gActiveBattler].physicalBattlerId = gBattlerTarget;
+ gSpecialStatuses[gActiveBattler].physicalBattlerId = gBattlerTarget;
}
}
- else if (moveType > 8 && !(gHitMarker & HITMARKER_x100000))
+ else if (!IS_MOVE_PHYSICAL(moveType) && !(gHitMarker & HITMARKER_x100000))
{
- gProtectStructs[gActiveBank].specialDmg = gHpDealt;
- gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHpDealt;
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ gProtectStructs[gActiveBattler].specialDmg = gHpDealt;
+ gSpecialStatuses[gActiveBattler].specialDmg = gHpDealt;
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
{
- gProtectStructs[gActiveBank].specialBank = gBankAttacker;
- gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker;
+ gProtectStructs[gActiveBattler].specialBattlerId = gBattlerAttacker;
+ gSpecialStatuses[gActiveBattler].specialBattlerId = gBattlerAttacker;
}
else
{
- gProtectStructs[gActiveBank].specialBank = gBankTarget;
- gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankTarget;
+ gProtectStructs[gActiveBattler].specialBattlerId = gBattlerTarget;
+ gSpecialStatuses[gActiveBattler].specialBattlerId = gBattlerTarget;
}
}
}
gHitMarker &= ~(HITMARKER_x100000);
- EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
else
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
- gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF;
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (gSpecialStatuses[gActiveBattler].dmg == 0)
+ gSpecialStatuses[gActiveBattler].dmg = 0xFFFF;
}
gBattlescriptCurrInstr += 2;
}
static void atk0D_critmessage(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (gCritMultiplier == 2 && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
- PrepareStringBattle(STRINGID_CRITICALHIT, gBankAttacker);
+ PrepareStringBattle(STRINGID_CRITICALHIT, gBattlerAttacker);
gBattleCommunication[MSG_DISPLAY] = 1;
}
gBattlescriptCurrInstr++;
@@ -2095,44 +2031,44 @@ static void atk0D_critmessage(void)
static void atk0E_effectivenesssound(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- gActiveBank = gBankTarget;
- if (!(gBattleMoveFlags & MOVESTATUS_MISSED))
+ gActiveBattler = gBattlerTarget;
+ if (!(gMoveResultFlags & MOVE_RESULT_MISSED))
{
- switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED)))
+ switch (gMoveResultFlags & (u8)(~(MOVE_RESULT_MISSED)))
{
- case MOVESTATUS_SUPEREFFECTIVE:
- EmitPlaySE(0, SE_KOUKA_H);
- MarkBufferBankForExecution(gActiveBank);
+ case MOVE_RESULT_SUPER_EFFECTIVE:
+ BtlController_EmitPlaySE(0, SE_KOUKA_H);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
- case MOVESTATUS_NOTVERYEFFECTIVE:
- EmitPlaySE(0, SE_KOUKA_L);
- MarkBufferBankForExecution(gActiveBank);
+ case MOVE_RESULT_NOT_VERY_EFFECTIVE:
+ BtlController_EmitPlaySE(0, SE_KOUKA_L);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
- case MOVESTATUS_NOTAFFECTED:
- case MOVESTATUS_FAILED:
+ case MOVE_RESULT_DOESNT_AFFECT_FOE:
+ case MOVE_RESULT_FAILED:
// no sound
break;
- case MOVESTATUS_ENDURED:
- case MOVESTATUS_ONEHITKO:
- case MOVESTATUS_HUNGON:
+ case MOVE_RESULT_FOE_ENDURED:
+ case MOVE_RESULT_ONE_HIT_KO:
+ case MOVE_RESULT_FOE_HUNG_ON:
default:
- if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE)
{
- EmitPlaySE(0, SE_KOUKA_H);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitPlaySE(0, SE_KOUKA_H);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
+ else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
{
- EmitPlaySE(0, SE_KOUKA_L);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitPlaySE(0, SE_KOUKA_L);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)))
+ else if (!(gMoveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)))
{
- EmitPlaySE(0, SE_KOUKA_M);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitPlaySE(0, SE_KOUKA_M);
+ MarkBattlerForControllerExec(gActiveBattler);
}
break;
}
@@ -2144,10 +2080,10 @@ static void atk0F_resultmessage(void)
{
u32 stringId = 0;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2))
+ if (gMoveResultFlags & MOVE_RESULT_MISSED && (!(gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE) || gBattleCommunication[6] > 2))
{
stringId = gMissStringIds[gBattleCommunication[6]];
gBattleCommunication[MSG_DISPLAY] = 1;
@@ -2155,64 +2091,64 @@ static void atk0F_resultmessage(void)
else
{
gBattleCommunication[MSG_DISPLAY] = 1;
- switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED)))
+ switch (gMoveResultFlags & (u8)(~(MOVE_RESULT_MISSED)))
{
- case MOVESTATUS_SUPEREFFECTIVE:
+ case MOVE_RESULT_SUPER_EFFECTIVE:
stringId = STRINGID_SUPEREFFECTIVE;
break;
- case MOVESTATUS_NOTVERYEFFECTIVE:
+ case MOVE_RESULT_NOT_VERY_EFFECTIVE:
stringId = STRINGID_NOTVERYEFFECTIVE;
break;
- case MOVESTATUS_ONEHITKO:
+ case MOVE_RESULT_ONE_HIT_KO:
stringId = STRINGID_ONEHITKO;
break;
- case MOVESTATUS_ENDURED:
+ case MOVE_RESULT_FOE_ENDURED:
stringId = STRINGID_PKMNENDUREDHIT;
break;
- case MOVESTATUS_FAILED:
+ case MOVE_RESULT_FAILED:
stringId = STRINGID_BUTITFAILED;
break;
- case MOVESTATUS_NOTAFFECTED:
+ case MOVE_RESULT_DOESNT_AFFECT_FOE:
stringId = STRINGID_ITDOESNTAFFECT;
break;
- case MOVESTATUS_HUNGON:
- gLastUsedItem = gBattleMons[gBankTarget].item;
- gStringBank = gBankTarget;
- gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ case MOVE_RESULT_FOE_HUNG_ON:
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ gPotentialItemEffectBattler = gBattlerTarget;
+ gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
return;
default:
- if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
{
stringId = STRINGID_ITDOESNTAFFECT;
}
- else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO)
+ else if (gMoveResultFlags & MOVE_RESULT_ONE_HIT_KO)
{
- gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO);
- gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE);
- gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE);
+ gMoveResultFlags &= ~(MOVE_RESULT_ONE_HIT_KO);
+ gMoveResultFlags &= ~(MOVE_RESULT_SUPER_EFFECTIVE);
+ gMoveResultFlags &= ~(MOVE_RESULT_NOT_VERY_EFFECTIVE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_OneHitKOMsg;
return;
}
- else if (gBattleMoveFlags & MOVESTATUS_ENDURED)
+ else if (gMoveResultFlags & MOVE_RESULT_FOE_ENDURED)
{
- gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_EnduredMsg;
return;
}
- else if (gBattleMoveFlags & MOVESTATUS_HUNGON)
+ else if (gMoveResultFlags & MOVE_RESULT_FOE_HUNG_ON)
{
- gLastUsedItem = gBattleMons[gBankTarget].item;
- gStringBank = gBankTarget;
- gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
+ gPotentialItemEffectBattler = gBattlerTarget;
+ gMoveResultFlags &= ~(MOVE_RESULT_FOE_ENDURED | MOVE_RESULT_FOE_HUNG_ON);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
return;
}
- else if (gBattleMoveFlags & MOVESTATUS_FAILED)
+ else if (gMoveResultFlags & MOVE_RESULT_FAILED)
{
stringId = STRINGID_BUTITFAILED;
}
@@ -2224,17 +2160,17 @@ static void atk0F_resultmessage(void)
}
if (stringId)
- PrepareStringBattle(stringId, gBankAttacker);
+ PrepareStringBattle(stringId, gBattlerAttacker);
gBattlescriptCurrInstr++;
}
static void atk10_printstring(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
u16 var = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
- PrepareStringBattle(var, gBankAttacker);
+ PrepareStringBattle(var, gBattlerAttacker);
gBattlescriptCurrInstr += 3;
gBattleCommunication[MSG_DISPLAY] = 1;
}
@@ -2242,10 +2178,10 @@ static void atk10_printstring(void)
static void atk11_printselectionstring(void)
{
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBattlerAttacker;
- EmitPrintSelectionString(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitPrintSelectionString(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
gBattleCommunication[MSG_DISPLAY] = 1;
@@ -2253,7 +2189,7 @@ static void atk11_printselectionstring(void)
static void atk12_waitmessage(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
if (!gBattleCommunication[MSG_DISPLAY])
{
@@ -2274,12 +2210,12 @@ static void atk12_waitmessage(void)
static void atk13_printfromtable(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
const u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
ptr += gBattleCommunication[MULTISTRING_CHOOSER];
- PrepareStringBattle(*ptr, gBankAttacker);
+ PrepareStringBattle(*ptr, gBattlerAttacker);
gBattlescriptCurrInstr += 5;
gBattleCommunication[MSG_DISPLAY] = 1;
@@ -2288,26 +2224,26 @@ static void atk13_printfromtable(void)
static void atk14_printselectionstringfromtable(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
const u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
ptr += gBattleCommunication[MULTISTRING_CHOOSER];
- gActiveBank = gBankAttacker;
- EmitPrintSelectionString(0, *ptr);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitPrintSelectionString(0, *ptr);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
gBattleCommunication[MSG_DISPLAY] = 1;
}
}
-u8 BankGetTurnOrder(u8 bank)
+u8 GetBattlerTurnOrderNum(u8 battlerId)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gBanksByTurnOrder[i] == bank)
+ if (gBattleTurnOrder[i] == battlerId)
break;
}
return i;
@@ -2334,67 +2270,67 @@ void SetMoveEffect(bool8 primary, u8 certain)
if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_AFFECTS_USER)
{
- gEffectBank = gBankAttacker; // bank that effects get applied on
+ gEffectBattler = gBattlerAttacker; // battlerId that effects get applied on
gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_AFFECTS_USER);
affectsUser = MOVE_EFFECT_AFFECTS_USER;
- gBattleScripting.bank = gBankTarget; // theoretically the attacker
+ gBattleScripting.battler = gBattlerTarget; // theoretically the attacker
}
else
{
- gEffectBank = gBankTarget;
- gBattleScripting.bank = gBankAttacker;
+ gEffectBattler = gBattlerTarget;
+ gBattleScripting.battler = gBattlerAttacker;
}
- if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
INCREMENT_RESET_RETURN
- if (gSideAffecting[GET_BANK_SIDE(gEffectBank)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ if (gSideStatuses[GET_BATTLER_SIDE(gEffectBattler)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7)
INCREMENT_RESET_RETURN
- if (gBattleMons[gEffectBank].hp == 0
+ if (gBattleMons[gEffectBattler].hp == 0
&& gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_PAYDAY
&& gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_STEAL_ITEM)
INCREMENT_RESET_RETURN
- if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && affectsUser != MOVE_EFFECT_AFFECTS_USER)
+ if (gBattleMons[gEffectBattler].status2 & STATUS2_SUBSTITUTE && affectsUser != MOVE_EFFECT_AFFECTS_USER)
INCREMENT_RESET_RETURN
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) // status change
{
switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
{
- case STATUS_SLEEP:
+ case STATUS1_SLEEP:
// check active uproar
- if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF)
+ if (gBattleMons[gEffectBattler].ability != ABILITY_SOUNDPROOF)
{
- for (gActiveBank = 0;
- gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR);
- gActiveBank++)
+ for (gActiveBattler = 0;
+ gActiveBattler < gBattlersCount && !(gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR);
+ gActiveBattler++)
{}
}
else
- gActiveBank = gNoOfAllBanks;
+ gActiveBattler = gBattlersCount;
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
- if (gActiveBank != gNoOfAllBanks)
+ if (gActiveBattler != gBattlersCount)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_VITAL_SPIRIT)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_INSOMNIA)
break;
- CancelMultiTurnMoves(gEffectBank);
+ CancelMultiTurnMoves(gEffectBattler);
statusChanged = TRUE;
break;
- case STATUS_POISON:
- if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY
+ case STATUS1_POISON:
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_IMMUNITY;
- RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY);
+ RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
@@ -2410,8 +2346,8 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
RESET_RETURN
}
- if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON
- || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ if ((gBattleMons[gEffectBattler].type1 == TYPE_POISON || gBattleMons[gEffectBattler].type2 == TYPE_POISON
+ || gBattleMons[gEffectBattler].type1 == TYPE_STEEL || gBattleMons[gEffectBattler].type2 == TYPE_STEEL)
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
@@ -2421,27 +2357,27 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
RESET_RETURN
}
- if (gBattleMons[gEffectBank].type1 == TYPE_POISON)
+ if (gBattleMons[gEffectBattler].type1 == TYPE_POISON)
break;
- if (gBattleMons[gEffectBank].type2 == TYPE_POISON)
+ if (gBattleMons[gEffectBattler].type2 == TYPE_POISON)
break;
- if (gBattleMons[gEffectBank].type1 == TYPE_STEEL)
+ if (gBattleMons[gEffectBattler].type1 == TYPE_STEEL)
break;
- if (gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ if (gBattleMons[gEffectBattler].type2 == TYPE_STEEL)
break;
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY)
break;
statusChanged = TRUE;
break;
- case STATUS_BURN:
- if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL
+ case STATUS1_BURN:
+ if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_WATER_VEIL;
- RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL);
+ RecordAbilityBattle(gEffectBattler, ABILITY_WATER_VEIL);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_BRNPrevention;
@@ -2456,8 +2392,8 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
RESET_RETURN
}
- if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE
- || gBattleMons[gEffectBank].type2 == TYPE_FIRE)
+ if ((gBattleMons[gEffectBattler].type1 == TYPE_FIRE
+ || gBattleMons[gEffectBattler].type2 == TYPE_FIRE)
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
@@ -2467,41 +2403,41 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
RESET_RETURN
}
- if (gBattleMons[gEffectBank].type1 == TYPE_FIRE)
+ if (gBattleMons[gEffectBattler].type1 == TYPE_FIRE)
break;
- if (gBattleMons[gEffectBank].type2 == TYPE_FIRE)
+ if (gBattleMons[gEffectBattler].type2 == TYPE_FIRE)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_WATER_VEIL)
break;
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
statusChanged = TRUE;
break;
- case STATUS_FREEZE:
+ case STATUS1_FREEZE:
if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY)
noSunCanFreeze = FALSE;
- if (gBattleMons[gEffectBank].type1 == TYPE_ICE)
+ if (gBattleMons[gEffectBattler].type1 == TYPE_ICE)
break;
- if (gBattleMons[gEffectBank].type2 == TYPE_ICE)
+ if (gBattleMons[gEffectBattler].type2 == TYPE_ICE)
break;
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
if (noSunCanFreeze == 0)
break;
- if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_MAGMA_ARMOR)
break;
- CancelMultiTurnMoves(gEffectBank);
+ CancelMultiTurnMoves(gEffectBattler);
statusChanged = TRUE;
break;
- case STATUS_PARALYSIS:
- if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER)
+ case STATUS1_PARALYSIS:
+ if (gBattleMons[gEffectBattler].ability == ABILITY_LIMBER)
{
if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
{
gLastUsedAbility = ABILITY_LIMBER;
- RecordAbilityBattle(gEffectBank, ABILITY_LIMBER);
+ RecordAbilityBattle(gEffectBattler, ABILITY_LIMBER);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PRLZPrevention;
@@ -2520,16 +2456,16 @@ void SetMoveEffect(bool8 primary, u8 certain)
else
break;
}
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
statusChanged = TRUE;
break;
- case STATUS_TOXIC_POISON:
- if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
+ case STATUS1_TOXIC_POISON:
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
gLastUsedAbility = ABILITY_IMMUNITY;
- RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY);
+ RecordAbilityBattle(gEffectBattler, ABILITY_IMMUNITY);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
@@ -2545,8 +2481,8 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
RESET_RETURN
}
- if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON
- || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ if ((gBattleMons[gEffectBattler].type1 == TYPE_POISON || gBattleMons[gEffectBattler].type2 == TYPE_POISON
+ || gBattleMons[gEffectBattler].type1 == TYPE_STEEL || gBattleMons[gEffectBattler].type2 == TYPE_STEEL)
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
{
@@ -2556,25 +2492,25 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
RESET_RETURN
}
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
break;
- if (gBattleMons[gEffectBank].type1 != TYPE_POISON
- && gBattleMons[gEffectBank].type2 != TYPE_POISON
- && gBattleMons[gEffectBank].type1 != TYPE_STEEL
- && gBattleMons[gEffectBank].type2 != TYPE_STEEL)
+ if (gBattleMons[gEffectBattler].type1 != TYPE_POISON
+ && gBattleMons[gEffectBattler].type2 != TYPE_POISON
+ && gBattleMons[gEffectBattler].type1 != TYPE_STEEL
+ && gBattleMons[gEffectBattler].type2 != TYPE_STEEL)
{
- if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_IMMUNITY)
break;
// It's redundant, because at this point we know the status1 value is 0.
- gBattleMons[gEffectBank].status1 &= ~(STATUS_TOXIC_POISON);
- gBattleMons[gEffectBank].status1 &= ~(STATUS_POISON);
+ gBattleMons[gEffectBattler].status1 &= ~(STATUS1_TOXIC_POISON);
+ gBattleMons[gEffectBattler].status1 &= ~(STATUS1_POISON);
statusChanged = TRUE;
break;
}
else
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
}
break;
}
@@ -2582,16 +2518,16 @@ void SetMoveEffect(bool8 primary, u8 certain)
{
BattleScriptPush(gBattlescriptCurrInstr + 1);
- if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP)
- gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2);
+ if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS1_SLEEP)
+ gBattleMons[gEffectBattler].status1 |= ((Random() & 3) + 2);
else
- gBattleMons[gEffectBank].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattleMons[gEffectBattler].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
- gActiveBank = gEffectBank;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gEffectBattler;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
{
@@ -2626,7 +2562,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
else
{
- if (gBattleMons[gEffectBank].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ if (gBattleMons[gEffectBattler].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
{
gBattlescriptCurrInstr++;
}
@@ -2636,26 +2572,26 @@ void SetMoveEffect(bool8 primary, u8 certain)
switch (gBattleCommunication[MOVE_EFFECT_BYTE])
{
case MOVE_EFFECT_CONFUSION:
- if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO
- || gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_OWN_TEMPO
+ || gBattleMons[gEffectBattler].status2 & STATUS2_CONFUSION)
{
gBattlescriptCurrInstr++;
}
else
{
- gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2;
+ gBattleMons[gEffectBattler].status2 |= (((Random()) % 0x4)) + 2;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
}
break;
case MOVE_EFFECT_FLINCH:
- if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_INNER_FOCUS)
{
if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
{
gLastUsedAbility = ABILITY_INNER_FOCUS;
- RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS);
+ RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS);
gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
}
else
@@ -2665,18 +2601,18 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
else
{
- if (BankGetTurnOrder(gEffectBank) > gCurrentTurnActionNumber)
- gBattleMons[gEffectBank].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ if (GetBattlerTurnOrderNum(gEffectBattler) > gCurrentTurnActionNumber)
+ gBattleMons[gEffectBattler].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
gBattlescriptCurrInstr++;
}
break;
case MOVE_EFFECT_UPROAR:
- if (!(gBattleMons[gEffectBank].status2 & STATUS2_UPROAR))
+ if (!(gBattleMons[gEffectBattler].status2 & STATUS2_UPROAR))
{
- gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBank] = gCurrentMove;
- gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4;
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gBattleMons[gEffectBattler].status2 |= ((Random() & 3) + 2) << 4;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
@@ -2687,10 +2623,10 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
break;
case MOVE_EFFECT_PAYDAY:
- if (GET_BANK_SIDE(gBankAttacker) == SIDE_PLAYER)
+ if (GET_BATTLER_SIDE(gBattlerAttacker) == B_SIDE_PLAYER)
{
u16 PayDay = gPaydayMoney;
- gPaydayMoney += (gBattleMons[gBankAttacker].level * 5);
+ gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 5);
if (PayDay > gPaydayMoney)
gPaydayMoney = 0xFFFF;
}
@@ -2698,7 +2634,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
break;
case MOVE_EFFECT_TRI_ATTACK:
- if (gBattleMons[gEffectBank].status1)
+ if (gBattleMons[gEffectBattler].status1)
{
gBattlescriptCurrInstr++;
}
@@ -2709,23 +2645,23 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
break;
case MOVE_EFFECT_CHARGING:
- gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBank] = gCurrentMove;
- gProtectStructs[gEffectBank].chargingTurn = 1;
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gProtectStructs[gEffectBattler].chargingTurn = 1;
gBattlescriptCurrInstr++;
break;
case MOVE_EFFECT_WRAP:
- if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED)
+ if (gBattleMons[gEffectBattler].status2 & STATUS2_WRAPPED)
{
gBattlescriptCurrInstr++;
}
else
{
- gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 3) << 0xD;
+ gBattleMons[gEffectBattler].status2 |= ((Random() & 3) + 3) << 0xD;
- *(gBattleStruct->wrappedMove + gEffectBank * 2 + 0) = gCurrentMove;
- *(gBattleStruct->wrappedMove + gEffectBank * 2 + 1) = gCurrentMove >> 8;
- *(gBattleStruct->wrappedBy + gEffectBank) = gBankAttacker;
+ *(gBattleStruct->wrappedMove + gEffectBattler * 2 + 0) = gCurrentMove;
+ *(gBattleStruct->wrappedMove + gEffectBattler * 2 + 1) = gCurrentMove >> 8;
+ *(gBattleStruct->wrappedBy + gEffectBattler) = gBattlerAttacker;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
@@ -2832,13 +2768,13 @@ void SetMoveEffect(bool8 primary, u8 certain)
}
break;
case MOVE_EFFECT_RECHARGE:
- gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE;
- gDisableStructs[gEffectBank].rechargeCounter = 2;
- gLockedMoves[gEffectBank] = gCurrentMove;
+ gBattleMons[gEffectBattler].status2 |= STATUS2_RECHARGE;
+ gDisableStructs[gEffectBattler].rechargeCounter = 2;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
gBattlescriptCurrInstr++;
break;
case MOVE_EFFECT_RAGE:
- gBattleMons[gBankAttacker].status2 |= STATUS2_RAGE;
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_RAGE;
gBattlescriptCurrInstr++;
break;
case MOVE_EFFECT_STEAL_ITEM:
@@ -2849,8 +2785,8 @@ void SetMoveEffect(bool8 primary, u8 certain)
break;
}
- side = GetBankSide(gBankAttacker);
- if (GetBankSide(gBankAttacker) == SIDE_OPPONENT
+ side = GetBattlerSide(gBattlerAttacker);
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags &
(BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
@@ -2866,56 +2802,56 @@ void SetMoveEffect(bool8 primary, u8 certain)
| BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
| BATTLE_TYPE_SECRET_BASE))
- && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]]))
+ && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]))
{
gBattlescriptCurrInstr++;
}
- else if (gBattleMons[gBankTarget].item
- && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD)
+ else if (gBattleMons[gBattlerTarget].item
+ && gBattleMons[gBattlerTarget].ability == ABILITY_STICKY_HOLD)
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_NoItemSteal;
- gLastUsedAbility = gBattleMons[gBankTarget].ability;
- RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
+ RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
- else if (gBattleMons[gBankAttacker].item != 0
- || gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY
- || IS_ITEM_MAIL(gBattleMons[gBankTarget].item)
- || gBattleMons[gBankTarget].item == 0)
+ else if (gBattleMons[gBattlerAttacker].item != 0
+ || gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY
+ || IS_ITEM_MAIL(gBattleMons[gBattlerTarget].item)
+ || gBattleMons[gBattlerTarget].item == 0)
{
gBattlescriptCurrInstr++;
}
else
{
- u16* changedItem = &gBattleStruct->changedItems[gBankAttacker];
- gLastUsedItem = *changedItem = gBattleMons[gBankTarget].item;
- gBattleMons[gBankTarget].item = 0;
+ u16* changedItem = &gBattleStruct->changedItems[gBattlerAttacker];
+ gLastUsedItem = *changedItem = gBattleMons[gBattlerTarget].item;
+ gBattleMons[gBattlerTarget].item = 0;
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
- MarkBufferBankForExecution(gBankAttacker);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
+ MarkBattlerForControllerExec(gBattlerAttacker);
- gActiveBank = gBankTarget;
- EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item);
- MarkBufferBankForExecution(gBankTarget);
+ gActiveBattler = gBattlerTarget;
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
+ MarkBattlerForControllerExec(gBattlerTarget);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_ItemSteal;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 0) = 0;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 1) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBattlerTarget]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBattlerTarget]) + 1) = 0;
}
}
break;
case MOVE_EFFECT_PREVENT_ESCAPE:
- gBattleMons[gBankTarget].status2 |= STATUS2_ESCAPE_PREVENTION;
- gDisableStructs[gBankTarget].bankPreventingEscape = gBankAttacker;
+ gBattleMons[gBattlerTarget].status2 |= STATUS2_ESCAPE_PREVENTION;
+ gDisableStructs[gBattlerTarget].battlerPreventingEscape = gBattlerAttacker;
gBattlescriptCurrInstr++;
break;
case MOVE_EFFECT_NIGHTMARE:
- gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE;
+ gBattleMons[gBattlerTarget].status2 |= STATUS2_NIGHTMARE;
gBattlescriptCurrInstr++;
break;
case MOVE_EFFECT_ALL_STATS_UP:
@@ -2927,17 +2863,17 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattlescriptCurrInstr = BattleScript_RapidSpinAway;
break;
case MOVE_EFFECT_REMOVE_PARALYSIS: // Smelling salts
- if (!(gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS))
+ if (!(gBattleMons[gBattlerTarget].status1 & STATUS1_PARALYSIS))
{
gBattlescriptCurrInstr++;
}
else
{
- gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS);
+ gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_PARALYSIS);
- gActiveBank = gBankTarget;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerTarget;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
@@ -2956,21 +2892,21 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
break;
case MOVE_EFFECT_THRASH:
- if (gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)
+ if (gBattleMons[gEffectBattler].status2 & STATUS2_LOCK_CONFUSE)
{
gBattlescriptCurrInstr++;
}
else
{
- gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gEffectBank] = gCurrentMove;
- gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA);
+ gBattleMons[gEffectBattler].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBattler] = gCurrentMove;
+ gBattleMons[gEffectBattler].status2 |= (((Random() & 1) + 2) << 0xA);
}
break;
case MOVE_EFFECT_KNOCK_OFF:
- if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD)
+ if (gBattleMons[gEffectBattler].ability == ABILITY_STICKY_HOLD)
{
- if (gBattleMons[gEffectBank].item == 0)
+ if (gBattleMons[gEffectBattler].item == 0)
{
gBattlescriptCurrInstr++;
}
@@ -2978,23 +2914,23 @@ void SetMoveEffect(bool8 primary, u8 certain)
{
gLastUsedAbility = ABILITY_STICKY_HOLD;
gBattlescriptCurrInstr = BattleScript_StickyHoldActivates;
- RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD);
+ RecordAbilityBattle(gEffectBattler, ABILITY_STICKY_HOLD);
}
break;
}
- if (gBattleMons[gEffectBank].item)
+ if (gBattleMons[gEffectBattler].item)
{
- side = GetBankSide(gEffectBank);
+ side = GetBattlerSide(gEffectBattler);
- gLastUsedItem = gBattleMons[gEffectBank].item;
- gBattleMons[gEffectBank].item = 0;
- gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]];
+ gLastUsedItem = gBattleMons[gEffectBattler].item;
+ gBattleMons[gEffectBattler].item = 0;
+ gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlerPartyIndexes[gEffectBattler]];
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_KnockedOff;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 0) = 0;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 1) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBattler]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBattler]) + 1) = 0;
}
else
{
@@ -3016,20 +2952,20 @@ static void atk15_seteffectwithchance(void)
{
u32 percentChance;
- if (gBattleMons[gBankAttacker].ability == ABILITY_SERENE_GRACE)
+ if (gBattleMons[gBattlerAttacker].ability == ABILITY_SERENE_GRACE)
percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2;
else
percentChance = gBattleMoves[gCurrentMove].secondaryEffectChance;
if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_CERTAIN
- && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_CERTAIN);
SetMoveEffect(0, MOVE_EFFECT_CERTAIN);
}
else if (Random() % 100 < percentChance
&& gBattleCommunication[MOVE_EFFECT_BYTE]
- && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
if (percentChance >= 100)
SetMoveEffect(0, MOVE_EFFECT_CERTAIN);
@@ -3057,12 +2993,12 @@ static void atk17_seteffectsecondary(void)
static void atk18_clearstatusfromeffect(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC)
- gBattleMons[gActiveBank].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+ gBattleMons[gActiveBattler].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
else
- gBattleMons[gActiveBank].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+ gBattleMons[gActiveBattler].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
gBattlescriptCurrInstr += 2;
@@ -3075,14 +3011,14 @@ static void atk19_tryfaintmon(void)
if (gBattlescriptCurrInstr[2] != 0)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
{
BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 3);
BattleScriptPop();
gBattlescriptCurrInstr = BS_ptr;
- gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
+ gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
}
else
{
@@ -3091,62 +3027,62 @@ static void atk19_tryfaintmon(void)
}
else
{
- u8 bank;
+ u8 battlerId;
- if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
+ if (gBattlescriptCurrInstr[1] == BS_ATTACKER)
{
- gActiveBank = gBankAttacker;
- bank = gBankTarget;
+ gActiveBattler = gBattlerAttacker;
+ battlerId = gBattlerTarget;
BS_ptr = BattleScript_FaintAttacker;
}
else
{
- gActiveBank = gBankTarget;
- bank = gBankAttacker;
+ gActiveBattler = gBattlerTarget;
+ battlerId = gBattlerAttacker;
BS_ptr = BattleScript_FaintTarget;
}
- if (!(gAbsentBankFlags & gBitTable[gActiveBank])
- && gBattleMons[gActiveBank].hp == 0)
+ if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler])
+ && gBattleMons[gActiveBattler].hp == 0)
{
- gHitMarker |= HITMARKER_FAINTED(gActiveBank);
+ gHitMarker |= HITMARKER_FAINTED(gActiveBattler);
BattleScriptPush(gBattlescriptCurrInstr + 7);
gBattlescriptCurrInstr = BS_ptr;
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
gHitMarker |= HITMARKER_x400000;
if (gBattleResults.playerFaintCounter < 0xFF)
gBattleResults.playerFaintCounter++;
- AdjustFriendshipOnBattleFaint(gActiveBank);
+ AdjustFriendshipOnBattleFaint(gActiveBattler);
}
else
{
if (gBattleResults.opponentFaintCounter < 0xFF)
gBattleResults.opponentFaintCounter++;
- gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL);
+ gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL);
}
- if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0)
+ if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBattlerAttacker].hp != 0)
{
gHitMarker &= ~(HITMARKER_DESTINYBOND);
BattleScriptPush(gBattlescriptCurrInstr);
- gBattleMoveDamage = gBattleMons[bank].hp;
+ gBattleMoveDamage = gBattleMons[battlerId].hp;
gBattlescriptCurrInstr = BattleScript_DestinyBondTakesLife;
}
- if ((gStatuses3[gBankTarget] & STATUS3_GRUDGE)
+ if ((gStatuses3[gBattlerTarget] & STATUS3_GRUDGE)
&& !(gHitMarker & HITMARKER_GRUDGE)
- && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)
- && gBattleMons[gBankAttacker].hp != 0
+ && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)
+ && gBattleMons[gBattlerAttacker].hp != 0
&& gCurrentMove != MOVE_STRUGGLE)
{
- u8 moveIndex = *(gBattleStruct->chosenMovePositions + gBankAttacker);
+ u8 moveIndex = *(gBattleStruct->chosenMovePositions + gBattlerAttacker);
- gBattleMons[gBankAttacker].pp[moveIndex] = 0;
+ gBattleMons[gBattlerAttacker].pp[moveIndex] = 0;
BattleScriptPush(gBattlescriptCurrInstr);
gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp;
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]);
+ MarkBattlerForControllerExec(gActiveBattler);
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBankAttacker].moves[moveIndex])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].moves[moveIndex])
}
}
else
@@ -3158,26 +3094,26 @@ static void atk19_tryfaintmon(void)
static void atk1A_dofaintanimation(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- EmitFaintAnimation(0);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitFaintAnimation(0);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
}
static void atk1B_cleareffectsonfaint(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBank].hp == 0)
+ if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBattler].hp == 0)
{
- gBattleMons[gActiveBank].status1 = 0;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gBattleMons[gActiveBattler].status1 = 0;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
}
FaintClearSetData(); // Effects like attractions, trapping, etc.
@@ -3187,11 +3123,11 @@ static void atk1B_cleareffectsonfaint(void)
static void atk1C_jumpifstatus(void)
{
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
- if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp)
+ if (gBattleMons[battlerId].status1 & flags && gBattleMons[battlerId].hp)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 10;
@@ -3199,11 +3135,11 @@ static void atk1C_jumpifstatus(void)
static void atk1D_jumpifstatus2(void)
{
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
- if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp)
+ if (gBattleMons[battlerId].status2 & flags && gBattleMons[battlerId].hp)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 10;
@@ -3211,45 +3147,45 @@ static void atk1D_jumpifstatus2(void)
static void atk1E_jumpifability(void)
{
- u8 bank;
+ u8 battlerId;
u8 ability = gBattlescriptCurrInstr[2];
const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
- if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER_SIDE)
+ if (gBattlescriptCurrInstr[1] == BS_ATTACKER_SIDE)
{
- bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBankAttacker, ability, 0, 0);
- if (bank)
+ battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBattlerAttacker, ability, 0, 0);
+ if (battlerId)
{
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
- RecordAbilityBattle(bank - 1, gLastUsedAbility);
- gBattleScripting.bankWithAbility = bank - 1;
+ RecordAbilityBattle(battlerId - 1, gLastUsedAbility);
+ gBattleScripting.battlerWithAbility = battlerId - 1;
}
else
gBattlescriptCurrInstr += 7;
}
- else if (gBattlescriptCurrInstr[1] == BS_GET_NOT_ATTACKER_SIDE)
+ else if (gBattlescriptCurrInstr[1] == BS_NOT_ATTACKER_SIDE)
{
- bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBankAttacker, ability, 0, 0);
- if (bank)
+ battlerId = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBattlerAttacker, ability, 0, 0);
+ if (battlerId)
{
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
- RecordAbilityBattle(bank - 1, gLastUsedAbility);
- gBattleScripting.bankWithAbility = bank - 1;
+ RecordAbilityBattle(battlerId - 1, gLastUsedAbility);
+ gBattleScripting.battlerWithAbility = battlerId - 1;
}
else
gBattlescriptCurrInstr += 7;
}
else
{
- bank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (gBattleMons[bank].ability == ability)
+ battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (gBattleMons[battlerId].ability == ability)
{
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
- RecordAbilityBattle(bank, gLastUsedAbility);
- gBattleScripting.bankWithAbility = bank;
+ RecordAbilityBattle(battlerId, gLastUsedAbility);
+ gBattleScripting.battlerWithAbility = battlerId;
}
else
gBattlescriptCurrInstr += 7;
@@ -3262,15 +3198,15 @@ static void atk1F_jumpifsideaffecting(void)
u16 flags;
const u8* jumpPtr;
- if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
- side = GET_BANK_SIDE(gBankAttacker);
+ if (gBattlescriptCurrInstr[1] == BS_ATTACKER)
+ side = GET_BATTLER_SIDE(gBattlerAttacker);
else
- side = GET_BANK_SIDE(gBankTarget);
+ side = GET_BATTLER_SIDE(gBattlerTarget);
flags = BS2ScriptRead16(gBattlescriptCurrInstr + 2);
jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 4);
- if (gSideAffecting[side] & flags)
+ if (gSideStatuses[side] & flags)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 8;
@@ -3279,8 +3215,8 @@ static void atk1F_jumpifsideaffecting(void)
static void atk20_jumpifstat(void)
{
u8 ret = 0;
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
- u8 value = gBattleMons[bank].statStages[gBattlescriptCurrInstr[3]];
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ u8 value = gBattleMons[battlerId].statStages[gBattlescriptCurrInstr[3]];
switch (gBattlescriptCurrInstr[2])
{
@@ -3321,20 +3257,20 @@ static void atk21_jumpifstatus3condition(void)
u32 flags;
const u8 *jumpPtr;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7);
if (gBattlescriptCurrInstr[6])
{
- if ((gStatuses3[gActiveBank] & flags) != 0)
+ if ((gStatuses3[gActiveBattler] & flags) != 0)
gBattlescriptCurrInstr += 11;
else
gBattlescriptCurrInstr = jumpPtr;
}
else
{
- if ((gStatuses3[gActiveBank] & flags) != 0)
+ if ((gStatuses3[gActiveBattler] & flags) != 0)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 11;
@@ -3343,11 +3279,11 @@ static void atk21_jumpifstatus3condition(void)
static void atk22_jumpiftype(void)
{
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
u8 type = gBattlescriptCurrInstr[2];
const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
- if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type)
+ if (gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 7;
@@ -3363,13 +3299,13 @@ static void atk23_getexp(void)
s32 viaExpShare = 0;
u16* exp = &gBattleStruct->expValue;
- gBank1 = GetBattleBank(gBattlescriptCurrInstr[1]);
- sentIn = gSentPokesToOpponent[(gBank1 & 2) >> 1];
+ gBattlerFainted = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ sentIn = gSentPokesToOpponent[(gBattlerFainted & 2) >> 1];
switch (gBattleScripting.atk23_state)
{
case 0: // check if should receive exp at all
- if (GetBankSide(gBank1) != SIDE_OPPONENT || (gBattleTypeFlags &
+ if (GetBattlerSide(gBattlerFainted) != B_SIDE_OPPONENT || (gBattleTypeFlags &
(BATTLE_TYPE_LINK
| BATTLE_TYPE_x2000000
| BATTLE_TYPE_x4000000
@@ -3383,7 +3319,7 @@ static void atk23_getexp(void)
else
{
gBattleScripting.atk23_state++;
- gBattleStruct->field_DF |= gBitTable[gBattlePartyID[gBank1]];
+ gBattleStruct->field_DF |= gBitTable[gBattlerPartyIndexes[gBattlerFainted]];
}
break;
case 1: // calculate experience points to redistribute
@@ -3409,7 +3345,7 @@ static void atk23_getexp(void)
viaExpShare++;
}
- calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7;
+ calculatedExp = gBaseStats[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 7;
if (viaExpShare) // at least one mon is getting exp via exp share
{
@@ -3430,14 +3366,14 @@ static void atk23_getexp(void)
}
gBattleScripting.atk23_state++;
- gBattleStruct->expGetterId = 0;
+ gBattleStruct->expGetterMonId = 0;
gBattleStruct->sentInPokes = sentIn;
}
// fall through
case 2: // set exp value to the poke in expgetter_id and print message
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- item = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HELD_ITEM);
+ item = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HELD_ITEM);
if (item == ITEM_ENIGMA_BERRY)
holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
@@ -3450,7 +3386,7 @@ static void atk23_getexp(void)
gBattleScripting.atk23_state = 5;
gBattleMoveDamage = 0; // used for exp
}
- else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL) == MAX_MON_LEVEL)
+ else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) == MAX_MON_LEVEL)
{
*(&gBattleStruct->sentInPokes) >>= 1;
gBattleScripting.atk23_state = 5;
@@ -3466,7 +3402,7 @@ static void atk23_getexp(void)
gBattleStruct->wildVictorySong++;
}
- if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP))
+ if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP))
{
if (gBattleStruct->sentInPokes & 1)
gBattleMoveDamage = *exp;
@@ -3480,10 +3416,10 @@ static void atk23_getexp(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
- if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterId]))
+ if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterMonId]))
{
// check if the pokemon doesn't belong to the player
- if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gBattleStruct->expGetterId >= 3)
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gBattleStruct->expGetterMonId >= 3)
{
i = 0x149;
}
@@ -3498,31 +3434,31 @@ static void atk23_getexp(void)
i = 0x149;
}
- // get exp getter bank
+ // get exp getter battlerId
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- if (!(gBattlePartyID[2] != gBattleStruct->expGetterId) && !(gAbsentBankFlags & gBitTable[2]))
- gBattleStruct->expGetterBank = 2;
+ if (!(gBattlerPartyIndexes[2] != gBattleStruct->expGetterMonId) && !(gAbsentBattlerFlags & gBitTable[2]))
+ gBattleStruct->expGetterBattlerId = 2;
else
{
- if (!(gAbsentBankFlags & gBitTable[0]))
- gBattleStruct->expGetterBank = 0;
+ if (!(gAbsentBattlerFlags & gBitTable[0]))
+ gBattleStruct->expGetterBattlerId = 0;
else
- gBattleStruct->expGetterBank = 2;
+ gBattleStruct->expGetterBattlerId = 2;
}
}
else
- gBattleStruct->expGetterBank = 0;
+ gBattleStruct->expGetterBattlerId = 0;
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBank, gBattleStruct->expGetterId)
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBattlerId, gBattleStruct->expGetterMonId)
// buffer 'gained' or 'gained a boosted'
PREPARE_STRING_BUFFER(gBattleTextBuff2, i)
PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage)
- PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank);
- MonGainEVs(&gPlayerParty[gBattleStruct->expGetterId], gBattleMons[gBank1].species);
+ PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBattlerId);
+ MonGainEVs(&gPlayerParty[gBattleStruct->expGetterMonId], gBattleMons[gBattlerFainted].species);
}
gBattleStruct->sentInPokes >>= 1;
gBattleScripting.atk23_state++;
@@ -3530,72 +3466,72 @@ static void atk23_getexp(void)
}
break;
case 3: // Set stats and give exp
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gBattleBufferB[gBattleStruct->expGetterBank][0] = 0;
- if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL) != MAX_MON_LEVEL)
+ gBattleBufferB[gBattleStruct->expGetterBattlerId][0] = 0;
+ if (GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL) != MAX_MON_LEVEL)
{
- BATTLE_LVLUP_STATS->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
- BATTLE_LVLUP_STATS->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
- BATTLE_LVLUP_STATS->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
- BATTLE_LVLUP_STATS->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
- BATTLE_LVLUP_STATS->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
- BATTLE_LVLUP_STATS->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF);
+ gBattleResources->statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
+ gBattleResources->statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
+ gBattleResources->statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
+ gBattleResources->statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ gBattleResources->statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
+ gBattleResources->statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
- gActiveBank = gBattleStruct->expGetterBank;
- EmitExpUpdate(0, gBattleStruct->expGetterId, gBattleMoveDamage);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattleStruct->expGetterBattlerId;
+ BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage);
+ MarkBattlerForControllerExec(gActiveBattler);
}
gBattleScripting.atk23_state++;
}
break;
case 4: // lvl up if necessary
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gActiveBank = gBattleStruct->expGetterBank;
- if (gBattleBufferB[gActiveBank][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBank][1] == RET_VALUE_LEVELLED_UP)
+ gActiveBattler = gBattleStruct->expGetterBattlerId;
+ if (gBattleBufferB[gActiveBattler][0] == CONTROLLER_TWORETURNVALUES && gBattleBufferB[gActiveBattler][1] == RET_VALUE_LEVELLED_UP)
{
- if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId)
- HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId)
+ HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattleStruct->expGetterId)
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattleStruct->expGetterMonId)
- PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL))
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL))
BattleScriptPushCursor();
- gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterId];
+ gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterMonId];
gBattlescriptCurrInstr = BattleScript_LevelUp;
- gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8));
- AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterId], 0);
+ gBattleMoveDamage = (gBattleBufferB[gActiveBattler][2] | (gBattleBufferB[gActiveBattler][3] << 8));
+ AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterMonId], 0);
// update battle mon structure after level up
- if (gBattlePartyID[0] == gBattleStruct->expGetterId && gBattleMons[0].hp)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && gBattleMons[0].hp)
{
- gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
- gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP);
- gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
- gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
- gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
+ gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL);
+ gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP);
+ gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
+ gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
+ gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
// Why is this duplicated?
- gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
- gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+ gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
- gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
- gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF);
+ gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
+ gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
}
// What is else if?
- if (gBattlePartyID[2] == gBattleStruct->expGetterId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ if (gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
- gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP);
- gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
- gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
- gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
+ gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL);
+ gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_HP);
+ gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MAX_HP);
+ gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_ATK);
+ gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_DEF);
// Duplicated again, but this time there's no Sp Defense
- gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
- gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+ gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
+ gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPEED);
- gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
+ gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPATK);
}
gBattleScripting.atk23_state = 5;
}
@@ -3611,19 +3547,19 @@ static void atk23_getexp(void)
gBattleScripting.atk23_state = 3;
else
{
- gBattleStruct->expGetterId++;
- if (gBattleStruct->expGetterId <= 5)
+ gBattleStruct->expGetterMonId++;
+ if (gBattleStruct->expGetterMonId <= 5)
gBattleScripting.atk23_state = 2; // loop again
else
gBattleScripting.atk23_state = 6; // we're done
}
break;
case 6: // increment instruction
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
// not sure why gf clears the item and ability here
- gBattleMons[gBank1].item = 0;
- gBattleMons[gBank1].ability = 0;
+ gBattleMons[gBattlerFainted].item = 0;
+ gBattleMons[gBattlerFainted].ability = 0;
gBattlescriptCurrInstr += 2;
}
break;
@@ -3636,7 +3572,7 @@ static void atk24(void)
u16 HP_count = 0;
s32 i;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId == STEVEN_PARTNER_ID)
@@ -3652,7 +3588,7 @@ static void atk24(void)
for (i = 0; i < 6; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)
- && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->field_2A0 & gBitTable[i])))
+ && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->field_2A0 & gBitTable[i])))
{
HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP);
}
@@ -3660,7 +3596,7 @@ static void atk24(void)
}
if (HP_count == 0)
- gBattleOutcome |= BATTLE_LOST;
+ gBattleOutcome |= B_OUTCOME_LOST;
for (HP_count = 0, i = 0; i < 6; i++)
{
@@ -3672,7 +3608,7 @@ static void atk24(void)
}
if (HP_count == 0)
- gBattleOutcome |= BATTLE_WON;
+ gBattleOutcome |= B_OUTCOME_WON;
if (gBattleOutcome == 0 && (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
{
@@ -3680,13 +3616,13 @@ static void atk24(void)
s32 foundOpponent;
// Impossible to decompile loops.
- for (foundPlayer = 0, i = 0; i < gNoOfAllBanks; i += 2)
+ for (foundPlayer = 0, i = 0; i < gBattlersCount; i += 2)
{
if (HITMARKER_UNK(i) & gHitMarker && !gSpecialStatuses[i].flag40)
foundPlayer++;
}
- for (foundOpponent = 0, i = 1; i < gNoOfAllBanks; i += 2)
+ for (foundOpponent = 0, i = 1; i < gBattlersCount; i += 2)
{
if (HITMARKER_UNK(i) & gHitMarker && !gSpecialStatuses[i].flag40)
foundOpponent++;
@@ -3722,7 +3658,7 @@ static void atk24(void)
mov r7, r8\n\
push {r7}\n\
movs r6, 0\n\
- ldr r0, =gBattleExecBuffer\n\
+ ldr r0, =gBattleControllerExecFlags\n\
ldr r0, [r0]\n\
cmp r0, 0\n\
beq _0804ACE2\n\
@@ -3895,7 +3831,7 @@ static void atk24(void)
beq _0804AF1A\n\
movs r3, 0\n\
movs r5, 0\n\
- ldr r0, =gNoOfAllBanks\n\
+ ldr r0, =gBattlersCount\n\
ldrb r1, [r0]\n\
mov r12, r0\n\
ldr r7, =gBattlescriptCurrInstr\n\
@@ -4010,7 +3946,7 @@ static void atk24(void)
static void MoveValuesCleanUp(void)
{
- gBattleMoveFlags = 0;
+ gMoveResultFlags = 0;
gBattleScripting.dmgMultiplier = 1;
gCritMultiplier = 1;
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
@@ -4309,7 +4245,7 @@ static void atk38_bicword(void)
static void atk39_pause(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
if (++gPauseCounterBattle >= value)
@@ -4322,19 +4258,19 @@ static void atk39_pause(void)
static void atk3A_waitstate(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
gBattlescriptCurrInstr++;
}
static void atk3B_healthbar_update(void)
{
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
- gActiveBank = gBankTarget;
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
+ gActiveBattler = gBattlerTarget;
else
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBattlerAttacker;
- EmitHealthBarUpdate(0, gBattleMoveDamage);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitHealthBarUpdate(0, gBattleMoveDamage);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -4346,25 +4282,25 @@ static void atk3C_return(void)
static void atk3D_end(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
- sub_81A5718(gBankAttacker);
+ sub_81A5718(gBattlerAttacker);
- gBattleMoveFlags = 0;
- gActiveBank = 0;
+ gMoveResultFlags = 0;
+ gActiveBattler = 0;
gCurrentActionFuncId = 0xB;
}
static void atk3E_end2(void)
{
- gActiveBank = 0;
+ gActiveBattler = 0;
gCurrentActionFuncId = 0xB;
}
static void atk3F_end3(void) // pops the main function stack
{
BattleScriptPop();
- if (BATTLE_CALLBACKS_STACK->size)
- BATTLE_CALLBACKS_STACK->size--;
- gBattleMainFunc = BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size];
+ if (gBattleResources->battleCallbackStack->size != 0)
+ gBattleResources->battleCallbackStack->size--;
+ gBattleMainFunc = gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size];
}
static void atk41_call(void)
@@ -4375,9 +4311,9 @@ static void atk41_call(void)
static void atk42_jumpiftype2(void)
{
- u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- if (gBattlescriptCurrInstr[2] == gBattleMons[bank].type1 || gBattlescriptCurrInstr[2] == gBattleMons[bank].type2)
+ if (gBattlescriptCurrInstr[2] == gBattleMons[battlerId].type1 || gBattlescriptCurrInstr[2] == gBattleMons[battlerId].type2)
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3);
else
gBattlescriptCurrInstr += 7;
@@ -4393,22 +4329,22 @@ static void atk43_jumpifabilitypresent(void)
static void atk44_endselectionscript(void)
{
- *(gBankAttacker + gBattleStruct->selectionScriptFinished) = TRUE;
+ *(gBattlerAttacker + gBattleStruct->selectionScriptFinished) = TRUE;
}
static void atk45_playanimation(void)
{
const u16* argumentPtr;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
|| gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
|| gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
{
- EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
else if (gHitMarker & HITMARKER_NO_ANIMATIONS)
@@ -4421,18 +4357,18 @@ static void atk45_playanimation(void)
|| gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES
|| gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
{
- EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
- else if (gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ else if (gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
{
gBattlescriptCurrInstr += 7;
}
else
{
- EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
}
@@ -4442,7 +4378,7 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po
const u16* argumentPtr;
const u8* animationIdPtr;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
animationIdPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
@@ -4450,8 +4386,8 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po
|| *animationIdPtr == B_ANIM_SNATCH_MOVE
|| *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
{
- EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
else if (gHitMarker & HITMARKER_NO_ANIMATIONS)
@@ -4463,18 +4399,18 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po
|| *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES
|| *animationIdPtr == B_ANIM_HAIL_CONTINUES)
{
- EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
- else if (gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ else if (gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
{
gBattlescriptCurrInstr += 10;
}
else
{
- EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
}
@@ -4511,7 +4447,7 @@ static void atk48_playstatchangeanimation(void)
s32 changeableStats = 0;
u32 statsToCheck = 0;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
statsToCheck = gBattlescriptCurrInstr[2];
if (gBattlescriptCurrInstr[3] & ATK48_STAT_NEGATIVE) // goes down
@@ -4523,19 +4459,19 @@ static void atk48_playstatchangeanimation(void)
{
if (!(gBattlescriptCurrInstr[3] & ATK48_LOWER_FAIL_CHECK))
{
- if (gBattleMons[gActiveBank].statStages[currStat] > 0)
+ if (gBattleMons[gActiveBattler].statStages[currStat] > 0)
{
statAnimId = checkingStatAnimId;
changeableStats++;
}
}
- else if (!gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer
- && gBattleMons[gActiveBank].ability != ABILITY_CLEAR_BODY
- && gBattleMons[gActiveBank].ability != ABILITY_WHITE_SMOKE
- && !(gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && currStat == STAT_STAGE_ACC)
- && !(gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && currStat == STAT_STAGE_ATK))
+ else if (!gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer
+ && gBattleMons[gActiveBattler].ability != ABILITY_CLEAR_BODY
+ && gBattleMons[gActiveBattler].ability != ABILITY_WHITE_SMOKE
+ && !(gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE && currStat == STAT_ACC)
+ && !(gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK))
{
- if (gBattleMons[gActiveBank].statStages[currStat] > 0)
+ if (gBattleMons[gActiveBattler].statStages[currStat] > 0)
{
statAnimId = checkingStatAnimId;
changeableStats++;
@@ -4558,7 +4494,7 @@ static void atk48_playstatchangeanimation(void)
checkingStatAnimId = (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) ? 0x26 : 0xE;
while (statsToCheck != 0)
{
- if (statsToCheck & 1 && gBattleMons[gActiveBank].statStages[currStat] < 0xC)
+ if (statsToCheck & 1 && gBattleMons[gActiveBattler].statStages[currStat] < 0xC)
{
statAnimId = checkingStatAnimId;
changeableStats++;
@@ -4581,8 +4517,8 @@ static void atk48_playstatchangeanimation(void)
}
else if (changeableStats != 0 && gBattleScripting.field_1B == 0)
{
- EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId);
+ MarkBattlerForControllerExec(gActiveBattler);
if (gBattlescriptCurrInstr[3] & ATK48_BIT_x4 && changeableStats > 1)
gBattleScripting.field_1B = 1;
gBattlescriptCurrInstr += 4;
@@ -4612,8 +4548,8 @@ static void atk48_playstatchangeanimation(void)
ldr r0, [r5]\n\
ldrb r0, [r0, 0x1]\n\
str r3, [sp]\n\
- bl GetBattleBank\n\
- ldr r2, =gActiveBank\n\
+ bl GetBattlerForBattleScript\n\
+ ldr r2, =gActiveBattler\n\
strb r0, [r2]\n\
ldr r0, [r5]\n\
ldrb r4, [r0, 0x2]\n\
@@ -4650,7 +4586,7 @@ _0804BA26:\n\
ands r0, r1\n\
cmp r0, 0\n\
beq _0804BA58\n\
- ldr r0, =gActiveBank\n\
+ ldr r0, =gActiveBattler\n\
ldrb r1, [r0]\n\
movs r0, 0x58\n\
muls r0, r1\n\
@@ -4658,10 +4594,10 @@ _0804BA26:\n\
b _0804BAA0\n\
.pool\n\
_0804BA58:\n\
- ldr r6, =gActiveBank\n\
+ ldr r6, =gActiveBattler\n\
ldrb r0, [r6]\n\
str r3, [sp]\n\
- bl GetBankIdentity\n\
+ bl GetBattlerPosition\n\
mov r1, r10\n\
ands r1, r0\n\
lsls r0, r1, 1\n\
@@ -4809,10 +4745,10 @@ _0804BB6C:\n\
movs r1, 0x1\n\
mov r2, r8\n\
str r3, [sp]\n\
- bl EmitBattleAnimation\n\
- ldr r0, =gActiveBank\n\
+ bl BtlController_EmitBattleAnimation\n\
+ ldr r0, =gActiveBattler\n\
ldrb r0, [r0]\n\
- bl MarkBufferBankForExecution\n\
+ bl MarkBattlerForControllerExec\n\
ldr r0, =gBattlescriptCurrInstr\n\
ldr r0, [r0]\n\
ldrb r1, [r0, 0x3]\n\
@@ -4870,13 +4806,12 @@ static void atk49_moveend(void)
arg1 = gBattlescriptCurrInstr[1];
arg2 = gBattlescriptCurrInstr[2];
- if (gBattleMons[gBankAttacker].item == ITEM_ENIGMA_BERRY)
- holdEffectAtk = gEnigmaBerries[gBankAttacker].holdEffect;
+ if (gBattleMons[gBattlerAttacker].item == ITEM_ENIGMA_BERRY)
+ holdEffectAtk = gEnigmaBerries[gBattlerAttacker].holdEffect;
else
- holdEffectAtk = ItemId_GetHoldEffect(gBattleMons[gBankAttacker].item);
-
- choicedMoveAtk = &gBattleStruct->choicedMove[gBankAttacker];
+ holdEffectAtk = ItemId_GetHoldEffect(gBattleMons[gBattlerAttacker].item);
+ choicedMoveAtk = &gBattleStruct->choicedMove[gBattlerAttacker];
GET_MOVE_TYPE(gCurrentMove, moveType);
do
@@ -4884,13 +4819,13 @@ static void atk49_moveend(void)
switch (gBattleScripting.atk49_state)
{
case 0: // rage check
- if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE
- && gBattleMons[gBankTarget].hp != 0 && gBankAttacker != gBankTarget
- && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)
- && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && TARGET_TURN_DAMAGED
- && gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_RAGE
+ && gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget
+ && GetBattlerSide(gBattlerAttacker) != GetBattlerSide(gBattlerTarget)
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && TARGET_TURN_DAMAGED
+ && gBattleMoves[gCurrentMove].power && gBattleMons[gBattlerTarget].statStages[STAT_ATK] <= 0xB)
{
- gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++;
+ gBattleMons[gBattlerTarget].statStages[STAT_ATK]++;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_RageIsBuilding;
effect = TRUE;
@@ -4898,15 +4833,15 @@ static void atk49_moveend(void)
gBattleScripting.atk49_state++;
break;
case 1: // defrosting check
- if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE
- && gBattleMons[gBankTarget].hp != 0 && gBankAttacker != gBankTarget
- && gSpecialStatuses[gBankTarget].moveturnLostHP_special
- && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && moveType == TYPE_FIRE)
- {
- gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE);
- gActiveBank = gBankTarget;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1);
- MarkBufferBankForExecution(gActiveBank);
+ if (gBattleMons[gBattlerTarget].status1 & STATUS1_FREEZE
+ && gBattleMons[gBattlerTarget].hp != 0 && gBattlerAttacker != gBattlerTarget
+ && gSpecialStatuses[gBattlerTarget].specialDmg
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && moveType == TYPE_FIRE)
+ {
+ gBattleMons[gBattlerTarget].status1 &= ~(STATUS1_FREEZE);
+ gActiveBattler = gBattlerTarget;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove;
effect = TRUE;
@@ -4914,23 +4849,23 @@ static void atk49_moveend(void)
gBattleScripting.atk49_state++;
break;
case 2: // target synchronize
- if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBattlerTarget, 0, 0, 0))
effect = TRUE;
gBattleScripting.atk49_state++;
break;
case 3: // contact abilities
- if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBattlerTarget, 0, 0, 0))
effect = TRUE;
gBattleScripting.atk49_state++;
break;
case 4: // status immunities
if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0))
- effect = TRUE; // it loops through all banks, so we increment after its done with all banks
+ 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
- if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBattlerAttacker, 0, 0, 0))
effect = TRUE;
gBattleScripting.atk49_state++;
break;
@@ -4938,7 +4873,7 @@ static void atk49_moveend(void)
if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND
|| gChosenMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
goto LOOP;
- if (gChosenMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED))
+ if (gChosenMove == MOVE_BATON_PASS && !(gMoveResultFlags & MOVE_RESULT_FAILED))
{
gBattleScripting.atk49_state++;
break;
@@ -4948,7 +4883,7 @@ static void atk49_moveend(void)
{
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankAttacker].moves[i] == *choicedMoveAtk)
+ if (gBattleMons[gBattlerAttacker].moves[i] == *choicedMoveAtk)
break;
}
if (i == 4)
@@ -4958,7 +4893,7 @@ static void atk49_moveend(void)
}
break;
case 7: // changed held items
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
u16* changedItem = &gBattleStruct->changedItems[i];
if (*changedItem != 0)
@@ -4969,7 +4904,7 @@ static void atk49_moveend(void)
}
gBattleScripting.atk49_state++;
break;
- case 11: // item effects for all banks
+ case 11: // item effects for all battlers
if (ItemBattleEffects(3, 0, FALSE))
effect = TRUE;
else
@@ -4981,47 +4916,47 @@ static void atk49_moveend(void)
gBattleScripting.atk49_state++;
break;
case 8: // make attacker sprite invisible
- if (gStatuses3[gBankAttacker] & (STATUS3_SEMI_INVULNERABLE)
+ if (gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE)
&& gHitMarker & HITMARKER_NO_ANIMATIONS)
{
- gActiveBank = gBankAttacker;
- EmitSpriteInvisibility(0, TRUE);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSpriteInvisibility(0, TRUE);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattleScripting.atk49_state++;
return;
}
gBattleScripting.atk49_state++;
break;
case 9: // make attacker sprite visible
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT
- || !(gStatuses3[gBankAttacker] & (STATUS3_SEMI_INVULNERABLE))
- || WasUnableToUseMove(gBankAttacker))
- {
- gActiveBank = gBankAttacker;
- EmitSpriteInvisibility(0, FALSE);
- MarkBufferBankForExecution(gActiveBank);
- gStatuses3[gBankAttacker] &= ~(STATUS3_SEMI_INVULNERABLE);
- gSpecialStatuses[gBankAttacker].restoredBankSprite = 1;
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT
+ || !(gStatuses3[gBattlerAttacker] & (STATUS3_SEMI_INVULNERABLE))
+ || WasUnableToUseMove(gBattlerAttacker))
+ {
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSpriteInvisibility(0, FALSE);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gStatuses3[gBattlerAttacker] &= ~(STATUS3_SEMI_INVULNERABLE);
+ gSpecialStatuses[gBattlerAttacker].restoredBankSprite = 1;
gBattleScripting.atk49_state++;
return;
}
gBattleScripting.atk49_state++;
break;
case 10: // make target sprite visible
- if (!gSpecialStatuses[gBankTarget].restoredBankSprite && gBankTarget < gNoOfAllBanks
- && !(gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE))
+ if (!gSpecialStatuses[gBattlerTarget].restoredBankSprite && gBattlerTarget < gBattlersCount
+ && !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE))
{
- gActiveBank = gBankTarget;
- EmitSpriteInvisibility(0, FALSE);
- MarkBufferBankForExecution(gActiveBank);
- gStatuses3[gBankTarget] &= ~(STATUS3_SEMI_INVULNERABLE);
+ gActiveBattler = gBattlerTarget;
+ BtlController_EmitSpriteInvisibility(0, FALSE);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gStatuses3[gBattlerTarget] &= ~(STATUS3_SEMI_INVULNERABLE);
gBattleScripting.atk49_state++;
return;
}
gBattleScripting.atk49_state++;
break;
case 13: // update substitute
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gDisableStructs[i].substituteHP == 0)
gBattleMons[i].status2 &= ~(STATUS2_SUBSTITUTE);
@@ -5031,82 +4966,82 @@ static void atk49_moveend(void)
case 14: // This case looks interesting, although I am not certain what it does. Probably fine tunes edge cases.
if (gHitMarker & HITMARKER_PURSUIT_TRAP)
{
- gActiveBank = gBankAttacker;
- gBankAttacker = gBankTarget;
- gBankTarget = gActiveBank;
+ gActiveBattler = gBattlerAttacker;
+ gBattlerAttacker = gBattlerTarget;
+ gBattlerTarget = gActiveBattler;
gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
}
if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED)
{
- gLastPrintedMoves[gBankAttacker] = gChosenMove;
+ gLastPrintedMoves[gBattlerAttacker] = gChosenMove;
}
- if (!(gAbsentBankFlags & gBitTable[gBankAttacker])
- && !(gBattleStruct->field_91 & gBitTable[gBankAttacker])
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker])
+ && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker])
&& gBattleMoves[originallyUsedMove].effect != EFFECT_BATON_PASS)
{
if (gHitMarker & HITMARKER_OBEYS)
{
- gLastMoves[gBankAttacker] = gChosenMove;
- gLastResultingMoves[gBankAttacker] = gCurrentMove;
+ gLastMoves[gBattlerAttacker] = gChosenMove;
+ gLastResultingMoves[gBattlerAttacker] = gCurrentMove;
}
else
{
- gLastMoves[gBankAttacker] = 0xFFFF;
- gLastResultingMoves[gBankAttacker] = 0xFFFF;
+ gLastMoves[gBattlerAttacker] = 0xFFFF;
+ gLastResultingMoves[gBattlerAttacker] = 0xFFFF;
}
- if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget)))
- gLastHitBy[gBankTarget] = gBankAttacker;
+ if (!(gHitMarker & HITMARKER_FAINTED(gBattlerTarget)))
+ gLastHitBy[gBattlerTarget] = gBattlerAttacker;
- if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ if (gHitMarker & HITMARKER_OBEYS && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
if (gChosenMove == 0xFFFF)
{
- gLastLandedMoves[gBankTarget] = gChosenMove;
+ gLastLandedMoves[gBattlerTarget] = gChosenMove;
}
else
{
- gLastLandedMoves[gBankTarget] = gCurrentMove;
- GET_MOVE_TYPE(gCurrentMove, gLastHitByType[gBankTarget]);
+ gLastLandedMoves[gBattlerTarget] = gCurrentMove;
+ GET_MOVE_TYPE(gCurrentMove, gLastHitByType[gBattlerTarget]);
}
}
else
{
- gLastLandedMoves[gBankTarget] = 0xFFFF;
+ gLastLandedMoves[gBattlerTarget] = 0xFFFF;
}
}
gBattleScripting.atk49_state++;
break;
case 15: // mirror move
- if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker])
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker])
&& gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS
- && gBankAttacker != gBankTarget && !(gHitMarker & HITMARKER_FAINTED(gBankTarget))
- && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ && gBattlerAttacker != gBattlerTarget && !(gHitMarker & HITMARKER_FAINTED(gBattlerTarget))
+ && !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
u8 target, attacker;
- *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gChosenMove;
- *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gChosenMove >> 8;
+ *(gBattleStruct->mirrorMoves + gBattlerTarget * 2 + 0) = gChosenMove;
+ *(gBattleStruct->mirrorMoves + gBattlerTarget * 2 + 1) = gChosenMove >> 8;
- target = gBankTarget;
- attacker = gBankAttacker;
+ target = gBattlerTarget;
+ attacker = gBattlerAttacker;
*(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gChosenMove;
- target = gBankTarget;
- attacker = gBankAttacker;
+ target = gBattlerTarget;
+ attacker = gBattlerAttacker;
*(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gChosenMove >> 8;
}
gBattleScripting.atk49_state++;
break;
case 16: //
if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && !gProtectStructs[gBankAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH
+ && !gProtectStructs[gBattlerAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH
&& !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
{
- u8 bank = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
- if (gBattleMons[bank].hp != 0)
+ u8 battlerId = GetBattlerAtPosition(BATTLE_PARTNER(GetBattlerPosition(gBattlerTarget)));
+ if (gBattleMons[battlerId].hp != 0)
{
- gBankTarget = bank;
+ gBattlerTarget = battlerId;
gHitMarker |= HITMARKER_NO_ATTACKSTRING;
gBattleScripting.atk49_state = 0;
MoveValuesCleanUp();
@@ -5142,13 +5077,13 @@ static void atk4A_typecalc2(void)
s32 i = 0;
u8 moveType = gBattleMoves[gCurrentMove].type;
- if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
{
- gLastUsedAbility = gBattleMons[gBankTarget].ability;
- gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
- gLastLandedMoves[gBankTarget] = 0;
+ gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
+ gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
+ gLastLandedMoves[gBattlerTarget] = 0;
gBattleCommunication[6] = moveType;
- RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
else
{
@@ -5156,7 +5091,7 @@ static void atk4A_typecalc2(void)
{
if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT)
{
- if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT)
{
break;
}
@@ -5170,42 +5105,42 @@ static void atk4A_typecalc2(void)
if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
{
// check type1
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type1)
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1)
{
if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT)
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
break;
}
if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE)
{
- flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
}
if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE)
{
- flags |= MOVESTATUS_SUPEREFFECTIVE;
+ flags |= MOVE_RESULT_SUPER_EFFECTIVE;
}
}
// check type2
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2)
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2)
{
- if (gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ if (gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT)
{
- gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
break;
}
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2
- && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2
+ && gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE)
{
- flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
}
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBankTarget].type2
- && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2
+ && gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE)
{
- flags |= MOVESTATUS_SUPEREFFECTIVE;
+ flags |= MOVE_RESULT_SUPER_EFFECTIVE;
}
}
}
@@ -5213,46 +5148,46 @@ static void atk4A_typecalc2(void)
}
}
- if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD
- && !(flags & MOVESTATUS_NOEFFECT)
- && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2
- && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD
+ && !(flags & MOVE_RESULT_NO_EFFECT)
+ && AttacksThisTurn(gBattlerAttacker, gCurrentMove) == 2
+ && (!(flags & MOVE_RESULT_SUPER_EFFECTIVE) || ((flags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
&& gBattleMoves[gCurrentMove].power)
{
gLastUsedAbility = ABILITY_WONDER_GUARD;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
- gLastLandedMoves[gBankTarget] = 0;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
+ gLastLandedMoves[gBattlerTarget] = 0;
gBattleCommunication[6] = 3;
- RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
- if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
- gProtectStructs[gBankAttacker].targetNotAffected = 1;
+ if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
+ gProtectStructs[gBattlerAttacker].targetNotAffected = 1;
gBattlescriptCurrInstr++;
}
static void atk4B_returnatktoball(void)
{
- gActiveBank = gBankAttacker;
- if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
+ gActiveBattler = gBattlerAttacker;
+ if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler)))
{
- EmitReturnMonToBall(0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitReturnMonToBall(0, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr++;
}
static void atk4C_getswitchedmondata(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- gBattlePartyID[gActiveBank] = *(gBattleStruct->monToSwitchIntoId + gActiveBank);
+ gBattlerPartyIndexes[gActiveBattler] = *(gBattleStruct->monToSwitchIntoId + gActiveBattler);
- EmitGetMonData(0, REQUEST_ALL_BATTLE, gBitTable[gBattlePartyID[gActiveBank]]);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, gBitTable[gBattlerPartyIndexes[gActiveBattler]]);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -5263,72 +5198,72 @@ static void atk4D_switchindataupdate(void)
s32 i;
u8 *monData;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- oldData = gBattleMons[gActiveBank];
- monData = (u8*)(&gBattleMons[gActiveBank]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ oldData = gBattleMons[gActiveBattler];
+ monData = (u8*)(&gBattleMons[gActiveBattler]);
for (i = 0; i < sizeof(struct BattlePokemon); i++)
{
- monData[i] = gBattleBufferB[gActiveBank][4 + i];
+ monData[i] = gBattleBufferB[gActiveBattler][4 + i];
}
- gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
- gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
- gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility);
+ gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
+ gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
+ gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].altAbility);
// check knocked off item
- i = GetBankSide(gActiveBank);
- if (gWishFutureKnock.knockedOffPokes[i] & gBitTable[gBattlePartyID[gActiveBank]])
+ i = GetBattlerSide(gActiveBattler);
+ if (gWishFutureKnock.knockedOffPokes[i] & gBitTable[gBattlerPartyIndexes[gActiveBattler]])
{
- gBattleMons[gActiveBank].item = 0;
+ gBattleMons[gActiveBattler].item = 0;
}
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- gBattleMons[gActiveBank].statStages[i] = oldData.statStages[i];
+ gBattleMons[gActiveBattler].statStages[i] = oldData.statStages[i];
}
- gBattleMons[gActiveBank].status2 = oldData.status2;
+ gBattleMons[gActiveBattler].status2 = oldData.status2;
}
SwitchInClearSetData();
- if (gBattleTypeFlags & BATTLE_TYPE_PALACE && gBattleMons[gActiveBank].maxHP / 2 >= gBattleMons[gActiveBank].hp
- && gBattleMons[gActiveBank].hp != 0 && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP))
+ if (gBattleTypeFlags & BATTLE_TYPE_PALACE && gBattleMons[gActiveBattler].maxHP / 2 >= gBattleMons[gActiveBattler].hp
+ && gBattleMons[gActiveBattler].hp != 0 && !(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP))
{
- gBattleStruct->field_92 |= gBitTable[gActiveBank];
+ gBattleStruct->field_92 |= gBitTable[gActiveBattler];
}
- gBattleScripting.bank = gActiveBank;
+ gBattleScripting.battler = gActiveBattler;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gActiveBank, gBattlePartyID[gActiveBank]);
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler]);
gBattlescriptCurrInstr += 2;
}
static void atk4E_switchinanim(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_x2000000
| BATTLE_TYPE_x4000000
| BATTLE_TYPE_FRONTIER)))
- HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality);
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
- gAbsentBankFlags &= ~(gBitTable[gActiveBank]);
+ gAbsentBattlerFlags &= ~(gBitTable[gActiveBattler]);
- EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], gBattlescriptCurrInstr[2]);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSwitchInAnim(0, gBattlerPartyIndexes[gActiveBattler], gBattlescriptCurrInstr[2]);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -5343,11 +5278,11 @@ static void atk4F_jumpifcantswitch(void)
struct Pokemon *party = NULL;
s32 r7 = 0;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1] & ~(ATK4F_DONT_CHECK_STATUSES));
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(ATK4F_DONT_CHECK_STATUSES));
if (!(gBattlescriptCurrInstr[1] & ATK4F_DONT_CHECK_STATUSES)
- && ((gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
- || (gStatuses3[gActiveBank] & STATUS3_ROOTED)))
+ && ((gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ || (gStatuses3[gActiveBattler] & STATUS3_ROOTED)))
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
}
@@ -5356,13 +5291,13 @@ static void atk4F_jumpifcantswitch(void)
#ifndef NONMATCHING
asm("":::"r5");
#endif // NONMATCHING
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
party = gEnemyParty;
else
party = gPlayerParty;
val = 0;
- if (2 & gActiveBank)
+ if (2 & gActiveBattler)
val = 3;
for (compareVar = val + 3; val < compareVar; val++)
@@ -5370,7 +5305,7 @@ static void atk4F_jumpifcantswitch(void)
if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[val], MON_DATA_IS_EGG)
&& GetMonData(&party[val], MON_DATA_HP) != 0
- && gBattlePartyID[gActiveBank] != val)
+ && gBattlerPartyIndexes[gActiveBattler] != val)
break;
}
@@ -5383,19 +5318,19 @@ static void atk4F_jumpifcantswitch(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_x800000)
{
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
party = gPlayerParty;
val = 0;
- if (sub_806D82C(GetBankMultiplayerId(gActiveBank)) == TRUE)
+ if (sub_806D82C(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
val = 3;
}
else
{
party = gEnemyParty;
- if (gActiveBank == 1)
+ if (gActiveBattler == 1)
val = 0;
else
val = 3;
@@ -5403,14 +5338,14 @@ static void atk4F_jumpifcantswitch(void)
}
else
{
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
party = gEnemyParty;
else
party = gPlayerParty;
val = 0;
- if (sub_806D82C(GetBankMultiplayerId(gActiveBank)) == TRUE)
+ if (sub_806D82C(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
val = 3;
}
@@ -5419,7 +5354,7 @@ static void atk4F_jumpifcantswitch(void)
if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[val], MON_DATA_IS_EGG)
&& GetMonData(&party[val], MON_DATA_HP) != 0
- && gBattlePartyID[gActiveBank] != val)
+ && gBattlerPartyIndexes[gActiveBattler] != val)
break;
}
@@ -5428,12 +5363,12 @@ static void atk4F_jumpifcantswitch(void)
else
gBattlescriptCurrInstr += 6;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
{
party = gEnemyParty;
val = 0;
- if (gActiveBank == 3)
+ if (gActiveBattler == 3)
val = 3;
for (compareVar = val + 3; val < compareVar; val++)
@@ -5441,7 +5376,7 @@ static void atk4F_jumpifcantswitch(void)
if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[val], MON_DATA_IS_EGG)
&& GetMonData(&party[val], MON_DATA_HP) != 0
- && gBattlePartyID[gActiveBank] != val)
+ && gBattlerPartyIndexes[gActiveBattler] != val)
break;
}
@@ -5452,12 +5387,12 @@ static void atk4F_jumpifcantswitch(void)
}
else
{
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
{
- r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ r7 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- compareVar = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ compareVar = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
else
compareVar = r7;
@@ -5465,10 +5400,10 @@ static void atk4F_jumpifcantswitch(void)
}
else
{
- r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ r7 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- compareVar = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ compareVar = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
else
compareVar = r7;
@@ -5479,7 +5414,7 @@ static void atk4F_jumpifcantswitch(void)
if (GetMonData(&party[val], MON_DATA_HP) != 0
&& GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[val], MON_DATA_IS_EGG)
- && val != gBattlePartyID[r7] && val != gBattlePartyID[compareVar])
+ && val != gBattlerPartyIndexes[r7] && val != gBattlerPartyIndexes[compareVar])
break;
}
@@ -5492,22 +5427,22 @@ static void atk4F_jumpifcantswitch(void)
static void sub_804CF10(u8 arg0)
{
- *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank];
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = 6;
- gBattleStruct->field_93 &= ~(gBitTable[gActiveBank]);
+ *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
+ gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
- EmitChoosePokemon(0, 1, arg0, 0, gBattleStruct->field_60[gActiveBank]);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitChoosePokemon(0, 1, arg0, 0, gBattleStruct->field_60[gActiveBattler]);
+ MarkBattlerForControllerExec(gActiveBattler);
}
static void atk50_openpartyscreen(void)
{
u32 flags;
u8 hitmarkerFaintBits;
- u8 bank;
+ u8 battlerId;
const u8 *jumpPtr;
- bank = 0;
+ battlerId = 0;
flags = 0;
jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
@@ -5515,27 +5450,27 @@ static void atk50_openpartyscreen(void)
{
if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
{
- if (sub_80423F4(gActiveBank, 6, 6))
+ if (sub_80423F4(gActiveBattler, 6, 6))
{
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBank].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
{
sub_804CF10(6);
- gSpecialStatuses[gActiveBank].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
}
}
else
{
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
}
@@ -5547,88 +5482,88 @@ static void atk50_openpartyscreen(void)
if (gBitTable[0] & hitmarkerFaintBits)
{
- gActiveBank = 0;
+ gActiveBattler = 0;
if (sub_80423F4(0, 6, 6))
{
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- EmitCmd42(0);
- MarkBufferBankForExecution(gActiveBank);
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBank].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
{
sub_804CF10(gBattleStruct->monToSwitchIntoId[2]);
- gSpecialStatuses[gActiveBank].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else
{
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
flags |= 1;
}
}
if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits))
{
- gActiveBank = 2;
+ gActiveBattler = 2;
if (sub_80423F4(2, 6, 6))
{
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- EmitCmd42(0);
- MarkBufferBankForExecution(gActiveBank);
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBank].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
{
sub_804CF10(gBattleStruct->monToSwitchIntoId[0]);
- gSpecialStatuses[gActiveBank].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else if (!(flags & 1))
{
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
if (gBitTable[1] & hitmarkerFaintBits)
{
- gActiveBank = 1;
+ gActiveBattler = 1;
if (sub_80423F4(1, 6, 6))
{
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- EmitCmd42(0);
- MarkBufferBankForExecution(gActiveBank);
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBank].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
{
sub_804CF10(gBattleStruct->monToSwitchIntoId[3]);
- gSpecialStatuses[gActiveBank].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else
{
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
flags |= 2;
}
}
if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits))
{
- gActiveBank = 3;
+ gActiveBattler = 3;
if (sub_80423F4(3, 6, 6))
{
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- EmitCmd42(0);
- MarkBufferBankForExecution(gActiveBank);
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBank].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
{
sub_804CF10(gBattleStruct->monToSwitchIntoId[1]);
- gSpecialStatuses[gActiveBank].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
}
else if (!(flags & 2))
{
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -5638,13 +5573,13 @@ static void atk50_openpartyscreen(void)
flag40_2 = gSpecialStatuses[2].flag40;
if (!flag40_2 && hitmarkerFaintBits != 0)
{
- if (gAbsentBankFlags & gBitTable[0])
- gActiveBank = 2;
+ if (gAbsentBattlerFlags & gBitTable[0])
+ gActiveBattler = 2;
else
- gActiveBank = 0;
+ gActiveBattler = 0;
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -5654,13 +5589,13 @@ static void atk50_openpartyscreen(void)
flag40_3 = gSpecialStatuses[3].flag40;
if (!flag40_3 && hitmarkerFaintBits != 0)
{
- if (gAbsentBankFlags & gBitTable[1])
- gActiveBank = 3;
+ if (gAbsentBattlerFlags & gBitTable[1])
+ gActiveBattler = 3;
else
- gActiveBank = 1;
+ gActiveBattler = 1;
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
}
@@ -5675,34 +5610,34 @@ static void atk50_openpartyscreen(void)
hitmarkerFaintBits = gHitMarker >> 0x1C;
if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits)
{
- gActiveBank = 2;
+ gActiveBattler = 2;
if (sub_80423F4(2, gBattleBufferB[0][1], 6))
{
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- EmitCmd42(0);
- MarkBufferBankForExecution(gActiveBank);
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBank].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
{
sub_804CF10(gBattleStruct->monToSwitchIntoId[0]);
- gSpecialStatuses[gActiveBank].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
}
}
if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1])
{
- gActiveBank = 3;
+ gActiveBattler = 3;
if (sub_80423F4(3, gBattleBufferB[1][1], 6))
{
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- EmitCmd42(0);
- MarkBufferBankForExecution(gActiveBank);
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ BtlController_EmitCmd42(0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBank].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].flag40)
{
sub_804CF10(gBattleStruct->monToSwitchIntoId[1]);
- gSpecialStatuses[gActiveBank].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].flag40 = 1;
}
}
gBattlescriptCurrInstr += 6;
@@ -5719,17 +5654,17 @@ static void atk50_openpartyscreen(void)
hitmarkerFaintBits = gHitMarker >> 0x1C;
- gBank1 = 0;
+ gBattlerFainted = 0;
while (1)
{
- if (gBitTable[gBank1] & hitmarkerFaintBits)
+ if (gBitTable[gBattlerFainted] & hitmarkerFaintBits)
break;
- if (gBank1 >= gNoOfAllBanks)
+ if (gBattlerFainted >= gBattlersCount)
break;
- gBank1++;
+ gBattlerFainted++;
}
- if (gBank1 == gNoOfAllBanks)
+ if (gBattlerFainted == gBattlersCount)
gBattlescriptCurrInstr = jumpPtr;
}
else
@@ -5739,52 +5674,52 @@ static void atk50_openpartyscreen(void)
else
hitmarkerFaintBits = 1;
- bank = GetBattleBank(gBattlescriptCurrInstr[1] & ~(0x80));
- if (gSpecialStatuses[bank].flag40)
+ battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80));
+ if (gSpecialStatuses[battlerId].flag40)
{
gBattlescriptCurrInstr += 6;
}
- else if (sub_80423F4(bank, 6, 6))
+ else if (sub_80423F4(battlerId, 6, 6))
{
- gActiveBank = bank;
- gAbsentBankFlags |= gBitTable[gActiveBank];
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ gActiveBattler = battlerId;
+ gAbsentBattlerFlags |= gBitTable[gActiveBattler];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
gBattlescriptCurrInstr = jumpPtr;
}
else
{
- gActiveBank = bank;
- *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank];
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = 6;
- gBattleStruct->field_93 &= ~(gBitTable[gActiveBank]);
+ gActiveBattler = battlerId;
+ *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
+ gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
- EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBank ^ 2)), 0, gBattleStruct->field_60[gActiveBank]);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), 0, gBattleStruct->field_60[gActiveBattler]);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 6;
- if (GetBankIdentity(gActiveBank) == 0 && gBattleResults.playerSwitchesCounter < 0xFF)
+ if (GetBattlerPosition(gActiveBattler) == 0 && gBattleResults.playerSwitchesCounter < 0xFF)
gBattleResults.playerSwitchesCounter++;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
- if (gActiveBank != bank)
+ if (gActiveBattler != battlerId)
{
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
}
else
{
- gActiveBank = GetBankByIdentity(GetBankIdentity(bank) ^ BIT_SIDE);
- if (gAbsentBankFlags & gBitTable[gActiveBank])
- gActiveBank ^= BIT_MON;
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(battlerId) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
+ gActiveBattler ^= BIT_FLANK;
- EmitLinkStandbyMsg(0, 2, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitLinkStandbyMsg(0, 2, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
}
@@ -5793,22 +5728,22 @@ static void atk50_openpartyscreen(void)
static void atk51_switchhandleorder(void)
{
s32 i;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattlescriptCurrInstr[2])
{
case 0:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleBufferB[i][0] == 0x22)
{
*(gBattleStruct->monToSwitchIntoId + i) = gBattleBufferB[i][1];
if (!(gBattleStruct->field_93 & gBitTable[i]))
{
- RecordedBattle_SetBankAction(i, gBattleBufferB[i][1]);
+ RecordedBattle_SetBattlerAction(i, gBattleBufferB[i][1]);
gBattleStruct->field_93 |= gBitTable[i];
}
}
@@ -5816,40 +5751,40 @@ static void atk51_switchhandleorder(void)
break;
case 1:
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- sub_803BDA0(gActiveBank);
+ sub_803BDA0(gActiveBattler);
break;
case 2:
- if (!(gBattleStruct->field_93 & gBitTable[gActiveBank]))
+ if (!(gBattleStruct->field_93 & gBitTable[gActiveBattler]))
{
- RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]);
- gBattleStruct->field_93 |= gBitTable[gActiveBank];
+ RecordedBattle_SetBattlerAction(gActiveBattler, gBattleBufferB[gActiveBattler][1]);
+ gBattleStruct->field_93 |= gBitTable[gActiveBattler];
}
// fall through
case 3:
- gBattleCommunication[0] = gBattleBufferB[gActiveBank][1];
- *(gBattleStruct->monToSwitchIntoId + gActiveBank) = gBattleBufferB[gActiveBank][1];
+ gBattleCommunication[0] = gBattleBufferB[gActiveBattler][1];
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = gBattleBufferB[gActiveBattler][1];
if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
- *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0);
- *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBank][3];
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3];
- *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
- *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4;
- *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBank][3];
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3];
}
else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
- sub_80571DC(gActiveBank, *(gBattleStruct->monToSwitchIntoId + gActiveBank));
+ sub_80571DC(gActiveBattler, *(gBattleStruct->monToSwitchIntoId + gActiveBattler));
}
else
{
- sub_803BDA0(gActiveBank);
+ sub_803BDA0(gActiveBattler);
}
- PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBankAttacker].species)
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff2, gActiveBank, gBattleBufferB[gActiveBank][1])
+ PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].species)
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff2, gActiveBattler, gBattleBufferB[gActiveBattler][1])
break;
}
@@ -5861,61 +5796,61 @@ static void atk52_switchineffects(void)
{
s32 i;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- sub_803FA70(gActiveBank);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ sub_803FA70(gActiveBattler);
- gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
- gSpecialStatuses[gActiveBank].flag40 = 0;
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBattler));
+ gSpecialStatuses[gActiveBattler].flag40 = 0;
- if (!(gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES_DAMAGED)
- && (gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES)
- && gBattleMons[gActiveBank].type1 != TYPE_FLYING
- && gBattleMons[gActiveBank].type2 != TYPE_FLYING
- && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE)
+ if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED)
+ && (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES)
+ && gBattleMons[gActiveBattler].type1 != TYPE_FLYING
+ && gBattleMons[gActiveBattler].type2 != TYPE_FLYING
+ && gBattleMons[gActiveBattler].ability != ABILITY_LEVITATE)
{
u8 spikesDmg;
- gSideAffecting[GetBankSide(gActiveBank)] |= SIDE_STATUS_SPIKES_DAMAGED;
+ gSideStatuses[GetBattlerSide(gActiveBattler)] |= SIDE_STATUS_SPIKES_DAMAGED;
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_DESTINY_BOND);
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_DESTINY_BOND);
gHitMarker &= ~(HITMARKER_DESTINYBOND);
- spikesDmg = (5 - gSideTimers[GetBankSide(gActiveBank)].spikesAmount) * 2;
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg);
+ spikesDmg = (5 - gSideTimers[GetBattlerSide(gActiveBattler)].spikesAmount) * 2;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / (spikesDmg);
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- gBattleScripting.bank = gActiveBank;
+ gBattleScripting.battler = gActiveBattler;
BattleScriptPushCursor();
- if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ if (gBattlescriptCurrInstr[1] == BS_TARGET)
gBattlescriptCurrInstr = BattleScript_SpikesOnTarget;
- else if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
+ else if (gBattlescriptCurrInstr[1] == BS_ATTACKER)
gBattlescriptCurrInstr = BattleScript_SpikesOnAttacker;
else
- gBattlescriptCurrInstr = BattleScript_SpikesOngBank1;
+ gBattlescriptCurrInstr = BattleScript_SpikesOnFaintedBattler;
}
else
{
- if (gBattleMons[gActiveBank].ability == ABILITY_TRUANT && !gDisableStructs[gActiveBank].truantUnknownBit)
- gDisableStructs[gActiveBank].truantCounter = 1;
+ if (gBattleMons[gActiveBattler].ability == ABILITY_TRUANT && !gDisableStructs[gActiveBattler].truantUnknownBit)
+ gDisableStructs[gActiveBattler].truantCounter = 1;
- gDisableStructs[gActiveBank].truantUnknownBit = 0;
+ gDisableStructs[gActiveBattler].truantUnknownBit = 0;
- if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBank, 0, 0, 0) == 0 &&
- ItemBattleEffects(0, gActiveBank, 0) == 0)
+ if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBattler, 0, 0, 0) == 0 &&
+ ItemBattleEffects(0, gActiveBattler, 0) == 0)
{
- gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
+ gSideStatuses[GetBattlerSide(gActiveBattler)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gBanksByTurnOrder[i] == gActiveBank)
- gActionsByTurnOrder[i] = ACTION_CANCEL_PARTNER;
+ if (gBattleTurnOrder[i] == gActiveBattler)
+ gActionsByTurnOrder[i] = B_ACTION_CANCEL_PARTNER;
}
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- u16* hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(i)];
+ u16* hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(i)];
*hpOnSwitchout = gBattleMons[i].hp;
}
@@ -5923,14 +5858,14 @@ static void atk52_switchineffects(void)
{
u32 hitmarkerFaintBits = gHitMarker >> 0x1C;
- gBank1++;
+ gBattlerFainted++;
while (1)
{
- if (hitmarkerFaintBits & gBitTable[gBank1] && !(gAbsentBankFlags & gBitTable[gBank1]))
+ if (hitmarkerFaintBits & gBitTable[gBattlerFainted] && !(gAbsentBattlerFlags & gBitTable[gBattlerFainted]))
break;
- if (gBank1 >= gNoOfAllBanks)
+ if (gBattlerFainted >= gBattlersCount)
break;
- gBank1++;
+ gBattlerFainted++;
}
}
gBattlescriptCurrInstr += 2;
@@ -5940,54 +5875,54 @@ static void atk52_switchineffects(void)
static void atk53_trainerslidein(void)
{
- gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]);
- EmitTrainerSlide(0);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerAtPosition(gBattlescriptCurrInstr[1]);
+ BtlController_EmitTrainerSlide(0);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk54_playse(void)
{
- gActiveBank = gBankAttacker;
- EmitPlaySE(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitPlaySE(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
}
static void atk55_fanfare(void)
{
- gActiveBank = gBankAttacker;
- EmitPlayFanfareOrBGM(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), FALSE);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitPlayFanfareOrBGM(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), FALSE);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
}
static void atk56_playfaintcry(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- EmitFaintingCry(0);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitFaintingCry(0);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk57(void)
{
- gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- EmitCmd55(0, gBattleOutcome);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ BtlController_EmitCmd55(0, gBattleOutcome);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 1;
}
static void atk58_returntoball(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- EmitReturnMonToBall(0, 1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitReturnMonToBall(0, 1);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -5997,9 +5932,9 @@ static void atk59_handlelearnnewmove(void)
const u8 *jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
const u8 *jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
- u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], gBattlescriptCurrInstr[9]);
+ u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
while (ret == 0xFFFE)
- ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], 0);
+ ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], 0);
if (ret == 0)
{
@@ -6011,20 +5946,20 @@ static void atk59_handlelearnnewmove(void)
}
else
{
- gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
- && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
+ && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
- GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON2);
- if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
- && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
+ if (gBattlerPartyIndexes[gActiveBattler] == gBattleStruct->expGetterMonId
+ && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
- GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ GiveMoveToBattleMon(&gBattleMons[gActiveBattler], ret);
}
}
@@ -6034,7 +5969,7 @@ static void atk59_handlelearnnewmove(void)
static void atk5A_yesnoboxlearnmove(void)
{
- gActiveBank = 0;
+ gActiveBattler = 0;
switch (gBattleScripting.learnMoveState)
{
@@ -6084,7 +6019,7 @@ static void atk5A_yesnoboxlearnmove(void)
if (!gPaletteFade.active)
{
FreeAllWindowBuffers();
- sub_81BFA38(gPlayerParty, gBattleStruct->expGetterId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
+ sub_81BFA38(gPlayerParty, gBattleStruct->expGetterMonId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
gBattleScripting.learnMoveState++;
}
break;
@@ -6104,10 +6039,10 @@ static void atk5A_yesnoboxlearnmove(void)
}
else
{
- u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MOVE1 + movePosition);
+ u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_MOVE1 + movePosition);
if (IsHMMove2(moveId))
{
- PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, gActiveBank);
+ PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, gActiveBattler);
gBattleScripting.learnMoveState = 6;
}
else
@@ -6116,10 +6051,10 @@ static void atk5A_yesnoboxlearnmove(void)
PREPARE_MOVE_BUFFER(gBattleTextBuff2, moveId)
- RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterId], movePosition);
- SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterId], gMoveToLearn, movePosition);
+ RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], movePosition);
+ SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, movePosition);
- if (gBattlePartyID[0] == gBattleStruct->expGetterId
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId
&& !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[0].unk18_b & gBitTable[movePosition]))
{
@@ -6127,7 +6062,7 @@ static void atk5A_yesnoboxlearnmove(void)
SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition);
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && gBattlePartyID[2] == gBattleStruct->expGetterId
+ && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId
&& !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[2].unk18_b & gBitTable[movePosition]))
{
@@ -6143,7 +6078,7 @@ static void atk5A_yesnoboxlearnmove(void)
gBattlescriptCurrInstr += 5;
break;
case 6:
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
gBattleScripting.learnMoveState = 2;
}
@@ -6200,16 +6135,16 @@ static void atk5B_yesnoboxstoplearningmove(void)
static void atk5C_hitanimation(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
gBattlescriptCurrInstr += 2;
}
- else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBank].substituteHP == 0)
+ else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBattler].substituteHP == 0)
{
- EmitHitAnimation(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitHitAnimation(0);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
else
@@ -6226,7 +6161,7 @@ static u32 GetTrainerMoneyToGive(u16 trainerId)
if (trainerId == SECRET_BASE_OPPONENT)
{
- moneyReward = 20 * gBattleResources->secretBase->partyLevels[0] * gBattleStruct->moneyMultiplier;
+ moneyReward = 20 * gBattleResources->secretBase->party.levels[0] * gBattleStruct->moneyMultiplier;
}
else
{
@@ -6290,24 +6225,24 @@ static void atk5D_getmoneyreward(void)
static void atk5E(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattleCommunication[0])
{
case 0:
- EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[0]++;
break;
case 1:
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
s32 i;
- struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBank][4];
+ struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBattler][4];
for (i = 0; i < 4; i++)
{
- gBattleMons[gActiveBank].moves[i] = bufferPoke->moves[i];
- gBattleMons[gActiveBank].pp[i] = bufferPoke->pp[i];
+ gBattleMons[gActiveBattler].moves[i] = bufferPoke->moves[i];
+ gBattleMons[gActiveBattler].pp[i] = bufferPoke->pp[i];
}
gBattlescriptCurrInstr += 2;
}
@@ -6317,9 +6252,9 @@ static void atk5E(void)
static void atk5F(void)
{
- gActiveBank = gBankAttacker;
- gBankAttacker = gBankTarget;
- gBankTarget = gActiveBank;
+ gActiveBattler = gBattlerAttacker;
+ gBattlerAttacker = gBattlerTarget;
+ gBattlerTarget = gActiveBattler;
if (gHitMarker & HITMARKER_PURSUIT_TRAP)
gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
@@ -6331,7 +6266,7 @@ static void atk5F(void)
static void atk60_incrementgamestat(void)
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
IncrementGameStat(gBattlescriptCurrInstr[1]);
gBattlescriptCurrInstr += 2;
@@ -6343,12 +6278,12 @@ static void atk61_drawpartystatussummary(void)
struct Pokemon* party;
struct HpAndStatus hpStatuses[6];
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -6368,17 +6303,17 @@ static void atk61_drawpartystatussummary(void)
}
}
- EmitDrawPartyStatusSummary(0, hpStatuses, 1);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitDrawPartyStatusSummary(0, hpStatuses, 1);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk62(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- EmitCmd49(0);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitCmd49(0);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -6395,15 +6330,15 @@ static void atk63_jumptorandomattack(void)
static void atk64_statusanimation(void)
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
- && gDisableStructs[gActiveBank].substituteHP == 0
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 2;
}
@@ -6413,16 +6348,16 @@ static void atk65_status2animation(void)
{
u32 wantedToAnimate;
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
wantedToAnimate = BSScriptRead32(gBattlescriptCurrInstr + 2);
- if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
- && gDisableStructs[gActiveBank].substituteHP == 0
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBank].status2 & wantedToAnimate);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBattler].status2 & wantedToAnimate);
+ MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 6;
}
@@ -6432,16 +6367,16 @@ static void atk66_chosenstatusanimation(void)
{
u32 wantedStatus;
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
wantedStatus = BSScriptRead32(gBattlescriptCurrInstr + 3);
- if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
- && gDisableStructs[gActiveBank].substituteHP == 0
+ if (!(gStatuses3[gActiveBattler] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- EmitStatusAnimation(0, gBattlescriptCurrInstr[2], wantedStatus);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitStatusAnimation(0, gBattlescriptCurrInstr[2], wantedStatus);
+ MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 7;
}
@@ -6494,52 +6429,53 @@ static void atk68_cancelallactions(void)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
- gActionsByTurnOrder[i] = ACTION_CANCEL_PARTNER;
+ for (i = 0; i < gBattlersCount; i++)
+ gActionsByTurnOrder[i] = B_ACTION_CANCEL_PARTNER;
gBattlescriptCurrInstr++;
}
static void atk69_adjustsetdamage(void) // The same as 0x7, except there's no random damage multiplier.
{
- u8 holdEffect, quality;
+ u8 holdEffect, param;
- if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
- quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBank = gBankTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
- if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
{
- RecordItemEffectBattle(gBankTarget, holdEffect);
- gSpecialStatuses[gBankTarget].focusBanded = 1;
+ RecordItemEffectBattle(gBattlerTarget, holdEffect);
+ gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
- if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE)
goto END;
- if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured
- && !gSpecialStatuses[gBankTarget].focusBanded)
+ if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBattlerTarget].endured
+ && !gSpecialStatuses[gBattlerTarget].focusBanded)
goto END;
- if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ if (gBattleMons[gBattlerTarget].hp > gBattleMoveDamage)
goto END;
- gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
- if (gProtectStructs[gBankTarget].endured)
+ if (gProtectStructs[gBattlerTarget].endured)
{
- gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
}
- else if (gSpecialStatuses[gBankTarget].focusBanded)
+ else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
- gBattleMoveFlags |= MOVESTATUS_HUNGON;
- gLastUsedItem = gBattleMons[gBankTarget].item;
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
END:
@@ -6550,21 +6486,21 @@ static void atk6A_removeitem(void)
{
u16* usedHeldItem;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBank];
- *usedHeldItem = gBattleMons[gActiveBank].item;
- gBattleMons[gActiveBank].item = 0;
+ usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBattler];
+ *usedHeldItem = gBattleMons[gActiveBattler].item;
+ gBattleMons[gActiveBattler].item = 0;
- EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk6B_atknameinbuff1(void)
{
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker])
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
gBattlescriptCurrInstr++;
}
@@ -6665,7 +6601,7 @@ static void sub_804F100(void)
{
struct StatsArray currentStats;
- sub_81D388C(&gPlayerParty[gBattleStruct->expGetterId], &currentStats);
+ sub_81D388C(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
sub_81D3640(0xD, gBattleResources->statsBeforeLvlUp, &currentStats, 0xE, 0xD, 0xF);
}
@@ -6673,7 +6609,7 @@ static void sub_804F144(void)
{
struct StatsArray currentStats;
- sub_81D388C(&gPlayerParty[gBattleStruct->expGetterId], &currentStats);
+ sub_81D388C(&gPlayerParty[gBattleStruct->expGetterMonId], &currentStats);
sub_81D3784(0xD, &currentStats, 0xE, 0xD, 0xF);
}
@@ -6716,9 +6652,9 @@ static void PutLevelAndGenderOnLvlUpBox(void)
u8 *txtPtr;
u32 var;
- monLevel = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
- monGender = GetMonGender(&gPlayerParty[gBattleStruct->expGetterId]);
- GetMonNickname(&gPlayerParty[gBattleStruct->expGetterId], gStringVar4);
+ monLevel = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_LEVEL);
+ monGender = GetMonGender(&gPlayerParty[gBattleStruct->expGetterMonId]);
+ GetMonNickname(&gPlayerParty[gBattleStruct->expGetterMonId], gStringVar4);
subPrinter.current_text_offset = gStringVar4;
subPrinter.windowId = 14;
@@ -6730,7 +6666,7 @@ static void PutLevelAndGenderOnLvlUpBox(void)
subPrinter.letterSpacing = 0;
subPrinter.lineSpacing = 0;
subPrinter.fontColor_l = TEXT_COLOR_TRANSPARENT;
- subPrinter.fontColor_h = TEXT_COLOR_WHITE;
+ subPrinter.fgColor = TEXT_COLOR_WHITE;
subPrinter.bgColor = TEXT_COLOR_TRANSPARENT;
subPrinter.shadowColor = TEXT_COLOR_DARK_GREY;
@@ -6794,8 +6730,8 @@ static void PutMonIconOnLvlUpBox(void)
struct SpriteSheet iconSheet;
struct SpritePalette iconPalSheet;
- u16 species = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPECIES);
- u32 personality = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_PERSONALITY);
+ u16 species = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPECIES);
+ u32 personality = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_PERSONALITY);
const u8* iconPtr = GetMonIconPtr(species, personality, 1);
iconSheet.data = iconPtr;
@@ -6835,9 +6771,9 @@ static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
static bool32 IsMonGettingExpSentOut(void)
{
- if (gBattlePartyID[0] == gBattleStruct->expGetterId)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId)
return TRUE;
- if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == gBattleStruct->expGetterId)
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId)
return TRUE;
return FALSE;
@@ -6851,24 +6787,24 @@ static void atk6D_resetsentmonsvalue(void)
static void atk6E_setatktoplayer0(void)
{
- gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlerAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
gBattlescriptCurrInstr++;
}
static void atk6F_makevisible(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- EmitSpriteInvisibility(0, FALSE);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitSpriteInvisibility(0, FALSE);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
static void atk70_recordlastability(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- RecordAbilityBattle(gActiveBank, gLastUsedAbility);
- gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for bank argument.
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
+ gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for battlerId argument.
}
void BufferMoveToLearnIntoBattleTextBuff2(void)
@@ -6884,7 +6820,7 @@ static void atk71_buffermovetolearn(void)
static void atk72_jumpifplayerran(void)
{
- if (TryRunFromBattle(gBank1))
+ if (TryRunFromBattle(gBattlerFainted))
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -6897,8 +6833,8 @@ static void atk73_hpthresholds(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- opposingBank = gActiveBank ^ BIT_SIDE;
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ opposingBank = gActiveBattler ^ BIT_SIDE;
result = gBattleMons[opposingBank].hp * 100 / gBattleMons[opposingBank].maxHP;
if (result == 0)
@@ -6925,9 +6861,9 @@ static void atk74_hpthresholds2(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- opposingBank = gActiveBank ^ BIT_SIDE;
- hpSwitchout = *(gBattleStruct->hpOnSwitchout + GetBankSide(opposingBank));
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ opposingBank = gActiveBattler ^ BIT_SIDE;
+ hpSwitchout = *(gBattleStruct->hpOnSwitchout + GetBattlerSide(opposingBank));
result = (hpSwitchout - gBattleMons[opposingBank].hp) * 100 / hpSwitchout;
if (gBattleMons[opposingBank].hp >= hpSwitchout)
@@ -6945,8 +6881,8 @@ static void atk74_hpthresholds2(void)
static void atk75_useitemonopponent(void)
{
- gBankInMenu = gBankAttacker;
- ExecuteTableBasedItemEffect(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1);
+ gBattlerInMenuId = gBattlerAttacker;
+ ExecuteTableBasedItemEffect(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]], gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, 1);
gBattlescriptCurrInstr += 1;
}
@@ -6956,52 +6892,52 @@ static void atk76_various(void)
u8 side;
s32 i;
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattlescriptCurrInstr[2])
{
case VARIOUS_CANCEL_MULTI_TURN_MOVES:
- CancelMultiTurnMoves(gActiveBank);
+ CancelMultiTurnMoves(gActiveBattler);
break;
case VARIOUS_SET_MAGIC_COAT_TARGET:
- gBankAttacker = gBankTarget;
- side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ gBattlerAttacker = gBattlerTarget;
+ side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
if (gSideTimers[side].followmeTimer != 0 && gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
- gBankTarget = gSideTimers[side].followmeTarget;
+ gBattlerTarget = gSideTimers[side].followmeTarget;
else
- gBankTarget = gActiveBank;
+ gBattlerTarget = gActiveBattler;
break;
case VARIOUS_IS_RUNNING_IMPOSSIBLE:
gBattleCommunication[0] = IsRunningFromBattleImpossible();
break;
case VARIOUS_GET_MOVE_TARGET:
- gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
break;
case 4:
- if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
gBattleCommunication[0] = 1;
else
gBattleCommunication[0] = 0;
break;
case VARIOUS_RESET_INTIMIDATE_TRACE_BITS:
- gSpecialStatuses[gActiveBank].intimidatedPoke = 0;
- gSpecialStatuses[gActiveBank].traced = 0;
+ gSpecialStatuses[gActiveBattler].intimidatedPoke = 0;
+ gSpecialStatuses[gActiveBattler].traced = 0;
break;
case VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP:
- if (gBattlePartyID[0] == gBattleStruct->expGetterId || gBattlePartyID[2] == gBattleStruct->expGetterId)
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId || gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId)
{
u16 *choicedMove;
- if (gBattlePartyID[0] == gBattleStruct->expGetterId)
- gActiveBank = 0;
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId)
+ gActiveBattler = 0;
else
- gActiveBank = 2;
+ gActiveBattler = 2;
- choicedMove = &gBattleStruct->choicedMove[gActiveBank];
+ choicedMove = &gBattleStruct->choicedMove[gActiveBattler];
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gActiveBank].moves[i] == *choicedMove)
+ if (gBattleMons[gActiveBattler].moves[i] == *choicedMove)
break;
}
if (i == 4)
@@ -7019,15 +6955,15 @@ static void atk76_various(void)
break;
case 8:
gBattleCommunication[0] = 0;
- gBattleScripting.bank = gActiveBank = gBattleCommunication[1];
- if (!(gBattleStruct->field_92 & gBitTable[gActiveBank])
- && gBattleMons[gActiveBank].maxHP / 2 >= gBattleMons[gActiveBank].hp
- && gBattleMons[gActiveBank].hp != 0
- && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP))
+ gBattleScripting.battler = gActiveBattler = gBattleCommunication[1];
+ if (!(gBattleStruct->field_92 & gBitTable[gActiveBattler])
+ && gBattleMons[gActiveBattler].maxHP / 2 >= gBattleMons[gActiveBattler].hp
+ && gBattleMons[gActiveBattler].hp != 0
+ && !(gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP))
{
- gBattleStruct->field_92 |= gBitTable[gActiveBank];
+ gBattleStruct->field_92 |= gBitTable[gActiveBattler];
gBattleCommunication[0] = 1;
- gBattleCommunication[MULTISTRING_CHOOSER] = sUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)];
+ gBattleCommunication[MULTISTRING_CHOOSER] = sUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBattler].personality)];
}
break;
case 9:
@@ -7040,14 +6976,14 @@ static void atk76_various(void)
case 10:
gBattleMons[1].hp = 0;
gHitMarker |= HITMARKER_FAINTED(1);
- gBattleStruct->field_2A1 |= gBitTable[gBattlePartyID[1]];
+ gBattleStruct->field_2A1 |= gBitTable[gBattlerPartyIndexes[1]];
gDisableStructs[1].truantUnknownBit = 1;
break;
case 11:
gBattleMons[0].hp = 0;
gHitMarker |= HITMARKER_FAINTED(0);
gHitMarker |= HITMARKER_x400000;
- gBattleStruct->field_2A0 |= gBitTable[gBattlePartyID[0]];
+ gBattleStruct->field_2A0 |= gBitTable[gBattlerPartyIndexes[0]];
gDisableStructs[0].truantUnknownBit = 1;
break;
case 12:
@@ -7056,14 +6992,14 @@ static void atk76_various(void)
gHitMarker |= HITMARKER_FAINTED(0);
gHitMarker |= HITMARKER_FAINTED(1);
gHitMarker |= HITMARKER_x400000;
- gBattleStruct->field_2A0 |= gBitTable[gBattlePartyID[0]];
- gBattleStruct->field_2A1 |= gBitTable[gBattlePartyID[1]];
+ gBattleStruct->field_2A0 |= gBitTable[gBattlerPartyIndexes[0]];
+ gBattleStruct->field_2A1 |= gBitTable[gBattlerPartyIndexes[1]];
gDisableStructs[0].truantUnknownBit = 1;
gDisableStructs[1].truantUnknownBit = 1;
break;
case VARIOUS_EMIT_YESNOBOX:
- EmitUnknownYesNoBox(0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitUnknownYesNoBox(0);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
case 14:
sub_81A5BF8();
@@ -7084,21 +7020,21 @@ static void atk76_various(void)
return;
break;
case VARIOUS_RETURN_OPPONENT_MON1:
- gActiveBank = 1;
- if (gBattleMons[gActiveBank].hp != 0)
+ gActiveBattler = 1;
+ if (gBattleMons[gActiveBattler].hp != 0)
{
- EmitReturnMonToBall(0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitReturnMonToBall(0, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
break;
case VARIOUS_RETURN_OPPONENT_MON2:
- if (gNoOfAllBanks > 3)
+ if (gBattlersCount > 3)
{
- gActiveBank = 3;
- if (gBattleMons[gActiveBank].hp != 0)
+ gActiveBattler = 3;
+ if (gBattleMons[gActiveBattler].hp != 0)
{
- EmitReturnMonToBall(0, 0);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitReturnMonToBall(0, 0);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
break;
@@ -7109,21 +7045,21 @@ static void atk76_various(void)
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
break;
case 23:
- gBattleStruct->field_2A2 |= gBitTable[gActiveBank];
+ gBattleStruct->field_2A2 |= gBitTable[gActiveBattler];
break;
case 24:
- if (sub_805725C(gActiveBank))
+ if (sub_805725C(gActiveBattler))
return;
break;
case VARIOUS_SET_TELEPORT_OUTCOME:
- if (GetBankSide(gActiveBank) == SIDE_PLAYER)
- gBattleOutcome = BATTLE_PLAYER_TELEPORTED;
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
+ gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED;
else
- gBattleOutcome = BATTLE_OPPONENT_TELEPORTED;
+ gBattleOutcome = B_OUTCOME_MON_TELEPORTED;
break;
case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC:
- EmitPlayFanfareOrBGM(0, MUS_KACHI1, TRUE);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitPlayFanfareOrBGM(0, MUS_KACHI1, TRUE);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -7133,33 +7069,33 @@ static void atk76_various(void)
static void atk77_setprotectlike(void) // protect and endure
{
bool8 notLastTurn = TRUE;
- u16 lastMove = gLastResultingMoves[gBankAttacker];
+ u16 lastMove = gLastResultingMoves[gBattlerAttacker];
if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE)
- gDisableStructs[gBankAttacker].protectUses = 0;
+ gDisableStructs[gBattlerAttacker].protectUses = 0;
- if (gCurrentTurnActionNumber == (gNoOfAllBanks - 1))
+ if (gCurrentTurnActionNumber == (gBattlersCount - 1))
notLastTurn = FALSE;
- if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] >= Random() && notLastTurn)
+ if (sProtectSuccessRates[gDisableStructs[gBattlerAttacker].protectUses] >= Random() && notLastTurn)
{
if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT)
{
- gProtectStructs[gBankAttacker].protected = 1;
+ gProtectStructs[gBattlerAttacker].protected = 1;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE)
{
- gProtectStructs[gBankAttacker].endured = 1;
+ gProtectStructs[gBattlerAttacker].endured = 1;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
- gDisableStructs[gBankAttacker].protectUses++;
+ gDisableStructs[gBattlerAttacker].protectUses++;
}
else
{
- gDisableStructs[gBankAttacker].protectUses = 0;
+ gDisableStructs[gBattlerAttacker].protectUses = 0;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
}
gBattlescriptCurrInstr++;
@@ -7167,48 +7103,48 @@ static void atk77_setprotectlike(void) // protect and endure
static void atk78_faintifabilitynotdamp(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++)
{
- if (gBattleMons[gBankTarget].ability == ABILITY_DAMP)
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_DAMP)
break;
}
- if (gBankTarget == gNoOfAllBanks)
+ if (gBattlerTarget == gBattlersCount)
{
- gActiveBank = gBankAttacker;
- gBattleMoveDamage = gBattleMons[gActiveBank].hp;
- EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
+ BtlController_EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++)
{
- if (gBankTarget == gBankAttacker)
+ if (gBattlerTarget == gBattlerAttacker)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget]))
break;
}
}
else
{
gLastUsedAbility = ABILITY_DAMP;
- RecordAbilityBattle(gBankTarget, gBattleMons[gBankTarget].ability);
+ RecordAbilityBattle(gBattlerTarget, gBattleMons[gBattlerTarget].ability);
gBattlescriptCurrInstr = BattleScript_DampStopsExplosion;
}
}
static void atk79_setatkhptozero(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- gActiveBank = gBankAttacker;
- gBattleMons[gActiveBank].hp = 0;
- EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ gBattleMons[gActiveBattler].hp = 0;
+ BtlController_EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
}
@@ -7219,15 +7155,15 @@ static void atk7A_jumpifnexttargetvalid(void)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- for (gBankTarget++; ; gBankTarget++)
+ for (gBattlerTarget++; ; gBattlerTarget++)
{
- if (gBankTarget == gBankAttacker)
+ if (gBattlerTarget == gBattlerAttacker)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget]))
break;
}
- if (gBankTarget >= gNoOfAllBanks)
+ if (gBattlerTarget >= gBattlersCount)
gBattlescriptCurrInstr += 5;
else
gBattlescriptCurrInstr = jumpPtr;
@@ -7242,15 +7178,15 @@ static void atk7B_tryhealhalfhealth(void)
{
const u8* failPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
- if (gBattlescriptCurrInstr[5] == BS_GET_ATTACKER)
- gBankTarget = gBankAttacker;
+ if (gBattlescriptCurrInstr[5] == BS_ATTACKER)
+ gBattlerTarget = gBattlerAttacker;
- gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
- if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP)
gBattlescriptCurrInstr = failPtr;
else
gBattlescriptCurrInstr += 6;
@@ -7266,12 +7202,12 @@ static void atk7C_trymirrormove(void)
for (i = 0; i < 3; i++)
movesArray[i] = 0;
- for (validMovesCount = 0, i = 0; i < gNoOfAllBanks; i++)
+ for (validMovesCount = 0, i = 0; i < gBattlersCount; i++)
{
- if (i != gBankAttacker)
+ if (i != gBattlerAttacker)
{
- move = *(i * 2 + gBankAttacker * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0)
- | (*(i * 2 + gBankAttacker * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) << 8);
+ move = *(i * 2 + gBattlerAttacker * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0)
+ | (*(i * 2 + gBattlerAttacker * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) << 8);
if (move != 0 && move != 0xFFFF)
{
@@ -7281,14 +7217,14 @@ static void atk7C_trymirrormove(void)
}
}
- move = *(gBattleStruct->mirrorMoves + gBankAttacker * 2 + 0)
- | (*(gBattleStruct->mirrorMoves + gBankAttacker * 2 + 1) << 8);
+ move = *(gBattleStruct->mirrorMoves + gBattlerAttacker * 2 + 0)
+ | (*(gBattleStruct->mirrorMoves + gBattlerAttacker * 2 + 1) << 8);
if (move != 0 && move != 0xFFFF)
{
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
gCurrentMove = move;
- gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
else if (validMovesCount)
@@ -7296,12 +7232,12 @@ static void atk7C_trymirrormove(void)
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
i = Random() % validMovesCount;
gCurrentMove = movesArray[i];
- gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
else
{
- gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gSpecialStatuses[gBattlerAttacker].flag20 = 1;
gBattlescriptCurrInstr++;
}
}
@@ -7310,7 +7246,7 @@ static void atk7D_setrain(void)
{
if (gBattleWeather & WEATHER_RAIN_ANY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -7324,16 +7260,16 @@ static void atk7D_setrain(void)
static void atk7E_setreflect(void)
{
- if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_REFLECT)
+ if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_REFLECT)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
else
{
- gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_REFLECT;
- gSideTimers[GET_BANK_SIDE(gBankAttacker)].reflectTimer = 5;
- gSideTimers[GET_BANK_SIDE(gBankAttacker)].reflectBank = gBankAttacker;
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_REFLECT;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].reflectTimer = 5;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].reflectBattlerId = gBattlerAttacker;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
@@ -7345,20 +7281,20 @@ static void atk7E_setreflect(void)
static void atk7F_setseeded(void)
{
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT || gStatuses3[gBattlerTarget] & STATUS3_LEECHSEED)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
- else if (gBattleMons[gBankTarget].type1 == TYPE_GRASS || gBattleMons[gBankTarget].type2 == TYPE_GRASS)
+ else if (gBattleMons[gBattlerTarget].type1 == TYPE_GRASS || gBattleMons[gBattlerTarget].type2 == TYPE_GRASS)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
{
- gStatuses3[gBankTarget] |= gBankAttacker;
- gStatuses3[gBankTarget] |= STATUS3_LEECHSEED;
+ gStatuses3[gBattlerTarget] |= gBattlerAttacker;
+ gStatuses3[gBattlerTarget] |= STATUS3_LEECHSEED;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
@@ -7376,8 +7312,8 @@ static void atk80_manipulatedamage(void)
gBattleMoveDamage /= 2;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if ((gBattleMons[gBankTarget].maxHP / 2) < gBattleMoveDamage)
- gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ if ((gBattleMons[gBattlerTarget].maxHP / 2) < gBattleMoveDamage)
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2;
break;
case ATK80_DMG_DOUBLED:
gBattleMoveDamage *= 2;
@@ -7390,23 +7326,23 @@ static void atk80_manipulatedamage(void)
static void atk81_trysetrest(void)
{
const u8 *failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
- gActiveBank = gBankTarget = gBankAttacker;
- gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1);
+ gActiveBattler = gBattlerTarget = gBattlerAttacker;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP * (-1);
- if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP)
{
gBattlescriptCurrInstr = failJump;
}
else
{
- if (gBattleMons[gBankTarget].status1 & ((u8)(~STATUS_SLEEP)))
+ if (gBattleMons[gBattlerTarget].status1 & ((u8)(~STATUS1_SLEEP)))
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- gBattleMons[gBankTarget].status1 = 3;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gBattleMons[gBattlerTarget].status1 = 3;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
}
@@ -7415,7 +7351,7 @@ static void atk82_jumpifnotfirstturn(void)
{
const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
- if (gDisableStructs[gBankAttacker].isFirstTurn)
+ if (gDisableStructs[gBattlerAttacker].isFirstTurn)
gBattlescriptCurrInstr += 5;
else
gBattlescriptCurrInstr = failJump;
@@ -7426,20 +7362,20 @@ static void atk83_nop(void)
gBattlescriptCurrInstr++;
}
-bool8 UproarWakeUpCheck(u8 bank)
+bool8 UproarWakeUpCheck(u8 battlerId)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF)
+ if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[battlerId].ability == ABILITY_SOUNDPROOF)
continue;
- gBattleScripting.bank = i;
+ gBattleScripting.battler = i;
- if (gBankTarget == 0xFF)
- gBankTarget = i;
- else if (gBankTarget == i)
+ if (gBattlerTarget == 0xFF)
+ gBattlerTarget = i;
+ else if (gBattlerTarget == i)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -7447,7 +7383,7 @@ bool8 UproarWakeUpCheck(u8 bank)
break;
}
- if (i == gNoOfAllBanks)
+ if (i == gBattlersCount)
return FALSE;
else
return TRUE;
@@ -7457,17 +7393,17 @@ static void atk84_jumpifcantmakeasleep(void)
{
const u8 *jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
- if (UproarWakeUpCheck(gBankTarget))
+ if (UproarWakeUpCheck(gBattlerTarget))
{
gBattlescriptCurrInstr = jumpPtr;
}
- else if (gBattleMons[gBankTarget].ability == ABILITY_INSOMNIA
- || gBattleMons[gBankTarget].ability == ABILITY_VITAL_SPIRIT)
+ else if (gBattleMons[gBattlerTarget].ability == ABILITY_INSOMNIA
+ || gBattleMons[gBattlerTarget].ability == ABILITY_VITAL_SPIRIT)
{
- gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
gBattlescriptCurrInstr = jumpPtr;
- RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
else
{
@@ -7477,16 +7413,16 @@ static void atk84_jumpifcantmakeasleep(void)
static void atk85_stockpile(void)
{
- if (gDisableStructs[gBankAttacker].stockpileCounter == 3)
+ if (gDisableStructs[gBattlerAttacker].stockpileCounter == 3)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
{
- gDisableStructs[gBankAttacker].stockpileCounter++;
+ gDisableStructs[gBattlerAttacker].stockpileCounter++;
- PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gBankAttacker].stockpileCounter)
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gBattlerAttacker].stockpileCounter)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
@@ -7496,7 +7432,7 @@ static void atk85_stockpile(void)
static void atk86_stockpiletobasedamage(void)
{
const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
- if (gDisableStructs[gBankAttacker].stockpileCounter == 0)
+ if (gDisableStructs[gBattlerAttacker].stockpileCounter == 0)
{
gBattlescriptCurrInstr = jumpPtr;
}
@@ -7504,17 +7440,17 @@ static void atk86_stockpiletobasedamage(void)
{
if (gBattleCommunication[6] != 1)
{
- gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
- gSideAffecting[GET_BANK_SIDE(gBankTarget)], 0,
- 0, gBankAttacker, gBankTarget)
- * gDisableStructs[gBankAttacker].stockpileCounter;
- gBattleScripting.animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove,
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)], 0,
+ 0, gBattlerAttacker, gBattlerTarget)
+ * gDisableStructs[gBattlerAttacker].stockpileCounter;
+ gBattleScripting.animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter;
- if (gProtectStructs[gBankAttacker].helpingHand)
+ if (gProtectStructs[gBattlerAttacker].helpingHand)
gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
}
- gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gDisableStructs[gBattlerAttacker].stockpileCounter = 0;
gBattlescriptCurrInstr += 5;
}
}
@@ -7523,30 +7459,30 @@ static void atk87_stockpiletohpheal(void)
{
const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
- if (gDisableStructs[gBankAttacker].stockpileCounter == 0)
+ if (gDisableStructs[gBattlerAttacker].stockpileCounter == 0)
{
gBattlescriptCurrInstr = jumpPtr;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
- else if (gBattleMons[gBankAttacker].maxHP == gBattleMons[gBankAttacker].hp)
+ else if (gBattleMons[gBattlerAttacker].maxHP == gBattleMons[gBattlerAttacker].hp)
{
- gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gDisableStructs[gBattlerAttacker].stockpileCounter = 0;
gBattlescriptCurrInstr = jumpPtr;
- gBankTarget = gBankAttacker;
+ gBattlerTarget = gBattlerAttacker;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
{
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / (1 << (3 - gDisableStructs[gBankAttacker].stockpileCounter));
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / (1 << (3 - gDisableStructs[gBattlerAttacker].stockpileCounter));
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
- gBattleScripting.animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
- gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattleScripting.animTurn = gDisableStructs[gBattlerAttacker].stockpileCounter;
+ gDisableStructs[gBattlerAttacker].stockpileCounter = 0;
gBattlescriptCurrInstr += 5;
- gBankTarget = gBankAttacker;
+ gBattlerTarget = gBattlerAttacker;
}
}
@@ -7566,9 +7502,9 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
u32 index;
if (flags & MOVE_EFFECT_AFFECTS_USER)
- gActiveBank = gBankAttacker;
+ gActiveBattler = gBattlerAttacker;
else
- gActiveBank = gBankTarget;
+ gActiveBattler = gBattlerTarget;
flags &= ~(MOVE_EFFECT_AFFECTS_USER);
@@ -7584,21 +7520,21 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
if ((statValue << 0x18) < 0) // stat decrease
{
- if (gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer
+ if (gSideTimers[GET_BATTLER_SIDE(gActiveBattler)].mistTimer
&& !certain && gCurrentMove != MOVE_CURSE)
{
if (flags == STAT_CHANGE_BS_PTR)
{
- if (gSpecialStatuses[gActiveBank].statLowered)
+ if (gSpecialStatuses[gActiveBattler].statLowered)
{
gBattlescriptCurrInstr = BS_ptr;
}
else
{
BattleScriptPush(BS_ptr);
- gBattleScripting.bank = gActiveBank;
+ gBattleScripting.battler = gActiveBattler;
gBattlescriptCurrInstr = BattleScript_MistProtected;
- gSpecialStatuses[gActiveBank].statLowered = 1;
+ gSpecialStatuses[gActiveBattler].statLowered = 1;
}
}
return STAT_CHANGE_DIDNT_WORK;
@@ -7609,55 +7545,55 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
gBattlescriptCurrInstr = BattleScript_ButItFailed;
return STAT_CHANGE_DIDNT_WORK;
}
- else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY
- || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE)
+ else if ((gBattleMons[gActiveBattler].ability == ABILITY_CLEAR_BODY
+ || gBattleMons[gActiveBattler].ability == ABILITY_WHITE_SMOKE)
&& !certain && gCurrentMove != MOVE_CURSE)
{
if (flags == STAT_CHANGE_BS_PTR)
{
- if (gSpecialStatuses[gActiveBank].statLowered)
+ if (gSpecialStatuses[gActiveBattler].statLowered)
{
gBattlescriptCurrInstr = BS_ptr;
}
else
{
BattleScriptPush(BS_ptr);
- gBattleScripting.bank = gActiveBank;
+ gBattleScripting.battler = gActiveBattler;
gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
- RecordAbilityBattle(gActiveBank, gLastUsedAbility);
- gSpecialStatuses[gActiveBank].statLowered = 1;
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
+ RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
+ gSpecialStatuses[gActiveBattler].statLowered = 1;
}
}
return STAT_CHANGE_DIDNT_WORK;
}
- else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE
- && !certain && statId == STAT_STAGE_ACC)
+ else if (gBattleMons[gActiveBattler].ability == ABILITY_KEEN_EYE
+ && !certain && statId == STAT_ACC)
{
if (flags == STAT_CHANGE_BS_PTR)
{
BattleScriptPush(BS_ptr);
- gBattleScripting.bank = gActiveBank;
+ gBattleScripting.battler = gActiveBattler;
gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
- RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
+ RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
}
return STAT_CHANGE_DIDNT_WORK;
}
- else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER
- && !certain && statId == STAT_STAGE_ATK)
+ else if (gBattleMons[gActiveBattler].ability == ABILITY_HYPER_CUTTER
+ && !certain && statId == STAT_ATK)
{
if (flags == STAT_CHANGE_BS_PTR)
{
BattleScriptPush(BS_ptr);
- gBattleScripting.bank = gActiveBank;
+ gBattleScripting.battler = gActiveBattler;
gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
- RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
+ RecordAbilityBattle(gActiveBattler, gLastUsedAbility);
}
return STAT_CHANGE_DIDNT_WORK;
}
- else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0)
+ else if (gBattleMons[gActiveBattler].ability == ABILITY_SHIELD_DUST && flags == 0)
{
return STAT_CHANGE_DIDNT_WORK;
}
@@ -7681,10 +7617,10 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
index++;
gBattleTextBuff2[index] = B_BUFF_EOS;
- if (gBattleMons[gActiveBank].statStages[statId] == 0)
+ if (gBattleMons[gActiveBattler].statStages[statId] == 0)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank);
+ gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler);
}
}
@@ -7708,20 +7644,20 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
index++;
gBattleTextBuff2[index] = B_BUFF_EOS;
- if (gBattleMons[gActiveBank].statStages[statId] == 0xC)
+ if (gBattleMons[gActiveBattler].statStages[statId] == 0xC)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
else
- gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank);
+ gBattleCommunication[MULTISTRING_CHOOSER] = (gBattlerTarget == gActiveBattler);
}
- gBattleMons[gActiveBank].statStages[statId] += statValue;
- if (gBattleMons[gActiveBank].statStages[statId] < 0)
- gBattleMons[gActiveBank].statStages[statId] = 0;
- if (gBattleMons[gActiveBank].statStages[statId] > 0xC)
- gBattleMons[gActiveBank].statStages[statId] = 0xC;
+ gBattleMons[gActiveBattler].statStages[statId] += statValue;
+ if (gBattleMons[gActiveBattler].statStages[statId] < 0)
+ gBattleMons[gActiveBattler].statStages[statId] = 0;
+ if (gBattleMons[gActiveBattler].statStages[statId] > 0xC)
+ gBattleMons[gActiveBattler].statStages[statId] = 0xC;
if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && flags & STAT_CHANGE_BS_PTR)
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & STAT_CHANGE_BS_PTR))
return STAT_CHANGE_DIDNT_WORK;
@@ -7740,7 +7676,7 @@ static void atk8A_normalisebuffs(void) // haze
{
s32 i, j;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
for (j = 0; j < BATTLE_STATS_NO; j++)
gBattleMons[i].statStages[j] = 6;
@@ -7751,17 +7687,17 @@ static void atk8A_normalisebuffs(void) // haze
static void atk8B_setbide(void)
{
- gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gBankAttacker] = gCurrentMove;
- gTakenDmg[gBankAttacker] = 0;
- gBattleMons[gBankAttacker].status2 |= (STATUS2_BIDE - 0x100); // 2 turns
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gBattlerAttacker] = gCurrentMove;
+ gTakenDmg[gBattlerAttacker] = 0;
+ gBattleMons[gBattlerAttacker].status2 |= (STATUS2_BIDE - 0x100); // 2 turns
gBattlescriptCurrInstr++;
}
static void atk8C_confuseifrepeatingattackends(void)
{
- if (!(gBattleMons[gBankAttacker].status2 & STATUS2_LOCK_CONFUSE))
+ if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_LOCK_CONFUSE))
gBattleCommunication[MOVE_EFFECT_BYTE] = (MOVE_EFFECT_THRASH | MOVE_EFFECT_AFFECTS_USER);
gBattlescriptCurrInstr++;
@@ -7794,19 +7730,19 @@ static void atk8E_initmultihitstring(void)
static bool8 TryDoForceSwitchOut(void)
{
- if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
{
- *(gBattleStruct->field_58 + gBankTarget) = gBattlePartyID[gBankTarget];
+ *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
else
{
u16 random = Random() & 0xFF;
- if ((u32)((random * (gBattleMons[gBankAttacker].level + gBattleMons[gBankTarget].level) >> 8) + 1) <= (gBattleMons[gBankTarget].level / 4))
+ if ((u32)((random * (gBattleMons[gBattlerAttacker].level + gBattleMons[gBattlerTarget].level) >> 8) + 1) <= (gBattleMons[gBattlerTarget].level / 4))
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
return FALSE;
}
- *(gBattleStruct->field_58 + gBankTarget) = gBattlePartyID[gBankTarget];
+ *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
gBattlescriptCurrInstr = BattleScript_SuccessForceOut;
@@ -7816,8 +7752,8 @@ static bool8 TryDoForceSwitchOut(void)
static void atk8F_forcerandomswitch(void)
{
s32 i;
- s32 bank1PartyId = 0;
- s32 bank2PartyId = 0;
+ s32 battler1PartyId = 0;
+ s32 battler2PartyId = 0;
#ifdef NONMATCHING
s32 lastMonId = 0; // + 1
@@ -7833,7 +7769,7 @@ static void atk8F_forcerandomswitch(void)
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER))
{
- if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -7842,7 +7778,7 @@ static void atk8F_forcerandomswitch(void)
|| (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_x2000000)
|| (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER))
{
- if ((gBankTarget & BIT_MON) != 0)
+ if ((gBattlerTarget & BIT_FLANK) != 0)
{
firstMonId = 3;
lastMonId = 6;
@@ -7854,13 +7790,13 @@ static void atk8F_forcerandomswitch(void)
}
monsCount = 3;
minNeeded = 1;
- bank2PartyId = gBattlePartyID[gBankTarget];
- bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else if ((gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
|| (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_x2000000))
{
- if (sub_806D82C(GetBankMultiplayerId(gBankTarget)) == 1)
+ if (sub_806D82C(GetBattlerMultiplayerId(gBattlerTarget)) == 1)
{
firstMonId = 3;
lastMonId = 6;
@@ -7872,12 +7808,12 @@ static void atk8F_forcerandomswitch(void)
}
monsCount = 3;
minNeeded = 1;
- bank2PartyId = gBattlePartyID[gBankTarget];
- bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
- if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
{
firstMonId = 0;
lastMonId = 6;
@@ -7886,7 +7822,7 @@ static void atk8F_forcerandomswitch(void)
}
else
{
- if ((gBankTarget & BIT_MON) != 0)
+ if ((gBattlerTarget & BIT_FLANK) != 0)
{
firstMonId = 3;
lastMonId = 6;
@@ -7899,8 +7835,8 @@ static void atk8F_forcerandomswitch(void)
monsCount = 3;
minNeeded = 1;
}
- bank2PartyId = gBattlePartyID[gBankTarget];
- bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@@ -7908,8 +7844,8 @@ static void atk8F_forcerandomswitch(void)
lastMonId = 6;
monsCount = 6;
minNeeded = 2;
- bank2PartyId = gBattlePartyID[gBankTarget];
- bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget];
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget ^ BIT_FLANK];
}
else
{
@@ -7917,8 +7853,8 @@ static void atk8F_forcerandomswitch(void)
lastMonId = 6;
monsCount = 6;
minNeeded = 1;
- bank2PartyId = gBattlePartyID[gBankTarget]; // there is only one pokemon out in single battles
- bank1PartyId = gBattlePartyID[gBankTarget];
+ battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one pokemon out in single battles
+ battler1PartyId = gBattlerPartyIndexes[gBattlerTarget];
}
for (i = firstMonId; i < lastMonId; i++)
@@ -7944,28 +7880,28 @@ static void atk8F_forcerandomswitch(void)
i = Random() % monsCount;
i += firstMonId;
}
- while (i == bank2PartyId
- || i == bank1PartyId
+ while (i == battler2PartyId
+ || i == battler1PartyId
|| GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_NONE
|| GetMonData(&party[i], MON_DATA_IS_EGG) == TRUE
|| GetMonData(&party[i], MON_DATA_HP) == 0);
}
- *(gBattleStruct->monToSwitchIntoId + gBankTarget) = i;
+ *(gBattleStruct->monToSwitchIntoId + gBattlerTarget) = i;
if (!sub_81B1250())
- sub_803BDA0(gBankTarget);
+ sub_803BDA0(gBattlerTarget);
if ((gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|| (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
|| (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|| (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- sub_81B8E80(gBankTarget, i, 0);
- sub_81B8E80(gBankTarget ^ BIT_MON, i, 1);
+ sub_81B8E80(gBattlerTarget, i, 0);
+ sub_81B8E80(gBattlerTarget ^ BIT_FLANK, i, 1);
}
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
- sub_80571DC(gBankTarget, i);
+ sub_80571DC(gBattlerTarget, i);
}
}
else
@@ -7982,7 +7918,7 @@ static void atk90_tryconversiontypechange(void) // randomly changes user's type
while (validMoves < 4)
{
- if (gBattleMons[gBankAttacker].moves[validMoves] == 0)
+ if (gBattleMons[gBattlerAttacker].moves[validMoves] == 0)
break;
validMoves++;
@@ -7990,17 +7926,17 @@ static void atk90_tryconversiontypechange(void) // randomly changes user's type
for (moveChecked = 0; moveChecked < validMoves; moveChecked++)
{
- moveType = gBattleMoves[gBattleMons[gBankAttacker].moves[moveChecked]].type;
+ moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type;
if (moveType == TYPE_MYSTERY)
{
- if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)
+ if (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST)
moveType = TYPE_GHOST;
else
moveType = TYPE_NORMAL;
}
- if (moveType != gBattleMons[gBankAttacker].type1
- && moveType != gBattleMons[gBankAttacker].type2)
+ if (moveType != gBattleMons[gBattlerAttacker].type1
+ && moveType != gBattleMons[gBattlerAttacker].type2)
{
break;
}
@@ -8017,20 +7953,20 @@ static void atk90_tryconversiontypechange(void) // randomly changes user's type
while ((moveChecked = Random() & 3) >= validMoves);
- moveType = gBattleMoves[gBattleMons[gBankAttacker].moves[moveChecked]].type;
+ moveType = gBattleMoves[gBattleMons[gBattlerAttacker].moves[moveChecked]].type;
if (moveType == TYPE_MYSTERY)
{
- if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)
+ if (gBattleMons[gBattlerAttacker].type1 == TYPE_GHOST || gBattleMons[gBattlerAttacker].type2 == TYPE_GHOST)
moveType = TYPE_GHOST;
else
moveType = TYPE_NORMAL;
}
}
- while (moveType == gBattleMons[gBankAttacker].type1 || moveType == gBattleMons[gBankAttacker].type2);
+ while (moveType == gBattleMons[gBattlerAttacker].type1 || moveType == gBattleMons[gBattlerAttacker].type2);
- gBattleMons[gBankAttacker].type1 = moveType;
- gBattleMons[gBankAttacker].type2 = moveType;
+ gBattleMons[gBattlerAttacker].type1 = moveType;
+ gBattleMons[gBattlerAttacker].type2 = moveType;
PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType)
@@ -8058,16 +7994,16 @@ static void atk91_givepaydaymoney(void)
static void atk92_setlightscreen(void)
{
- if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_LIGHTSCREEN)
+ if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_LIGHTSCREEN)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
else
{
- gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_LIGHTSCREEN;
- gSideTimers[GET_BANK_SIDE(gBankAttacker)].lightscreenTimer = 5;
- gSideTimers[GET_BANK_SIDE(gBankAttacker)].lightscreenBank = gBankAttacker;
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_LIGHTSCREEN;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].lightscreenTimer = 5;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].lightscreenBattlerId = gBattlerAttacker;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2)
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
@@ -8082,80 +8018,80 @@ static void atk93_tryKO(void)
{
u8 holdEffect, param;
- if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ if (gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY)
{
- holdEffect = gEnigmaBerries[gBankTarget].holdEffect;
- param = gEnigmaBerries[gBankTarget].holdEffectParam;
+ holdEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ param = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
- holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
- param = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBattlerTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBattlerTarget].item);
}
- gStringBank = gBankTarget;
+ gPotentialItemEffectBattler = gBattlerTarget;
if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
{
- RecordItemEffectBattle(gBankTarget, HOLD_EFFECT_FOCUS_BAND);
- gSpecialStatuses[gBankTarget].focusBanded = 1;
+ RecordItemEffectBattle(gBattlerTarget, HOLD_EFFECT_FOCUS_BAND);
+ gSpecialStatuses[gBattlerTarget].focusBanded = 1;
}
- if (gBattleMons[gBankTarget].ability == ABILITY_STURDY)
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_STURDY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gLastUsedAbility = ABILITY_STURDY;
gBattlescriptCurrInstr = BattleScript_SturdyPreventsOHKO;
- RecordAbilityBattle(gBankTarget, ABILITY_STURDY);
+ RecordAbilityBattle(gBattlerTarget, ABILITY_STURDY);
}
else
{
u16 chance;
- if (!(gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS))
+ if (!(gStatuses3[gBattlerTarget] & STATUS3_ALWAYS_HITS))
{
- chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level);
- if (Random() % 100 + 1 < chance && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level);
+ if (Random() % 100 + 1 < chance && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
chance = TRUE;
else
chance = FALSE;
}
- else if (gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker
- && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ else if (gDisableStructs[gBattlerTarget].battlerWithSureHit == gBattlerAttacker
+ && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
{
chance = TRUE;
}
else
{
- chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level);
- if (Random() % 100 + 1 < chance && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level);
+ if (Random() % 100 + 1 < chance && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
chance = TRUE;
else
chance = FALSE;
}
if (chance)
{
- if (gProtectStructs[gBankTarget].endured)
+ if (gProtectStructs[gBattlerTarget].endured)
{
- gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
- gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
+ gMoveResultFlags |= MOVE_RESULT_FOE_ENDURED;
}
- else if (gSpecialStatuses[gBankTarget].focusBanded)
+ else if (gSpecialStatuses[gBattlerTarget].focusBanded)
{
- gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
- gBattleMoveFlags |= MOVESTATUS_HUNGON;
- gLastUsedItem = gBattleMons[gBankTarget].item;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - 1;
+ gMoveResultFlags |= MOVE_RESULT_FOE_HUNG_ON;
+ gLastUsedItem = gBattleMons[gBattlerTarget].item;
}
else
{
- gBattleMoveDamage = gBattleMons[gBankTarget].hp;
- gBattleMoveFlags |= MOVESTATUS_ONEHITKO;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp;
+ gMoveResultFlags |= MOVE_RESULT_ONE_HIT_KO;
}
gBattlescriptCurrInstr += 5;
}
else
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
- if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
+ if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -8166,7 +8102,7 @@ static void atk93_tryKO(void)
static void atk94_damagetohalftargethp(void) // super fang
{
- gBattleMoveDamage = gBattleMons[gBankTarget].hp / 2;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp / 2;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
@@ -8177,7 +8113,7 @@ static void atk95_setsandstorm(void)
{
if (gBattleWeather & WEATHER_SANDSTORM_ANY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -8195,17 +8131,17 @@ static void atk96_weatherdamage(void)
{
if (gBattleWeather & WEATHER_SANDSTORM_ANY)
{
- if (gBattleMons[gBankAttacker].type1 != TYPE_ROCK
- && gBattleMons[gBankAttacker].type1 != TYPE_STEEL
- && gBattleMons[gBankAttacker].type1 != TYPE_GROUND
- && gBattleMons[gBankAttacker].type2 != TYPE_ROCK
- && gBattleMons[gBankAttacker].type2 != TYPE_STEEL
- && gBattleMons[gBankAttacker].type2 != TYPE_GROUND
- && gBattleMons[gBankAttacker].ability != ABILITY_SAND_VEIL
- && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND)
- && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER))
- {
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
+ if (gBattleMons[gBattlerAttacker].type1 != TYPE_ROCK
+ && gBattleMons[gBattlerAttacker].type1 != TYPE_STEEL
+ && gBattleMons[gBattlerAttacker].type1 != TYPE_GROUND
+ && gBattleMons[gBattlerAttacker].type2 != TYPE_ROCK
+ && gBattleMons[gBattlerAttacker].type2 != TYPE_STEEL
+ && gBattleMons[gBattlerAttacker].type2 != TYPE_GROUND
+ && gBattleMons[gBattlerAttacker].ability != ABILITY_SAND_VEIL
+ && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERGROUND)
+ && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER))
+ {
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
}
@@ -8216,12 +8152,12 @@ static void atk96_weatherdamage(void)
}
if (gBattleWeather & WEATHER_HAIL)
{
- if (gBattleMons[gBankAttacker].type1 != TYPE_ICE
- && gBattleMons[gBankAttacker].type2 != TYPE_ICE
- && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND)
- && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER))
+ if (gBattleMons[gBattlerAttacker].type1 != TYPE_ICE
+ && gBattleMons[gBattlerAttacker].type2 != TYPE_ICE
+ && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERGROUND)
+ && !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER))
{
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
}
@@ -8236,7 +8172,7 @@ static void atk96_weatherdamage(void)
gBattleMoveDamage = 0;
}
- if (gAbsentBankFlags & gBitTable[gBankAttacker])
+ if (gAbsentBattlerFlags & gBitTable[gBattlerAttacker])
gBattleMoveDamage = 0;
gBattlescriptCurrInstr++;
@@ -8248,15 +8184,15 @@ static void atk97_tryinfatuating(void)
u16 speciesAttacker, speciesTarget;
u32 personalityAttacker, personalityTarget;
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
- monAttacker = &gPlayerParty[gBattlePartyID[gBankAttacker]];
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ monAttacker = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]];
else
- monAttacker = &gEnemyParty[gBattlePartyID[gBankAttacker]];
+ monAttacker = &gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]];
- if (GetBankSide(gBankTarget) == SIDE_PLAYER)
- monTarget = &gPlayerParty[gBattlePartyID[gBankTarget]];
+ if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
+ monTarget = &gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]];
else
- monTarget = &gEnemyParty[gBattlePartyID[gBankTarget]];
+ monTarget = &gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]];
speciesAttacker = GetMonData(monAttacker, MON_DATA_SPECIES);
personalityAttacker = GetMonData(monAttacker, MON_DATA_PERSONALITY);
@@ -8264,16 +8200,16 @@ static void atk97_tryinfatuating(void)
speciesTarget = GetMonData(monTarget, MON_DATA_SPECIES);
personalityTarget = GetMonData(monTarget, MON_DATA_PERSONALITY);
- if (gBattleMons[gBankTarget].ability == ABILITY_OBLIVIOUS)
+ if (gBattleMons[gBattlerTarget].ability == ABILITY_OBLIVIOUS)
{
gBattlescriptCurrInstr = BattleScript_ObliviousPreventsAttraction;
gLastUsedAbility = ABILITY_OBLIVIOUS;
- RecordAbilityBattle(gBankTarget, ABILITY_OBLIVIOUS);
+ RecordAbilityBattle(gBattlerTarget, ABILITY_OBLIVIOUS);
}
else
{
if (GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget)
- || gBattleMons[gBankTarget].status2 & STATUS2_INFATUATION
+ || gBattleMons[gBattlerTarget].status2 & STATUS2_INFATUATION
|| GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == MON_GENDERLESS
|| GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) == MON_GENDERLESS)
{
@@ -8281,7 +8217,7 @@ static void atk97_tryinfatuating(void)
}
else
{
- gBattleMons[gBankTarget].status2 |= STATUS2_INFATUATED_WITH(gBankAttacker);
+ gBattleMons[gBattlerTarget].status2 |= STATUS2_INFATUATED_WITH(gBattlerAttacker);
gBattlescriptCurrInstr += 5;
}
}
@@ -8289,31 +8225,31 @@ static void atk97_tryinfatuating(void)
static void atk98_updatestatusicon(void)
{
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
if (gBattlescriptCurrInstr[1] != BS_ATTACKER_WITH_PARTNER)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
- EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
+ BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
else
{
- gActiveBank = gBankAttacker;
- if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ gActiveBattler = gBattlerAttacker;
+ if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ MarkBattlerForControllerExec(gActiveBattler);
}
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
- gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
- if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
+ if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
gBattlescriptCurrInstr += 2;
@@ -8322,16 +8258,16 @@ static void atk98_updatestatusicon(void)
static void atk99_setmist(void)
{
- if (gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistTimer)
+ if (gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer)
{
- gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gMoveResultFlags |= MOVE_RESULT_FAILED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
{
- gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistTimer = 5;
- gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistBank = gBankAttacker;
- gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_MIST;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistTimer = 5;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].mistBattlerId = gBattlerAttacker;
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_MIST;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
gBattlescriptCurrInstr++;
@@ -8339,14 +8275,14 @@ static void atk99_setmist(void)
static void atk9A_setfocusenergy(void)
{
- if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FOCUS_ENERGY)
{
- gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gMoveResultFlags |= MOVE_RESULT_FAILED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
{
- gBattleMons[gBankAttacker].status2 |= STATUS2_FOCUS_ENERGY;
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_FOCUS_ENERGY;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
gBattlescriptCurrInstr++;
@@ -8356,10 +8292,10 @@ static void atk9B_transformdataexecution(void)
{
gChosenMove = 0xFFFF;
gBattlescriptCurrInstr++;
- if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED
- || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_TRANSFORMED
+ || gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE)
{
- gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gMoveResultFlags |= MOVE_RESULT_FAILED;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
@@ -8367,55 +8303,55 @@ static void atk9B_transformdataexecution(void)
s32 i;
u8 *battleMonAttacker, *battleMonTarget;
- gBattleMons[gBankAttacker].status2 |= STATUS2_TRANSFORMED;
- gDisableStructs[gBankAttacker].disabledMove = 0;
- gDisableStructs[gBankAttacker].disableTimer1 = 0;
- gDisableStructs[gBankAttacker].transformedMonPersonality = gBattleMons[gBankTarget].personality;
- gDisableStructs[gBankAttacker].unk18_b = 0;
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_TRANSFORMED;
+ gDisableStructs[gBattlerAttacker].disabledMove = 0;
+ gDisableStructs[gBattlerAttacker].disableTimer1 = 0;
+ gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality;
+ gDisableStructs[gBattlerAttacker].unk18_b = 0;
- PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBankTarget].species)
+ PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerTarget].species)
- battleMonAttacker = (u8*)(&gBattleMons[gBankAttacker]);
- battleMonTarget = (u8*)(&gBattleMons[gBankTarget]);
+ battleMonAttacker = (u8*)(&gBattleMons[gBattlerAttacker]);
+ battleMonTarget = (u8*)(&gBattleMons[gBattlerTarget]);
for (i = 0; i < offsetof(struct BattlePokemon, pp); i++)
battleMonAttacker[i] = battleMonTarget[i];
for (i = 0; i < 4; i++)
{
- if (gBattleMoves[gBattleMons[gBankAttacker].moves[i]].pp < 5)
- gBattleMons[gBankAttacker].pp[i] = gBattleMoves[gBattleMons[gBankAttacker].moves[i]].pp;
+ if (gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].pp < 5)
+ gBattleMons[gBattlerAttacker].pp[i] = gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].pp;
else
- gBattleMons[gBankAttacker].pp[i] = 5;
+ gBattleMons[gBattlerAttacker].pp[i] = 5;
}
- gActiveBank = gBankAttacker;
- EmitResetActionMoveSelection(0, RESET_MOVE_SELECTION);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitResetActionMoveSelection(0, RESET_MOVE_SELECTION);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
}
static void atk9C_setsubstitute(void)
{
- u32 hp = gBattleMons[gBankAttacker].maxHP / 4;
- if (gBattleMons[gBankAttacker].maxHP / 4 == 0)
+ u32 hp = gBattleMons[gBattlerAttacker].maxHP / 4;
+ if (gBattleMons[gBattlerAttacker].maxHP / 4 == 0)
hp = 1;
- if (gBattleMons[gBankAttacker].hp <= hp)
+ if (gBattleMons[gBattlerAttacker].hp <= hp)
{
gBattleMoveDamage = 0;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
else
{
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games)
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games)
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- gBattleMons[gBankAttacker].status2 |= STATUS2_SUBSTITUTE;
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED);
- gDisableStructs[gBankAttacker].substituteHP = gBattleMoveDamage;
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_SUBSTITUTE;
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_WRAPPED);
+ gDisableStructs[gBattlerAttacker].substituteHP = gBattleMoveDamage;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE;
}
@@ -8436,10 +8372,10 @@ static void atk9D_mimicattackcopy(void)
{
gChosenMove = 0xFFFF;
- if (IsMoveUncopyableByMimic(gLastMoves[gBankTarget])
- || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED
- || gLastMoves[gBankTarget] == 0
- || gLastMoves[gBankTarget] == 0xFFFF)
+ if (IsMoveUncopyableByMimic(gLastMoves[gBattlerTarget])
+ || gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED
+ || gLastMoves[gBattlerTarget] == 0
+ || gLastMoves[gBattlerTarget] == 0xFFFF)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
@@ -8449,22 +8385,22 @@ static void atk9D_mimicattackcopy(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankAttacker].moves[i] == gLastMoves[gBankTarget])
+ if (gBattleMons[gBattlerAttacker].moves[i] == gLastMoves[gBattlerTarget])
break;
}
if (i == 4)
{
- gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastMoves[gBankTarget];
- if (gBattleMoves[gLastMoves[gBankTarget]].pp < 5)
- gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastMoves[gBankTarget]].pp;
+ gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastMoves[gBattlerTarget];
+ if (gBattleMoves[gLastMoves[gBattlerTarget]].pp < 5)
+ gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastMoves[gBattlerTarget]].pp;
else
- gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5;
+ gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 5;
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBankTarget])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBattlerTarget])
- gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos];
+ gDisableStructs[gBattlerAttacker].unk18_b |= gBitTable[gCurrMovePos];
gBattlescriptCurrInstr += 5;
}
else
@@ -8500,7 +8436,7 @@ static void atk9E_metronome(void)
{
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
- gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
return;
}
}
@@ -8508,7 +8444,7 @@ static void atk9E_metronome(void)
static void atk9F_dmgtolevel(void)
{
- gBattleMoveDamage = gBattleMons[gBankAttacker].level;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].level;
gBattlescriptCurrInstr++;
}
@@ -8519,54 +8455,54 @@ static void atkA0_psywavedamageeffect(void)
while ((randDamage = (Random() & 0xF)) > 10);
randDamage *= 10;
- gBattleMoveDamage = gBattleMons[gBankAttacker].level * (randDamage + 50) / 100;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].level * (randDamage + 50) / 100;
gBattlescriptCurrInstr++;
}
static void atkA1_counterdamagecalculator(void)
{
- u8 sideAttacker = GetBankSide(gBankAttacker);
- u8 sideTarget = GetBankSide(gProtectStructs[gBankAttacker].physicalBank);
+ u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
+ u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].physicalBattlerId);
- if (gProtectStructs[gBankAttacker].physicalDmg
+ if (gProtectStructs[gBattlerAttacker].physicalDmg
&& sideAttacker != sideTarget
- && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp)
+ && gBattleMons[gProtectStructs[gBattlerAttacker].physicalBattlerId].hp)
{
- gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2;
+ gBattleMoveDamage = gProtectStructs[gBattlerAttacker].physicalDmg * 2;
if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp)
- gBankTarget = gSideTimers[sideTarget].followmeTarget;
+ gBattlerTarget = gSideTimers[sideTarget].followmeTarget;
else
- gBankTarget = gProtectStructs[gBankAttacker].physicalBank;
+ gBattlerTarget = gProtectStructs[gBattlerAttacker].physicalBattlerId;
gBattlescriptCurrInstr += 5;
}
else
{
- gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gSpecialStatuses[gBattlerAttacker].flag20 = 1;
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
}
static void atkA2_mirrorcoatdamagecalculator(void) // a copy of atkA1 with the physical -> special field changes
{
- u8 sideAttacker = GetBankSide(gBankAttacker);
- u8 sideTarget = GetBankSide(gProtectStructs[gBankAttacker].specialBank);
+ u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
+ u8 sideTarget = GetBattlerSide(gProtectStructs[gBattlerAttacker].specialBattlerId);
- if (gProtectStructs[gBankAttacker].specialDmg && sideAttacker != sideTarget && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp)
+ if (gProtectStructs[gBattlerAttacker].specialDmg && sideAttacker != sideTarget && gBattleMons[gProtectStructs[gBattlerAttacker].specialBattlerId].hp)
{
- gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2;
+ gBattleMoveDamage = gProtectStructs[gBattlerAttacker].specialDmg * 2;
if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp)
- gBankTarget = gSideTimers[sideTarget].followmeTarget;
+ gBattlerTarget = gSideTimers[sideTarget].followmeTarget;
else
- gBankTarget = gProtectStructs[gBankAttacker].specialBank;
+ gBattlerTarget = gProtectStructs[gBattlerAttacker].specialBattlerId;
gBattlescriptCurrInstr += 5;
}
else
{
- gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gSpecialStatuses[gBattlerAttacker].flag20 = 1;
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
}
@@ -8577,17 +8513,17 @@ static void atkA3_disablelastusedattack(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankTarget].moves[i] == gLastMoves[gBankTarget])
+ if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget])
break;
}
- if (gDisableStructs[gBankTarget].disabledMove == 0
- && i != 4 && gBattleMons[gBankTarget].pp[i] != 0)
+ if (gDisableStructs[gBattlerTarget].disabledMove == 0
+ && i != 4 && gBattleMons[gBattlerTarget].pp[i] != 0)
{
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBankTarget].moves[i])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerTarget].moves[i])
- gDisableStructs[gBankTarget].disabledMove = gBattleMons[gBankTarget].moves[i];
- gDisableStructs[gBankTarget].disableTimer1 = (Random() & 3) + 2;
- gDisableStructs[gBankTarget].disableTimer2 = gDisableStructs[gBankTarget].disableTimer1; // used to save the random amount of turns?
+ gDisableStructs[gBattlerTarget].disabledMove = gBattleMons[gBattlerTarget].moves[i];
+ gDisableStructs[gBattlerTarget].disableTimer1 = (Random() & 3) + 2;
+ gDisableStructs[gBattlerTarget].disableTimer2 = gDisableStructs[gBattlerTarget].disableTimer1; // used to save the random amount of turns?
gBattlescriptCurrInstr += 5;
}
else
@@ -8602,24 +8538,24 @@ static void atkA4_trysetencore(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankTarget].moves[i] == gLastMoves[gBankTarget])
+ if (gBattleMons[gBattlerTarget].moves[i] == gLastMoves[gBattlerTarget])
break;
}
- if (gLastMoves[gBankTarget] == MOVE_STRUGGLE
- || gLastMoves[gBankTarget] == MOVE_ENCORE
- || gLastMoves[gBankTarget] == MOVE_MIRROR_MOVE)
+ if (gLastMoves[gBattlerTarget] == MOVE_STRUGGLE
+ || gLastMoves[gBattlerTarget] == MOVE_ENCORE
+ || gLastMoves[gBattlerTarget] == MOVE_MIRROR_MOVE)
{
i = 4;
}
- if (gDisableStructs[gBankTarget].encoredMove == 0
- && i != 4 && gBattleMons[gBankTarget].pp[i] != 0)
+ if (gDisableStructs[gBattlerTarget].encoredMove == 0
+ && i != 4 && gBattleMons[gBattlerTarget].pp[i] != 0)
{
- gDisableStructs[gBankTarget].encoredMove = gBattleMons[gBankTarget].moves[i];
- gDisableStructs[gBankTarget].encoredMovePos = i;
- gDisableStructs[gBankTarget].encoreTimer1 = (Random() & 3) + 3;
- gDisableStructs[gBankTarget].encoreTimer2 = gDisableStructs[gBankTarget].encoreTimer1;
+ gDisableStructs[gBattlerTarget].encoredMove = gBattleMons[gBattlerTarget].moves[i];
+ gDisableStructs[gBattlerTarget].encoredMovePos = i;
+ gDisableStructs[gBattlerTarget].encoreTimer1 = (Random() & 3) + 3;
+ gDisableStructs[gBattlerTarget].encoreTimer2 = gDisableStructs[gBattlerTarget].encoreTimer1;
gBattlescriptCurrInstr += 5;
}
else
@@ -8630,10 +8566,10 @@ static void atkA4_trysetencore(void)
static void atkA5_painsplitdmgcalc(void)
{
- if (!(gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE))
+ if (!(gBattleMons[gBattlerTarget].status2 & STATUS2_SUBSTITUTE))
{
- s32 hpDiff = (gBattleMons[gBankAttacker].hp + gBattleMons[gBankTarget].hp) / 2;
- s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBankTarget].hp - hpDiff;
+ s32 hpDiff = (gBattleMons[gBattlerAttacker].hp + gBattleMons[gBattlerTarget].hp) / 2;
+ s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - hpDiff;
u8* storeLoc = (void*)(&gBattleScripting.painSplitHp);
storeLoc[0] = (painSplitHp);
@@ -8641,8 +8577,8 @@ static void atkA5_painsplitdmgcalc(void)
storeLoc[2] = (painSplitHp & 0x00FF0000) >> 16;
storeLoc[3] = (painSplitHp & 0xFF000000) >> 24;
- gBattleMoveDamage = gBattleMons[gBankAttacker].hp - hpDiff;
- gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].hp - hpDiff;
+ gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF;
gBattlescriptCurrInstr += 5;
}
@@ -8654,13 +8590,13 @@ static void atkA5_painsplitdmgcalc(void)
static void atkA6_settypetorandomresistance(void) // conversion 2
{
- if (gLastLandedMoves[gBankAttacker] == 0
- || gLastLandedMoves[gBankAttacker] == 0xFFFF)
+ if (gLastLandedMoves[gBattlerAttacker] == 0
+ || gLastLandedMoves[gBattlerAttacker] == 0xFFFF)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
- else if (IsTwoTurnsMove(gLastLandedMoves[gBankAttacker])
- && gBattleMons[gLastHitBy[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS)
+ else if (IsTwoTurnsMove(gLastLandedMoves[gBattlerAttacker])
+ && gBattleMons[gLastHitBy[gBattlerAttacker]].status2 & STATUS2_MULTIPLETURNS)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
@@ -8674,13 +8610,13 @@ static void atkA6_settypetorandomresistance(void) // conversion 2
i *= 3;
- if (TYPE_EFFECT_ATK_TYPE(i) == gLastHitByType[gBankAttacker]
+ if (TYPE_EFFECT_ATK_TYPE(i) == gLastHitByType[gBattlerAttacker]
&& TYPE_EFFECT_MULTIPLIER(i) <= TYPE_MUL_NOT_EFFECTIVE
- && gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i)
- && gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i))
+ && gBattleMons[gBattlerAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i)
+ && gBattleMons[gBattlerAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i))
{
- gBattleMons[gBankAttacker].type1 = TYPE_EFFECT_DEF_TYPE(i);
- gBattleMons[gBankAttacker].type2 = TYPE_EFFECT_DEF_TYPE(i);
+ gBattleMons[gBattlerAttacker].type1 = TYPE_EFFECT_DEF_TYPE(i);
+ gBattleMons[gBattlerAttacker].type2 = TYPE_EFFECT_DEF_TYPE(i);
PREPARE_TYPE_BUFFER(gBattleTextBuff1, TYPE_EFFECT_DEF_TYPE(i))
@@ -8697,13 +8633,13 @@ static void atkA6_settypetorandomresistance(void) // conversion 2
case TYPE_FORESIGHT:
break;
default:
- if (TYPE_EFFECT_ATK_TYPE(j) == gLastHitByType[gBankAttacker]
- && TYPE_EFFECT_MULTIPLIER(j) <= 5
- && gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i)
- && gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i))
+ if (TYPE_EFFECT_ATK_TYPE(j) == gLastHitByType[gBattlerAttacker]
+ && TYPE_EFFECT_MULTIPLIER(j) <= 5
+ && gBattleMons[gBattlerAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i)
+ && gBattleMons[gBattlerAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i))
{
- gBattleMons[gBankAttacker].type1 = TYPE_EFFECT_DEF_TYPE(rands);
- gBattleMons[gBankAttacker].type2 = TYPE_EFFECT_DEF_TYPE(rands);
+ gBattleMons[gBattlerAttacker].type1 = TYPE_EFFECT_DEF_TYPE(rands);
+ gBattleMons[gBattlerAttacker].type2 = TYPE_EFFECT_DEF_TYPE(rands);
PREPARE_TYPE_BUFFER(gBattleTextBuff1, TYPE_EFFECT_DEF_TYPE(rands))
@@ -8720,9 +8656,9 @@ static void atkA6_settypetorandomresistance(void) // conversion 2
static void atkA7_setalwayshitflag(void)
{
- gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS);
- gStatuses3[gBankTarget] |= 0x10;
- gDisableStructs[gBankTarget].bankWithSureHit = gBankAttacker;
+ gStatuses3[gBattlerTarget] &= ~(STATUS3_ALWAYS_HITS);
+ gStatuses3[gBattlerTarget] |= 0x10;
+ gDisableStructs[gBattlerTarget].battlerWithSureHit = gBattlerAttacker;
gBattlescriptCurrInstr++;
}
@@ -8730,19 +8666,19 @@ static void atkA8_copymovepermanently(void) // sketch
{
gChosenMove = 0xFFFF;
- if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
- && gLastPrintedMoves[gBankTarget] != MOVE_STRUGGLE
- && gLastPrintedMoves[gBankTarget] != 0
- && gLastPrintedMoves[gBankTarget] != 0xFFFF
- && gLastPrintedMoves[gBankTarget] != MOVE_SKETCH)
+ if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)
+ && gLastPrintedMoves[gBattlerTarget] != MOVE_STRUGGLE
+ && gLastPrintedMoves[gBattlerTarget] != 0
+ && gLastPrintedMoves[gBattlerTarget] != 0xFFFF
+ && gLastPrintedMoves[gBattlerTarget] != MOVE_SKETCH)
{
s32 i;
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH)
+ if (gBattleMons[gBattlerAttacker].moves[i] == MOVE_SKETCH)
continue;
- if (gBattleMons[gBankAttacker].moves[i] == gLastPrintedMoves[gBankTarget])
+ if (gBattleMons[gBattlerAttacker].moves[i] == gLastPrintedMoves[gBattlerTarget])
break;
}
@@ -8754,21 +8690,21 @@ static void atkA8_copymovepermanently(void) // sketch
{
struct MovePpInfo movePpData;
- gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastPrintedMoves[gBankTarget];
- gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastPrintedMoves[gBankTarget]].pp;
- gActiveBank = gBankAttacker;
+ gBattleMons[gBattlerAttacker].moves[gCurrMovePos] = gLastPrintedMoves[gBattlerTarget];
+ gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = gBattleMoves[gLastPrintedMoves[gBattlerTarget]].pp;
+ gActiveBattler = gBattlerAttacker;
for (i = 0; i < 4; i++)
{
- movePpData.moves[i] = gBattleMons[gBankAttacker].moves[i];
- movePpData.pp[i] = gBattleMons[gBankAttacker].pp[i];
+ movePpData.moves[i] = gBattleMons[gBattlerAttacker].moves[i];
+ movePpData.pp[i] = gBattleMons[gBattlerAttacker].pp[i];
}
- movePpData.ppBonuses = gBattleMons[gBankAttacker].ppBonuses;
+ movePpData.ppBonuses = gBattleMons[gBattlerAttacker].ppBonuses;
- EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData);
+ MarkBattlerForControllerExec(gActiveBattler);
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBankTarget])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBattlerTarget])
gBattlescriptCurrInstr += 5;
}
@@ -8801,7 +8737,7 @@ static bool8 IsInvalidForSleepTalkOrAssist(u16 move)
return FALSE;
}
-static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
+static u8 AttacksThisTurn(u8 battlerId, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
{
// first argument is unused
if (gBattleMoves[move].effect == EFFECT_SOLARBEAM
@@ -8828,17 +8764,17 @@ static void atkA9_trychoosesleeptalkmove(void)
for (i = 0; i < 4; i++)
{
- if (IsInvalidForSleepTalkOrAssist(gBattleMons[gBankAttacker].moves[i])
- || gBattleMons[gBankAttacker].moves[i] == MOVE_FOCUS_PUNCH
- || gBattleMons[gBankAttacker].moves[i] == MOVE_UPROAR
- || IsTwoTurnsMove(gBattleMons[gBankAttacker].moves[i]))
+ if (IsInvalidForSleepTalkOrAssist(gBattleMons[gBattlerAttacker].moves[i])
+ || gBattleMons[gBattlerAttacker].moves[i] == MOVE_FOCUS_PUNCH
+ || gBattleMons[gBattlerAttacker].moves[i] == MOVE_UPROAR
+ || IsTwoTurnsMove(gBattleMons[gBattlerAttacker].moves[i]))
{
unusableMovesBits |= gBitTable[i];
}
}
- unusableMovesBits = CheckMoveLimitations(gBankAttacker, unusableMovesBits, ~(MOVE_LIMITATION_PP));
+ unusableMovesBits = CheckMoveLimitations(gBattlerAttacker, unusableMovesBits, ~(MOVE_LIMITATION_PP));
if (unusableMovesBits == 0xF) // all 4 moves cannot be chosen
{
gBattlescriptCurrInstr += 5;
@@ -8852,25 +8788,25 @@ static void atkA9_trychoosesleeptalkmove(void)
movePosition = Random() & 3;
} while ((gBitTable[movePosition] & unusableMovesBits));
- gRandomMove = gBattleMons[gBankAttacker].moves[movePosition];
+ gRandomMove = gBattleMons[gBattlerAttacker].moves[movePosition];
gCurrMovePos = movePosition;
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
- gBankTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlerTarget = GetMoveTarget(gRandomMove, 0);
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
}
static void atkAA_setdestinybond(void)
{
- gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND;
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_DESTINY_BOND;
gBattlescriptCurrInstr++;
}
static void TrySetDestinyBondToHappen(void)
{
- u8 sideAttacker = GetBankSide(gBankAttacker);
- u8 sideTarget = GetBankSide(gBankTarget);
- if (gBattleMons[gBankTarget].status2 & STATUS2_DESTINY_BOND
+ u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
+ u8 sideTarget = GetBattlerSide(gBattlerTarget);
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_DESTINY_BOND
&& sideAttacker != sideTarget
&& !(gHitMarker & HITMARKER_GRUDGE))
{
@@ -8887,7 +8823,7 @@ static void atkAB_trysetdestinybondtohappen(void)
static void atkAC_remaininghptopower(void)
{
s32 i;
- s32 hpFraction = GetScaledHPFraction(gBattleMons[gBankAttacker].hp, gBattleMons[gBankAttacker].maxHP, 48);
+ s32 hpFraction = GetScaledHPFraction(gBattleMons[gBattlerAttacker].hp, gBattleMons[gBattlerAttacker].maxHP, 48);
for (i = 0; i < (s32) sizeof(sFlailHpScaleToPowerTable); i += 2)
{
@@ -8901,43 +8837,43 @@ static void atkAC_remaininghptopower(void)
static void atkAD_tryspiteppreduce(void)
{
- if (gLastMoves[gBankTarget] != 0
- && gLastMoves[gBankTarget] != 0xFFFF)
+ if (gLastMoves[gBattlerTarget] != 0
+ && gLastMoves[gBattlerTarget] != 0xFFFF)
{
s32 i;
for (i = 0; i < 4; i++)
{
- if (gLastMoves[gBankTarget] == gBattleMons[gBankTarget].moves[i])
+ if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i])
break;
}
- if (i != 4 && gBattleMons[gBankTarget].pp[i] > 1)
+ if (i != 4 && gBattleMons[gBattlerTarget].pp[i] > 1)
{
s32 ppToDeduct = (Random() & 3) + 2;
- if (gBattleMons[gBankTarget].pp[i] < ppToDeduct)
- ppToDeduct = gBattleMons[gBankTarget].pp[i];
+ if (gBattleMons[gBattlerTarget].pp[i] < ppToDeduct)
+ ppToDeduct = gBattleMons[gBattlerTarget].pp[i];
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBankTarget])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBattlerTarget])
ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, 0, 1);
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 1, ppToDeduct)
- gBattleMons[gBankTarget].pp[i] -= ppToDeduct;
- gActiveBank = gBankTarget;
+ gBattleMons[gBattlerTarget].pp[i] -= ppToDeduct;
+ gActiveBattler = gBattlerTarget;
- if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i])
- && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ if (!(gDisableStructs[gActiveBattler].unk18_b & gBitTable[i])
+ && !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]);
+ MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 5;
- if (gBattleMons[gBankTarget].pp[i] == 0)
- CancelMultiTurnMoves(gBankTarget);
+ if (gBattleMons[gBattlerTarget].pp[i] == 0)
+ CancelMultiTurnMoves(gBattlerTarget);
}
else
{
@@ -8962,35 +8898,35 @@ static void atkAE_healpartystatus(void)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
- if (gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF)
+ if (gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF)
{
- gBattleMons[gBankAttacker].status1 = 0;
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gBattlerAttacker].status1 = 0;
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
}
else
{
- RecordAbilityBattle(gBankAttacker, gBattleMons[gBankAttacker].ability);
+ RecordAbilityBattle(gBattlerAttacker, gBattleMons[gBattlerAttacker].ability);
gBattleCommunication[MULTISTRING_CHOOSER] |= 1;
}
- gActiveBank = gBattleScripting.bank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
+ gActiveBattler = gBattleScripting.battler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF)
+ if (gBattleMons[gActiveBattler].ability != ABILITY_SOUNDPROOF)
{
- gBattleMons[gActiveBank].status1 = 0;
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gActiveBattler].status1 = 0;
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_NIGHTMARE);
}
else
{
- RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability);
+ RecordAbilityBattle(gActiveBattler, gBattleMons[gActiveBattler].ability);
gBattleCommunication[MULTISTRING_CHOOSER] |= 2;
}
}
@@ -9004,12 +8940,12 @@ static void atkAE_healpartystatus(void)
{
u8 ability;
- if (gBattlePartyID[gBankAttacker] == i)
- ability = gBattleMons[gBankAttacker].ability;
+ if (gBattlerPartyIndexes[gBattlerAttacker] == i)
+ ability = gBattleMons[gBattlerAttacker].ability;
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && gBattlePartyID[gActiveBank] == i
- && !(gAbsentBankFlags & gBitTable[gActiveBank]))
- ability = gBattleMons[gActiveBank].ability;
+ && gBattlerPartyIndexes[gActiveBattler] == i
+ && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
+ ability = gBattleMons[gActiveBattler].ability;
else
ability = GetAbilityBySpecies(species, abilityBit);
@@ -9023,24 +8959,24 @@ static void atkAE_healpartystatus(void)
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
toHeal = 0x3F;
- gBattleMons[gBankAttacker].status1 = 0;
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gBattlerAttacker].status1 = 0;
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
- gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ && !(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- gBattleMons[gActiveBank].status1 = 0;
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gActiveBattler].status1 = 0;
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_NIGHTMARE);
}
}
if (toHeal)
{
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, toHeal, 4, &zero);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, toHeal, 4, &zero);
+ MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr++;
@@ -9048,14 +8984,14 @@ static void atkAE_healpartystatus(void)
static void atkAF_cursetarget(void)
{
- if (gBattleMons[gBankTarget].status2 & STATUS2_CURSED)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_CURSED)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gBattleMons[gBankTarget].status2 |= STATUS2_CURSED;
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ gBattleMons[gBattlerTarget].status2 |= STATUS2_CURSED;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
@@ -9065,16 +9001,16 @@ static void atkAF_cursetarget(void)
static void atkB0_trysetspikes(void)
{
- u8 targetSide = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ u8 targetSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
if (gSideTimers[targetSide].spikesAmount == 3)
{
- gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gSpecialStatuses[gBattlerAttacker].flag20 = 1;
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gSideAffecting[targetSide] |= SIDE_STATUS_SPIKES;
+ gSideStatuses[targetSide] |= SIDE_STATUS_SPIKES;
gSideTimers[targetSide].spikesAmount++;
gBattlescriptCurrInstr += 5;
}
@@ -9082,7 +9018,7 @@ static void atkB0_trysetspikes(void)
static void atkB1_setforesight(void)
{
- gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT;
+ gBattleMons[gBattlerTarget].status2 |= STATUS2_FORESIGHT;
gBattlescriptCurrInstr++;
}
@@ -9091,7 +9027,7 @@ static void atkB2_trysetperishsong(void)
s32 i;
s32 notAffectedCount = 0;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gStatuses3[i] & STATUS3_PERISH_SONG
|| gBattleMons[i].ability == ABILITY_SOUNDPROOF)
@@ -9106,9 +9042,9 @@ static void atkB2_trysetperishsong(void)
}
}
- PressurePPLoseOnUsingPerishSong(gBankAttacker);
+ PressurePPLoseOnUsingPerishSong(gBattlerAttacker);
- if (notAffectedCount == gNoOfAllBanks)
+ if (notAffectedCount == gBattlersCount)
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -9116,33 +9052,33 @@ static void atkB2_trysetperishsong(void)
static void atkB3_rolloutdamagecalculation(void)
{
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
- CancelMultiTurnMoves(gBankAttacker);
+ CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveMissedPause;
}
else
{
s32 i;
- if (!(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) // first hit
+ if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)) // first hit
{
- gDisableStructs[gBankAttacker].rolloutCounter1 = 5;
- gDisableStructs[gBankAttacker].rolloutCounter2 = 5;
- gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
- gLockedMoves[gBankAttacker] = gCurrentMove;
+ gDisableStructs[gBattlerAttacker].rolloutCounter1 = 5;
+ gDisableStructs[gBattlerAttacker].rolloutCounter2 = 5;
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gBattlerAttacker] = gCurrentMove;
}
- if (--gDisableStructs[gBankAttacker].rolloutCounter1 == 0) // last hit
+ if (--gDisableStructs[gBattlerAttacker].rolloutCounter1 == 0) // last hit
{
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
}
gDynamicBasePower = gBattleMoves[gCurrentMove].power;
- for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutCounter1); i++)
+ for (i = 1; i < (5 - gDisableStructs[gBattlerAttacker].rolloutCounter1); i++)
gDynamicBasePower *= 2;
- if (gBattleMons[gBankAttacker].status2 & STATUS2_DEFENSE_CURL)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_DEFENSE_CURL)
gDynamicBasePower *= 2;
gBattlescriptCurrInstr++;
@@ -9151,8 +9087,8 @@ static void atkB3_rolloutdamagecalculation(void)
static void atkB4_jumpifconfusedandstatmaxed(void)
{
- if (gBattleMons[gBankTarget].status2 & STATUS2_CONFUSION
- && gBattleMons[gBankTarget].statStages[gBattlescriptCurrInstr[1]] == 0xC)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_CONFUSION
+ && gBattleMons[gBattlerTarget].statStages[gBattlescriptCurrInstr[1]] == 0xC)
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -9160,21 +9096,21 @@ static void atkB4_jumpifconfusedandstatmaxed(void)
static void atkB5_furycuttercalc(void)
{
- if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
- gDisableStructs[gBankAttacker].furyCutterCounter = 0;
+ gDisableStructs[gBattlerAttacker].furyCutterCounter = 0;
gBattlescriptCurrInstr = BattleScript_MoveMissedPause;
}
else
{
s32 i;
- if (gDisableStructs[gBankAttacker].furyCutterCounter != 5)
- gDisableStructs[gBankAttacker].furyCutterCounter++;
+ if (gDisableStructs[gBattlerAttacker].furyCutterCounter != 5)
+ gDisableStructs[gBattlerAttacker].furyCutterCounter++;
gDynamicBasePower = gBattleMoves[gCurrentMove].power;
- for (i = 1; i < gDisableStructs[gBankAttacker].furyCutterCounter; i++)
+ for (i = 1; i < gDisableStructs[gBattlerAttacker].furyCutterCounter; i++)
gDynamicBasePower *= 2;
gBattlescriptCurrInstr++;
@@ -9184,9 +9120,9 @@ static void atkB5_furycuttercalc(void)
static void atkB6_happinesstodamagecalculation(void)
{
if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN)
- gDynamicBasePower = 10 * (gBattleMons[gBankAttacker].friendship) / 25;
+ gDynamicBasePower = 10 * (gBattleMons[gBattlerAttacker].friendship) / 25;
else // EFFECT_FRUSTRATION
- gDynamicBasePower = 10 * (255 - gBattleMons[gBankAttacker].friendship) / 25;
+ gDynamicBasePower = 10 * (255 - gBattleMons[gBattlerAttacker].friendship) / 25;
gBattlescriptCurrInstr++;
}
@@ -9203,34 +9139,34 @@ static void atkB7_presentdamagecalculation(void)
gDynamicBasePower = 120;
else
{
- gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 4;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
}
if (rand < 204)
gBattlescriptCurrInstr = BattleScript_HitFromCritCalc;
- else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp)
+ else if (gBattleMons[gBattlerTarget].maxHP == gBattleMons[gBattlerTarget].hp)
gBattlescriptCurrInstr = BattleScript_AlreadyAtFullHp;
else
{
- gBattleMoveFlags &= ~(MOVESTATUS_NOTAFFECTED);
+ gMoveResultFlags &= ~(MOVE_RESULT_DOESNT_AFFECT_FOE);
gBattlescriptCurrInstr = BattleScript_PresentHealTarget;
}
}
static void atkB8_setsafeguard(void)
{
- if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_SAFEGUARD)
+ if (gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] & SIDE_STATUS_SAFEGUARD)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
else
{
- gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_SAFEGUARD;
- gSideTimers[GET_BANK_SIDE(gBankAttacker)].safeguardTimer = 5;
- gSideTimers[GET_BANK_SIDE(gBankAttacker)].safeguardBank = gBankAttacker;
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerAttacker)] |= SIDE_STATUS_SAFEGUARD;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardTimer = 5;
+ gSideTimers[GET_BATTLER_SIDE(gBattlerAttacker)].safeguardBattlerId = gBattlerAttacker;
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
@@ -9280,11 +9216,11 @@ static void atkB9_magnitudedamagecalculation(void)
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 2, magnitude)
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++)
{
- if (gBankTarget == gBankAttacker)
+ if (gBattlerTarget == gBattlerAttacker)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget])) // a valid target was found
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget])) // a valid target was found
break;
}
@@ -9295,36 +9231,36 @@ static void atkBA_jumpifnopursuitswitchdmg(void)
{
if (gMultiHitCounter == 1)
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
}
else
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
else
- gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
- if (gActionForBanks[gBankTarget] == ACTION_USE_MOVE
- && gBankAttacker == *(gBattleStruct->moveTarget + gBankTarget)
- && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
- && gBattleMons[gBankAttacker].hp
- && !gDisableStructs[gBankTarget].truantCounter
- && gChosenMovesByBanks[gBankTarget] == MOVE_PURSUIT)
+ if (gChosenActionByBattler[gBattlerTarget] == B_ACTION_USE_MOVE
+ && gBattlerAttacker == *(gBattleStruct->moveTarget + gBattlerTarget)
+ && !(gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE))
+ && gBattleMons[gBattlerAttacker].hp
+ && !gDisableStructs[gBattlerTarget].truantCounter
+ && gChosenMoveByBattler[gBattlerTarget] == MOVE_PURSUIT)
{
s32 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gBanksByTurnOrder[i] == gBankTarget)
+ if (gBattleTurnOrder[i] == gBattlerTarget)
gActionsByTurnOrder[i] = 11;
}
gCurrentMove = MOVE_PURSUIT;
- gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovePositions + gBankTarget);
+ gCurrMovePos = gChosenMovePos = *(gBattleStruct->chosenMovePositions + gBattlerTarget);
gBattlescriptCurrInstr += 5;
gBattleScripting.animTurn = 1;
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
@@ -9339,7 +9275,7 @@ static void atkBB_setsunny(void)
{
if (gBattleWeather & WEATHER_SUN_ANY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -9354,16 +9290,16 @@ static void atkBB_setsunny(void)
static void atkBC_maxattackhalvehp(void) // belly drum
{
- u32 halfHp = gBattleMons[gBankAttacker].maxHP / 2;
+ u32 halfHp = gBattleMons[gBattlerAttacker].maxHP / 2;
- if (!(gBattleMons[gBankAttacker].maxHP / 2))
+ if (!(gBattleMons[gBattlerAttacker].maxHP / 2))
halfHp = 1;
- if (gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] < 12
- && gBattleMons[gBankAttacker].hp > halfHp)
+ if (gBattleMons[gBattlerAttacker].statStages[STAT_ATK] < 12
+ && gBattleMons[gBattlerAttacker].hp > halfHp)
{
- gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] = 12;
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ gBattleMons[gBattlerAttacker].statStages[STAT_ATK] = 12;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
@@ -9381,7 +9317,7 @@ static void atkBD_copyfoestats(void) // psych up
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- gBattleMons[gBankAttacker].statStages[i] = gBattleMons[gBankTarget].statStages[i];
+ gBattleMons[gBattlerAttacker].statStages[i] = gBattleMons[gBattlerTarget].statStages[i];
}
gBattlescriptCurrInstr += 5; // Has an unused jump ptr(possibly for a failed attempt) parameter.
@@ -9389,32 +9325,32 @@ static void atkBD_copyfoestats(void) // psych up
static void atkBE_rapidspinfree(void)
{
- if (gBattleMons[gBankAttacker].status2 & STATUS2_WRAPPED)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_WRAPPED)
{
- gBattleScripting.bank = gBankTarget;
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED);
- gBankTarget = *(gBattleStruct->wrappedBy + gBankAttacker);
+ gBattleScripting.battler = gBattlerTarget;
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_WRAPPED);
+ gBattlerTarget = *(gBattleStruct->wrappedBy + gBattlerAttacker);
gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
gBattleTextBuff1[1] = B_BUFF_MOVE;
- gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gBankAttacker * 2 + 0);
- gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gBankAttacker * 2 + 1);
+ gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gBattlerAttacker * 2 + 0);
+ gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gBattlerAttacker * 2 + 1);
gBattleTextBuff1[4] = B_BUFF_EOS;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_WrapFree;
}
- else if (gStatuses3[gBankAttacker] & STATUS3_LEECHSEED)
+ else if (gStatuses3[gBattlerAttacker] & STATUS3_LEECHSEED)
{
- gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED);
- gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED_BANK);
+ gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED);
+ gStatuses3[gBattlerAttacker] &= ~(STATUS3_LEECHSEED_BANK);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_LeechSeedFree;
}
- else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES)
+ else if (gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_SPIKES)
{
- gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES);
- gSideTimers[GetBankSide(gBankAttacker)].spikesAmount = 0;
+ gSideStatuses[GetBattlerSide(gBattlerAttacker)] &= ~(SIDE_STATUS_SPIKES);
+ gSideTimers[GetBattlerSide(gBattlerAttacker)].spikesAmount = 0;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SpikesFree;
}
@@ -9426,22 +9362,22 @@ static void atkBE_rapidspinfree(void)
static void atkBF_setdefensecurlbit(void)
{
- gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL;
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_DEFENSE_CURL;
gBattlescriptCurrInstr++;
}
static void atkC0_recoverbasedonsunlight(void)
{
- gBankTarget = gBankAttacker;
+ gBattlerTarget = gBattlerAttacker;
- if (gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP)
+ if (gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP)
{
if (gBattleWeather == 0 || !WEATHER_HAS_EFFECT)
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 2;
else if (gBattleWeather & WEATHER_SUN_ANY)
- gBattleMoveDamage = 20 * gBattleMons[gBankAttacker].maxHP / 30;
+ gBattleMoveDamage = 20 * gBattleMons[gBattlerAttacker].maxHP / 30;
else // not sunny weather
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
@@ -9461,19 +9397,19 @@ static void atkC1_hiddenpowercalc(void)
u32 powerBits = 0;
u32 typeBits = 0;
- powerBits |= ((gBattleMons[gBankAttacker].hpIV & 2) >> 1);
- powerBits |= ((gBattleMons[gBankAttacker].attackIV & 2) << 0);
- powerBits |= ((gBattleMons[gBankAttacker].defenseIV & 2) << 1);
- powerBits |= ((gBattleMons[gBankAttacker].speedIV & 2) << 2);
- powerBits |= ((gBattleMons[gBankAttacker].spAttackIV & 2) << 3);
- powerBits |= ((gBattleMons[gBankAttacker].spDefenseIV & 2) << 4);
+ powerBits |= ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1);
+ powerBits |= ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0);
+ powerBits |= ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1);
+ powerBits |= ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2);
+ powerBits |= ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3);
+ powerBits |= ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4);
- typeBits |= ((gBattleMons[gBankAttacker].hpIV & 1) << 0);
- typeBits |= ((gBattleMons[gBankAttacker].attackIV & 1) << 1);
- typeBits |= ((gBattleMons[gBankAttacker].defenseIV & 1) << 2);
- typeBits |= ((gBattleMons[gBankAttacker].speedIV & 1) << 3);
- typeBits |= ((gBattleMons[gBankAttacker].spAttackIV & 1) << 4);
- typeBits |= ((gBattleMons[gBankAttacker].spDefenseIV & 1) << 5);
+ typeBits |= ((gBattleMons[gBattlerAttacker].hpIV & 1) << 0);
+ typeBits |= ((gBattleMons[gBattlerAttacker].attackIV & 1) << 1);
+ typeBits |= ((gBattleMons[gBattlerAttacker].defenseIV & 1) << 2);
+ typeBits |= ((gBattleMons[gBattlerAttacker].speedIV & 1) << 3);
+ typeBits |= ((gBattleMons[gBattlerAttacker].spAttackIV & 1) << 4);
+ typeBits |= ((gBattleMons[gBattlerAttacker].spDefenseIV & 1) << 5);
gDynamicBasePower = (40 * powerBits) / 63 + 30;
@@ -9496,7 +9432,7 @@ static void atkC1_hiddenpowercalc(void)
mov r5, r8\n\
push {r5-r7}\n\
ldr r2, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
+ ldr r0, =gBattlerAttacker\n\
ldrb r1, [r0]\n\
movs r0, 0x58\n\
adds r4, r1, 0\n\
@@ -9632,11 +9568,11 @@ _080544F0:\n\
static void atkC2_selectfirstvalidtarget(void)
{
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount; gBattlerTarget++)
{
- if (gBankTarget == gBankAttacker)
+ if (gBattlerTarget == gBattlerAttacker)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget]))
break;
}
gBattlescriptCurrInstr++;
@@ -9644,22 +9580,22 @@ static void atkC2_selectfirstvalidtarget(void)
static void atkC3_trysetfutureattack(void)
{
- if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0)
+ if (gWishFutureKnock.futureSightCounter[gBattlerTarget] != 0)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gSideAffecting[GET_BANK_SIDE(gBankTarget)] |= SIDE_STATUS_FUTUREATTACK;
- gWishFutureKnock.futureSightMove[gBankTarget] = gCurrentMove;
- gWishFutureKnock.futureSightAttacker[gBankTarget] = gBankAttacker;
- gWishFutureKnock.futureSightCounter[gBankTarget] = 3;
- gWishFutureKnock.futureSightDmg[gBankTarget] = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
- gSideAffecting[GET_BANK_SIDE(gBankTarget)], 0,
- 0, gBankAttacker, gBankTarget);
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)] |= SIDE_STATUS_FUTUREATTACK;
+ gWishFutureKnock.futureSightMove[gBattlerTarget] = gCurrentMove;
+ gWishFutureKnock.futureSightAttacker[gBattlerTarget] = gBattlerAttacker;
+ gWishFutureKnock.futureSightCounter[gBattlerTarget] = 3;
+ gWishFutureKnock.futureSightDmg[gBattlerTarget] = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerTarget], gCurrentMove,
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)], 0,
+ 0, gBattlerAttacker, gBattlerTarget);
- if (gProtectStructs[gBankAttacker].helpingHand)
- gWishFutureKnock.futureSightDmg[gBankTarget] = gWishFutureKnock.futureSightDmg[gBankTarget] * 15 / 10;
+ if (gProtectStructs[gBattlerAttacker].helpingHand)
+ gWishFutureKnock.futureSightDmg[gBattlerTarget] = gWishFutureKnock.futureSightDmg[gBattlerTarget] * 15 / 10;
if (gCurrentMove == MOVE_DOOM_DESIRE)
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -9674,12 +9610,12 @@ static void atkC4_trydobeatup(void)
{
struct Pokemon *party;
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
- if (gBattleMons[gBankTarget].hp == 0)
+ if (gBattleMons[gBattlerTarget].hp == 0)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
@@ -9696,16 +9632,16 @@ static void atkC4_trydobeatup(void)
}
if (gBattleCommunication[0] < 6)
{
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBankAttacker, gBattleCommunication[0])
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattleCommunication[0])
gBattlescriptCurrInstr += 9;
gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack;
gBattleMoveDamage *= gBattleMoves[gCurrentMove].power;
gBattleMoveDamage *= (GetMonData(&party[gBattleCommunication[0]], MON_DATA_LEVEL) * 2 / 5 + 2);
- gBattleMoveDamage /= gBaseStats[gBattleMons[gBankTarget].species].baseDefense;
+ gBattleMoveDamage /= gBaseStats[gBattleMons[gBattlerTarget].species].baseDefense;
gBattleMoveDamage = (gBattleMoveDamage / 50) + 2;
- if (gProtectStructs[gBankAttacker].helpingHand)
+ if (gProtectStructs[gBattlerAttacker].helpingHand)
gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
gBattleCommunication[0]++;
@@ -9723,13 +9659,13 @@ static void atkC5_setsemiinvulnerablebit(void)
{
case MOVE_FLY:
case MOVE_BOUNCE:
- gStatuses3[gBankAttacker] |= STATUS3_ON_AIR;
+ gStatuses3[gBattlerAttacker] |= STATUS3_ON_AIR;
break;
case MOVE_DIG:
- gStatuses3[gBankAttacker] |= STATUS3_UNDERGROUND;
+ gStatuses3[gBattlerAttacker] |= STATUS3_UNDERGROUND;
break;
case MOVE_DIVE:
- gStatuses3[gBankAttacker] |= STATUS3_UNDERWATER;
+ gStatuses3[gBattlerAttacker] |= STATUS3_UNDERWATER;
break;
}
@@ -9742,13 +9678,13 @@ static void atkC6_clearsemiinvulnerablebit(void)
{
case MOVE_FLY:
case MOVE_BOUNCE:
- gStatuses3[gBankAttacker] &= ~STATUS3_ON_AIR;
+ gStatuses3[gBattlerAttacker] &= ~STATUS3_ON_AIR;
break;
case MOVE_DIG:
- gStatuses3[gBankAttacker] &= ~STATUS3_UNDERGROUND;
+ gStatuses3[gBattlerAttacker] &= ~STATUS3_UNDERGROUND;
break;
case MOVE_DIVE:
- gStatuses3[gBankAttacker] &= ~STATUS3_UNDERWATER;
+ gStatuses3[gBattlerAttacker] &= ~STATUS3_UNDERWATER;
break;
}
@@ -9758,7 +9694,7 @@ static void atkC6_clearsemiinvulnerablebit(void)
static void atkC7_setminimize(void)
{
if (gHitMarker & HITMARKER_OBEYS)
- gStatuses3[gBankAttacker] |= STATUS3_MINIMIZED;
+ gStatuses3[gBattlerAttacker] |= STATUS3_MINIMIZED;
gBattlescriptCurrInstr++;
}
@@ -9767,7 +9703,7 @@ static void atkC8_sethail(void)
{
if (gBattleWeather & WEATHER_HAIL_ANY)
{
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
else
@@ -9782,34 +9718,34 @@ static void atkC8_sethail(void)
static void atkC9_jumpifattackandspecialattackcannotfall(void) // memento
{
- if (gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] == 0
- && gBattleMons[gBankTarget].statStages[STAT_STAGE_SPATK] == 0
+ if (gBattleMons[gBattlerTarget].statStages[STAT_ATK] == 0
+ && gBattleMons[gBattlerTarget].statStages[STAT_SPATK] == 0
&& gBattleCommunication[6] != 1)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gActiveBank = gBankAttacker;
- gBattleMoveDamage = gBattleMons[gActiveBank].hp;
- EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
+ BtlController_EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
}
static void atkCA_setforcedtarget(void) // follow me
{
- gSideTimers[GetBankSide(gBankAttacker)].followmeTimer = 1;
- gSideTimers[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker;
+ gSideTimers[GetBattlerSide(gBattlerAttacker)].followmeTimer = 1;
+ gSideTimers[GetBattlerSide(gBattlerAttacker)].followmeTarget = gBattlerAttacker;
gBattlescriptCurrInstr++;
}
static void atkCB_setcharge(void)
{
- gStatuses3[gBankAttacker] |= STATUS3_CHARGED_UP;
- gDisableStructs[gBankAttacker].chargeTimer1 = 2;
- gDisableStructs[gBankAttacker].chargeTimer2 = 2;
+ gStatuses3[gBattlerAttacker] |= STATUS3_CHARGED_UP;
+ gDisableStructs[gBattlerAttacker].chargeTimer1 = 2;
+ gDisableStructs[gBattlerAttacker].chargeTimer2 = 2;
gBattlescriptCurrInstr++;
}
@@ -9817,20 +9753,20 @@ static void atkCC_callterrainattack(void) // nature power
{
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
gCurrentMove = sNaturePowerMoves[gBattleTerrain];
- gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]);
gBattlescriptCurrInstr++;
}
static void atkCD_cureifburnedparalysedorpoisoned(void) // refresh
{
- if (gBattleMons[gBankAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
+ if (gBattleMons[gBattlerAttacker].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON))
{
- gBattleMons[gBankAttacker].status1 = 0;
+ gBattleMons[gBattlerAttacker].status1 = 0;
gBattlescriptCurrInstr += 5;
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
}
else
{
@@ -9840,20 +9776,20 @@ static void atkCD_cureifburnedparalysedorpoisoned(void) // refresh
static void atkCE_settorment(void)
{
- if (gBattleMons[gBankTarget].status2 & STATUS2_TORMENT)
+ if (gBattleMons[gBattlerTarget].status2 & STATUS2_TORMENT)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gBattleMons[gBankTarget].status2 |= STATUS2_TORMENT;
+ gBattleMons[gBattlerTarget].status2 |= STATUS2_TORMENT;
gBattlescriptCurrInstr += 5;
}
}
static void atkCF_jumpifnodamage(void)
{
- if (gProtectStructs[gBankAttacker].physicalDmg || gProtectStructs[gBankAttacker].specialDmg)
+ if (gProtectStructs[gBattlerAttacker].physicalDmg || gProtectStructs[gBattlerAttacker].specialDmg)
gBattlescriptCurrInstr += 5;
else
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
@@ -9861,10 +9797,10 @@ static void atkCF_jumpifnodamage(void)
static void atkD0_settaunt(void)
{
- if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
+ if (gDisableStructs[gBattlerTarget].tauntTimer1 == 0)
{
- gDisableStructs[gBankTarget].tauntTimer1 = 2;
- gDisableStructs[gBankTarget].tauntTimer2 = 2;
+ gDisableStructs[gBattlerTarget].tauntTimer1 = 2;
+ gDisableStructs[gBattlerTarget].tauntTimer2 = 2;
gBattlescriptCurrInstr += 5;
}
else
@@ -9875,14 +9811,14 @@ static void atkD0_settaunt(void)
static void atkD1_trysethelpinghand(void)
{
- gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
+ gBattlerTarget = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && !(gAbsentBankFlags & gBitTable[gBankTarget])
- && !gProtectStructs[gBankAttacker].helpingHand
- && !gProtectStructs[gBankTarget].helpingHand)
+ && !(gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ && !gProtectStructs[gBattlerAttacker].helpingHand
+ && !gProtectStructs[gBattlerTarget].helpingHand)
{
- gProtectStructs[gBankTarget].helpingHand = 1;
+ gProtectStructs[gBattlerTarget].helpingHand = 1;
gBattlescriptCurrInstr += 5;
}
else
@@ -9895,7 +9831,7 @@ static void atkD2_tryswapitems(void) // trick
{
// opponent can't swap items with player in regular battles
if (gBattleTypeFlags & BATTLE_TYPE_x4000000
- || (GetBankSide(gBankAttacker) == SIDE_OPPONENT
+ || (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK
| BATTLE_TYPE_EREADER_TRAINER
| BATTLE_TYPE_FRONTIER
@@ -9906,8 +9842,8 @@ static void atkD2_tryswapitems(void) // trick
}
else
{
- u8 sideAttacker = GetBankSide(gBankAttacker);
- u8 sideTarget = GetBankSide(gBankTarget);
+ u8 sideAttacker = GetBattlerSide(gBattlerAttacker);
+ u8 sideTarget = GetBattlerSide(gBattlerTarget);
// you can't swap items if they were knocked off in regular battles
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
@@ -9915,53 +9851,53 @@ static void atkD2_tryswapitems(void) // trick
| BATTLE_TYPE_FRONTIER
| BATTLE_TYPE_SECRET_BASE
| BATTLE_TYPE_x2000000))
- && (gWishFutureKnock.knockedOffPokes[sideAttacker] & gBitTable[gBattlePartyID[gBankAttacker]]
- || gWishFutureKnock.knockedOffPokes[sideTarget] & gBitTable[gBattlePartyID[gBankTarget]]))
+ && (gWishFutureKnock.knockedOffPokes[sideAttacker] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]]
+ || gWishFutureKnock.knockedOffPokes[sideTarget] & gBitTable[gBattlerPartyIndexes[gBattlerTarget]]))
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
// can't swap if two pokemon don't have an item
// or if either of them is an enigma berry or a mail
- else if ((gBattleMons[gBankAttacker].item == 0 && gBattleMons[gBankTarget].item == 0)
- || gBattleMons[gBankAttacker].item == ITEM_ENIGMA_BERRY
- || gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY
- || IS_ITEM_MAIL(gBattleMons[gBankAttacker].item)
- || IS_ITEM_MAIL(gBattleMons[gBankTarget].item))
+ else if ((gBattleMons[gBattlerAttacker].item == 0 && gBattleMons[gBattlerTarget].item == 0)
+ || gBattleMons[gBattlerAttacker].item == ITEM_ENIGMA_BERRY
+ || gBattleMons[gBattlerTarget].item == ITEM_ENIGMA_BERRY
+ || IS_ITEM_MAIL(gBattleMons[gBattlerAttacker].item)
+ || IS_ITEM_MAIL(gBattleMons[gBattlerTarget].item))
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
// check if ability prevents swapping
- else if (gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD)
+ else if (gBattleMons[gBattlerTarget].ability == ABILITY_STICKY_HOLD)
{
gBattlescriptCurrInstr = BattleScript_StickyHoldActivates;
- gLastUsedAbility = gBattleMons[gBankTarget].ability;
- RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
+ RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
}
// took a while, but all checks passed and items can be safely swapped
else
{
u16 oldItemAtk, *newItemAtk;
- newItemAtk = &gBattleStruct->changedItems[gBankAttacker];
- oldItemAtk = gBattleMons[gBankAttacker].item;
- *newItemAtk = gBattleMons[gBankTarget].item;
+ newItemAtk = &gBattleStruct->changedItems[gBattlerAttacker];
+ oldItemAtk = gBattleMons[gBattlerAttacker].item;
+ *newItemAtk = gBattleMons[gBattlerTarget].item;
- gBattleMons[gBankAttacker].item = 0;
- gBattleMons[gBankTarget].item = oldItemAtk;
+ gBattleMons[gBattlerAttacker].item = 0;
+ gBattleMons[gBattlerTarget].item = oldItemAtk;
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, newItemAtk);
- MarkBufferBankForExecution(gBankAttacker);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, newItemAtk);
+ MarkBattlerForControllerExec(gBattlerAttacker);
- gActiveBank = gBankTarget;
- EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item);
- MarkBufferBankForExecution(gBankTarget);
+ gActiveBattler = gBattlerTarget;
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
+ MarkBattlerForControllerExec(gBattlerTarget);
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 0) = 0;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 1) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBattlerTarget]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBattlerTarget]) + 1) = 0;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankAttacker]) + 0) = 0;
- *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankAttacker]) + 1) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBattlerAttacker]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBattlerAttacker]) + 1) = 0;
gBattlescriptCurrInstr += 5;
@@ -9980,11 +9916,11 @@ static void atkD2_tryswapitems(void) // trick
static void atkD3_trycopyability(void) // role play
{
- if (gBattleMons[gBankTarget].ability != 0
- && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD)
+ if (gBattleMons[gBattlerTarget].ability != 0
+ && gBattleMons[gBattlerTarget].ability != ABILITY_WONDER_GUARD)
{
- gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability;
- gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattleMons[gBattlerAttacker].ability = gBattleMons[gBattlerTarget].ability;
+ gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
gBattlescriptCurrInstr += 5;
}
else
@@ -9998,10 +9934,10 @@ static void atkD4_trywish(void)
switch (gBattlescriptCurrInstr[1])
{
case 0: // use wish
- if (gWishFutureKnock.wishCounter[gBankAttacker] == 0)
+ if (gWishFutureKnock.wishCounter[gBattlerAttacker] == 0)
{
- gWishFutureKnock.wishCounter[gBankAttacker] = 2;
- gWishFutureKnock.wishUserID[gBankAttacker] = gBattlePartyID[gBankAttacker];
+ gWishFutureKnock.wishCounter[gBattlerAttacker] = 2;
+ gWishFutureKnock.wishMonId[gBattlerAttacker] = gBattlerPartyIndexes[gBattlerAttacker];
gBattlescriptCurrInstr += 6;
}
else
@@ -10010,14 +9946,14 @@ static void atkD4_trywish(void)
}
break;
case 1: // heal effect
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBankTarget, gWishFutureKnock.wishUserID[gBankTarget])
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerTarget, gWishFutureKnock.wishMonId[gBattlerTarget])
- gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].maxHP / 2;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
- if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ if (gBattleMons[gBattlerTarget].hp == gBattleMons[gBattlerTarget].maxHP)
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -10028,23 +9964,23 @@ static void atkD4_trywish(void)
static void atkD5_trysetroots(void) // ingrain
{
- if (gStatuses3[gBankAttacker] & STATUS3_ROOTED)
+ if (gStatuses3[gBattlerAttacker] & STATUS3_ROOTED)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gStatuses3[gBankAttacker] |= STATUS3_ROOTED;
+ gStatuses3[gBattlerAttacker] |= STATUS3_ROOTED;
gBattlescriptCurrInstr += 5;
}
}
static void atkD6_doubledamagedealtifdamaged(void)
{
- if ((gProtectStructs[gBankAttacker].physicalDmg
- && gProtectStructs[gBankAttacker].physicalBank == gBankTarget)
- || (gProtectStructs[gBankAttacker].specialDmg
- && gProtectStructs[gBankAttacker].specialBank == gBankTarget))
+ if ((gProtectStructs[gBattlerAttacker].physicalDmg
+ && gProtectStructs[gBattlerAttacker].physicalBattlerId == gBattlerTarget)
+ || (gProtectStructs[gBattlerAttacker].specialDmg
+ && gProtectStructs[gBattlerAttacker].specialBattlerId == gBattlerTarget))
{
gBattleScripting.dmgMultiplier = 2;
}
@@ -10054,27 +9990,27 @@ static void atkD6_doubledamagedealtifdamaged(void)
static void atkD7_setyawn(void)
{
- if (gStatuses3[gBankTarget] & STATUS3_YAWN
- || gBattleMons[gBankTarget].status1 & STATUS_ANY)
+ if (gStatuses3[gBattlerTarget] & STATUS3_YAWN
+ || gBattleMons[gBattlerTarget].status1 & STATUS1_ANY)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gStatuses3[gBankTarget] |= 0x1000;
+ gStatuses3[gBattlerTarget] |= 0x1000;
gBattlescriptCurrInstr += 5;
}
}
static void atkD8_setdamagetohealthdifference(void)
{
- if (gBattleMons[gBankTarget].hp <= gBattleMons[gBankAttacker].hp)
+ if (gBattleMons[gBattlerTarget].hp <= gBattleMons[gBattlerAttacker].hp)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gBattleMoveDamage = gBattleMons[gBankTarget].hp - gBattleMons[gBankAttacker].hp;
+ gBattleMoveDamage = gBattleMons[gBattlerTarget].hp - gBattleMons[gBattlerAttacker].hp;
gBattlescriptCurrInstr += 5;
}
}
@@ -10084,7 +10020,7 @@ static void atkD9_scaledamagebyhealthratio(void)
if (gDynamicBasePower == 0)
{
u8 power = gBattleMoves[gCurrentMove].power;
- gDynamicBasePower = gBattleMons[gBankAttacker].hp * power / gBattleMons[gBankAttacker].maxHP;
+ gDynamicBasePower = gBattleMons[gBattlerAttacker].hp * power / gBattleMons[gBattlerAttacker].maxHP;
if (gDynamicBasePower == 0)
gDynamicBasePower = 1;
}
@@ -10093,19 +10029,19 @@ static void atkD9_scaledamagebyhealthratio(void)
static void atkDA_tryswapabilities(void) // skill swap
{
- if ((gBattleMons[gBankAttacker].ability == 0
- && gBattleMons[gBankTarget].ability == 0)
- || gBattleMons[gBankAttacker].ability == ABILITY_WONDER_GUARD
- || gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD
- || gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if ((gBattleMons[gBattlerAttacker].ability == 0
+ && gBattleMons[gBattlerTarget].ability == 0)
+ || gBattleMons[gBattlerAttacker].ability == ABILITY_WONDER_GUARD
+ || gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD
+ || gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- u8 abilityAtk = gBattleMons[gBankAttacker].ability;
- gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability;
- gBattleMons[gBankTarget].ability = abilityAtk;
+ u8 abilityAtk = gBattleMons[gBattlerAttacker].ability;
+ gBattleMons[gBattlerAttacker].ability = gBattleMons[gBattlerTarget].ability;
+ gBattleMons[gBattlerTarget].ability = abilityAtk;
gBattlescriptCurrInstr += 5;
}
@@ -10113,19 +10049,19 @@ static void atkDA_tryswapabilities(void) // skill swap
static void atkDB_tryimprision(void)
{
- if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISONED_OTHERS))
+ if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS))
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- u8 bank, sideAttacker;
+ u8 battlerId, sideAttacker;
- sideAttacker = GetBankSide(gBankAttacker);
- PressurePPLoseOnUsingImprision(gBankAttacker);
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ sideAttacker = GetBattlerSide(gBattlerAttacker);
+ PressurePPLoseOnUsingImprision(gBattlerAttacker);
+ for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
- if (sideAttacker != GetBankSide(bank))
+ if (sideAttacker != GetBattlerSide(battlerId))
{
s32 attackerMoveId;
for (attackerMoveId = 0; attackerMoveId < 4; attackerMoveId++)
@@ -10133,8 +10069,8 @@ static void atkDB_tryimprision(void)
s32 i;
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankAttacker].moves[attackerMoveId] == gBattleMons[bank].moves[i]
- && gBattleMons[gBankAttacker].moves[attackerMoveId] != MOVE_NONE)
+ if (gBattleMons[gBattlerAttacker].moves[attackerMoveId] == gBattleMons[battlerId].moves[i]
+ && gBattleMons[gBattlerAttacker].moves[attackerMoveId] != MOVE_NONE)
break;
}
if (i != 4)
@@ -10142,26 +10078,26 @@ static void atkDB_tryimprision(void)
}
if (attackerMoveId != 4)
{
- gStatuses3[gBankAttacker] |= STATUS3_IMPRISONED_OTHERS;
+ gStatuses3[gBattlerAttacker] |= STATUS3_IMPRISONED_OTHERS;
gBattlescriptCurrInstr += 5;
break;
}
}
}
- if (bank == gNoOfAllBanks) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes
+ if (battlerId == gBattlersCount) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
}
static void atkDC_trysetgrudge(void)
{
- if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE)
+ if (gStatuses3[gBattlerAttacker] & STATUS3_GRUDGE)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gStatuses3[gBankAttacker] |= STATUS3_GRUDGE;
+ gStatuses3[gBattlerAttacker] |= STATUS3_GRUDGE;
gBattlescriptCurrInstr += 5;
}
}
@@ -10171,7 +10107,7 @@ static void atkDD_weightdamagecalculation(void)
s32 i;
for (i = 0; sWeightToDamageTable[i] != 0xFFFF; i += 2)
{
- if (sWeightToDamageTable[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1))
+ if (sWeightToDamageTable[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), 1))
break;
}
@@ -10190,14 +10126,14 @@ static void atkDE_asistattackselect(void)
s32 monId, moveId;
u16* movesArray = gBattleStruct->assistPossibleMoves;
- if (GET_BANK_SIDE(gBankAttacker) != SIDE_PLAYER)
+ if (GET_BATTLER_SIDE(gBattlerAttacker) != B_SIDE_PLAYER)
party = gEnemyParty;
else
party = gPlayerParty;
for (monId = 0; monId < 6; monId++)
{
- if (monId == gBattlePartyID[gBankAttacker])
+ if (monId == gBattlerPartyIndexes[gBattlerAttacker])
continue;
if (GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_NONE)
continue;
@@ -10227,7 +10163,7 @@ static void atkDE_asistattackselect(void)
{
gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
gRandomMove = movesArray[((Random() & 0xFF) * chooseableMovesNo) >> 8];
- gBankTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlerTarget = GetMoveTarget(gRandomMove, 0);
gBattlescriptCurrInstr += 5;
}
else
@@ -10238,29 +10174,29 @@ static void atkDE_asistattackselect(void)
static void atkDF_trysetmagiccoat(void)
{
- gBankTarget = gBankAttacker;
- gSpecialStatuses[gBankAttacker].flag20 = 1;
- if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn
+ gBattlerTarget = gBattlerAttacker;
+ gSpecialStatuses[gBattlerAttacker].flag20 = 1;
+ if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gProtectStructs[gBankAttacker].bounceMove = 1;
+ gProtectStructs[gBattlerAttacker].bounceMove = 1;
gBattlescriptCurrInstr += 5;
}
}
static void atkE0_trysetsnatch(void) // snatch
{
- gSpecialStatuses[gBankAttacker].flag20 = 1;
- if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn
+ gSpecialStatuses[gBattlerAttacker].flag20 = 1;
+ if (gCurrentTurnActionNumber == gBattlersCount - 1) // moves last turn
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- gProtectStructs[gBankAttacker].stealMove = 1;
+ gProtectStructs[gBattlerAttacker].stealMove = 1;
gBattlescriptCurrInstr += 5;
}
}
@@ -10269,20 +10205,20 @@ static void atkE1_trygetintimidatetarget(void)
{
u8 side;
- gBattleScripting.bank = gBattleStruct->intimidateBank;
- side = GetBankSide(gBattleScripting.bank);
+ gBattleScripting.battler = gBattleStruct->intimidateBank;
+ side = GetBattlerSide(gBattleScripting.battler);
- PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.bank].ability)
+ PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.battler].ability)
- for (;gBankTarget < gNoOfAllBanks; gBankTarget++)
+ for (;gBattlerTarget < gBattlersCount; gBattlerTarget++)
{
- if (GetBankSide(gBankTarget) == side)
+ if (GetBattlerSide(gBattlerTarget) == side)
continue;
- if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerTarget]))
break;
}
- if (gBankTarget >= gNoOfAllBanks)
+ if (gBattlerTarget >= gBattlersCount)
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -10290,14 +10226,14 @@ static void atkE1_trygetintimidatetarget(void)
static void atkE2_switchoutabilities(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- switch (gBattleMons[gActiveBank].ability)
+ switch (gBattleMons[gActiveBattler].ability)
{
case ABILITY_NATURAL_CURE:
- gBattleMons[gActiveBank].status1 = 0;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->field_58 + gActiveBank)], 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gBattleMons[gActiveBattler].status1 = 0;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->field_58 + gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -10306,9 +10242,9 @@ static void atkE2_switchoutabilities(void)
static void atkE3_jumpifhasnohp(void)
{
- gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- if (gBattleMons[gActiveBank].hp == 0)
+ if (gBattleMons[gActiveBattler].hp == 0)
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -10427,13 +10363,13 @@ static void atkE5_pickup(void)
static void atkE6_docastformchangeanimation(void)
{
- gActiveBank = gBattleScripting.bank;
+ gActiveBattler = gBattleScripting.battler;
- if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE)
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE)
*(&gBattleStruct->formToChangeInto) |= 0x80;
- EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
}
@@ -10443,7 +10379,7 @@ static void atkE7_trycastformdatachange(void)
u8 form;
gBattlescriptCurrInstr++;
- form = CastformDataTypeChange(gBattleScripting.bank);
+ form = CastformDataTypeChange(gBattleScripting.battler);
if (form)
{
BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
@@ -10457,18 +10393,18 @@ static void atkE8_settypebasedhalvers(void) // water and mud sport
if (gBattleMoves[gCurrentMove].effect == EFFECT_MUD_SPORT)
{
- if (!(gStatuses3[gBankAttacker] & STATUS3_MUDSPORT))
+ if (!(gStatuses3[gBattlerAttacker] & STATUS3_MUDSPORT))
{
- gStatuses3[gBankAttacker] |= STATUS3_MUDSPORT;
+ gStatuses3[gBattlerAttacker] |= STATUS3_MUDSPORT;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
worked = TRUE;
}
}
else // water sport
{
- if (!(gStatuses3[gBankAttacker] & STATUS3_WATERSPORT))
+ if (!(gStatuses3[gBattlerAttacker] & STATUS3_WATERSPORT))
{
- gStatuses3[gBankAttacker] |= STATUS3_WATERSPORT;
+ gStatuses3[gBattlerAttacker] |= STATUS3_WATERSPORT;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
worked = TRUE;
}
@@ -10505,16 +10441,16 @@ static void atkEA_tryrecycleitem(void)
{
u16 *usedHeldItem;
- gActiveBank = gBankAttacker;
- usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBank];
- if (*usedHeldItem != 0 && gBattleMons[gActiveBank].item == 0)
+ gActiveBattler = gBattlerAttacker;
+ usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBattler];
+ if (*usedHeldItem != 0 && gBattleMons[gActiveBattler].item == 0)
{
gLastUsedItem = *usedHeldItem;
*usedHeldItem = 0;
- gBattleMons[gActiveBank].item = gLastUsedItem;
+ gBattleMons[gActiveBattler].item = gLastUsedItem;
- EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
@@ -10526,11 +10462,11 @@ static void atkEA_tryrecycleitem(void)
static void atkEB_settypetoterrain(void)
{
- if (gBattleMons[gBankAttacker].type1 != sTerrainToType[gBattleTerrain]
- && gBattleMons[gBankAttacker].type2 != sTerrainToType[gBattleTerrain])
+ if (gBattleMons[gBattlerAttacker].type1 != sTerrainToType[gBattleTerrain]
+ && gBattleMons[gBattlerAttacker].type2 != sTerrainToType[gBattleTerrain])
{
- gBattleMons[gBankAttacker].type1 = sTerrainToType[gBattleTerrain];
- gBattleMons[gBankAttacker].type2 = sTerrainToType[gBattleTerrain];
+ gBattleMons[gBattlerAttacker].type1 = sTerrainToType[gBattleTerrain];
+ gBattleMons[gBattlerAttacker].type2 = sTerrainToType[gBattleTerrain];
PREPARE_TYPE_BUFFER(gBattleTextBuff1, sTerrainToType[gBattleTerrain])
@@ -10544,19 +10480,19 @@ static void atkEB_settypetoterrain(void)
static void atkEC_pursuitrelated(void)
{
- gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
+ gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && !(gAbsentBankFlags & gBitTable[gActiveBank])
- && gActionForBanks[gActiveBank] == 0
- && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT)
+ && !(gAbsentBattlerFlags & gBitTable[gActiveBattler])
+ && gChosenActionByBattler[gActiveBattler] == 0
+ && gChosenMoveByBattler[gActiveBattler] == MOVE_PURSUIT)
{
- gActionsByTurnOrder[gActiveBank] = 11;
+ gActionsByTurnOrder[gActiveBattler] = 11;
gCurrentMove = MOVE_PURSUIT;
gBattlescriptCurrInstr += 5;
gBattleScripting.animTurn = 1;
- gBattleScripting.field_20 = gBankAttacker;
- gBankAttacker = gActiveBank;
+ gBattleScripting.field_20 = gBattlerAttacker;
+ gBattlerAttacker = gActiveBattler;
}
else
{
@@ -10566,25 +10502,25 @@ static void atkEC_pursuitrelated(void)
static void atkEF_snatchsetbanks(void)
{
- gEffectBank = gBankAttacker;
+ gEffectBattler = gBattlerAttacker;
- if (gBankAttacker == gBankTarget)
- gBankAttacker = gBankTarget = gBattleScripting.bank;
+ if (gBattlerAttacker == gBattlerTarget)
+ gBattlerAttacker = gBattlerTarget = gBattleScripting.battler;
else
- gBankTarget = gBattleScripting.bank;
+ gBattlerTarget = gBattleScripting.battler;
- gBattleScripting.bank = gEffectBank;
+ gBattleScripting.battler = gEffectBattler;
gBattlescriptCurrInstr++;
}
static void atkEE_removelightscreenreflect(void) // brick break
{
- u8 opposingSide = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ u8 opposingSide = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
if (gSideTimers[opposingSide].reflectTimer || gSideTimers[opposingSide].lightscreenTimer)
{
- gSideAffecting[opposingSide] &= ~(SIDE_STATUS_REFLECT);
- gSideAffecting[opposingSide] &= ~(SIDE_STATUS_LIGHTSCREEN);
+ gSideStatuses[opposingSide] &= ~(SIDE_STATUS_REFLECT);
+ gSideStatuses[opposingSide] &= ~(SIDE_STATUS_LIGHTSCREEN);
gSideTimers[opposingSide].reflectTimer = 0;
gSideTimers[opposingSide].lightscreenTimer = 0;
gBattleScripting.animTurn = 1;
@@ -10603,22 +10539,22 @@ static void atkEF_handleballthrow(void)
{
u8 ballMultiplier = 0;
- if (gBattleExecBuffer)
+ if (gBattleControllerExecFlags)
return;
- gActiveBank = gBankAttacker;
- gBankTarget = gBankAttacker ^ BIT_SIDE;
+ gActiveBattler = gBattlerAttacker;
+ gBattlerTarget = gBattlerAttacker ^ BIT_SIDE;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- EmitBallThrowAnim(0, BALL_TRAINER_BLOCK);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBallThrowAnim(0, BALL_TRAINER_BLOCK);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
{
- EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
}
else
@@ -10629,17 +10565,17 @@ static void atkEF_handleballthrow(void)
if (gLastUsedItem == ITEM_SAFARI_BALL)
catchRate = gBattleStruct->field_7C * 1275 / 100;
else
- catchRate = gBaseStats[gBattleMons[gBankTarget].species].catchRate;
+ catchRate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate;
if (gLastUsedItem > ITEM_SAFARI_BALL)
{
switch (gLastUsedItem)
{
case ITEM_NET_BALL:
- if (gBattleMons[gBankTarget].type1 == TYPE_WATER
- || gBattleMons[gBankTarget].type2 == TYPE_WATER
- || gBattleMons[gBankTarget].type1 == TYPE_BUG
- || gBattleMons[gBankTarget].type2 == TYPE_BUG)
+ if (gBattleMons[gBattlerTarget].type1 == TYPE_WATER
+ || gBattleMons[gBattlerTarget].type2 == TYPE_WATER
+ || gBattleMons[gBattlerTarget].type1 == TYPE_BUG
+ || gBattleMons[gBattlerTarget].type2 == TYPE_BUG)
ballMultiplier = 30;
else
ballMultiplier = 10;
@@ -10651,9 +10587,9 @@ static void atkEF_handleballthrow(void)
ballMultiplier = 10;
break;
case ITEM_NEST_BALL:
- if (gBattleMons[gBankTarget].level < 40)
+ if (gBattleMons[gBattlerTarget].level < 40)
{
- ballMultiplier = 40 - gBattleMons[gBankTarget].level;
+ ballMultiplier = 40 - gBattleMons[gBattlerTarget].level;
if (ballMultiplier <= 9)
ballMultiplier = 10;
}
@@ -10663,7 +10599,7 @@ static void atkEF_handleballthrow(void)
}
break;
case ITEM_REPEAT_BALL:
- if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), FLAG_GET_CAUGHT))
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBattlerTarget].species), FLAG_GET_CAUGHT))
ballMultiplier = 30;
else
ballMultiplier = 10;
@@ -10683,12 +10619,12 @@ static void atkEF_handleballthrow(void)
ballMultiplier = sBallCatchBonuses[gLastUsedItem - 2];
odds = (catchRate * ballMultiplier / 10)
- * (gBattleMons[gBankTarget].maxHP * 3 - gBattleMons[gBankTarget].hp * 2)
- / (3 * gBattleMons[gBankTarget].maxHP);
+ * (gBattleMons[gBattlerTarget].maxHP * 3 - gBattleMons[gBattlerTarget].hp * 2)
+ / (3 * gBattleMons[gBattlerTarget].maxHP);
- if (gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
+ if (gBattleMons[gBattlerTarget].status1 & (STATUS1_SLEEP | STATUS1_FREEZE))
odds *= 2;
- if (gBattleMons[gBankTarget].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
+ if (gBattleMons[gBattlerTarget].status1 & (STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON))
odds = (odds * 15) / 10;
if (gLastUsedItem != ITEM_SAFARI_BALL)
@@ -10706,10 +10642,10 @@ static void atkEF_handleballthrow(void)
if (odds > 254) // mon caught
{
- EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
- SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
if (CalculatePlayerPartyCount() == 6)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -10728,13 +10664,13 @@ static void atkEF_handleballthrow(void)
if (gLastUsedItem == ITEM_MASTER_BALL)
shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
- EmitBallThrowAnim(0, shakes);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitBallThrowAnim(0, shakes);
+ MarkBattlerForControllerExec(gActiveBattler);
if (shakes == BALL_3_SHAKES_SUCCESS) // mon caught, copy of the code above
{
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
- SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
if (CalculatePlayerPartyCount() == 6)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -10752,18 +10688,18 @@ static void atkEF_handleballthrow(void)
static void atkF0_givecaughtmon(void)
{
- if (GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY)
+ if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY)
{
if (!sub_813B21C())
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
- GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
}
else
{
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
- GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id()));
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
}
@@ -10772,9 +10708,9 @@ static void atkF0_givecaughtmon(void)
gBattleCommunication[MULTISTRING_CHOOSER]++;
}
- gBattleResults.caughtMonSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_SPECIES, NULL);
- GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick);
- gBattleResults.caughtMonBall = GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_POKEBALL, NULL);
+ gBattleResults.caughtMonSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_SPECIES, NULL);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick);
+ gBattleResults.caughtMonBall = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_POKEBALL, NULL);
gBattlescriptCurrInstr++;
}
@@ -10810,8 +10746,8 @@ static void atkF2_displaydexinfo(void)
{
FreeAllWindowBuffers();
gBattleCommunication[TASK_ID] = CreateDexDisplayMonDataTask(SpeciesToNationalPokedexNum(species),
- gBattleMons[gBankTarget].otId,
- gBattleMons[gBankTarget].personality);
+ gBattleMons[gBattlerTarget].otId,
+ gBattleMons[gBattlerTarget].personality);
gBattleCommunication[0]++;
}
break;
@@ -10962,13 +10898,13 @@ static void atkF3_trygivecaughtmonnick(void)
case 2:
if (!gPaletteFade.active)
{
- GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
FreeAllWindowBuffers();
DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick,
- GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_SPECIES),
- GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]),
- GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_PERSONALITY, NULL),
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_SPECIES),
+ GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]]),
+ GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_PERSONALITY, NULL),
BattleMainCB2);
gBattleCommunication[MULTIUSE_STATE]++;
@@ -10977,7 +10913,7 @@ static void atkF3_trygivecaughtmonnick(void)
case 3:
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active )
{
- SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
+ SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
break;
@@ -10992,32 +10928,32 @@ static void atkF3_trygivecaughtmonnick(void)
static void atkF4_subattackerhpbydmg(void)
{
- gBattleMons[gBankAttacker].hp -= gBattleMoveDamage;
+ gBattleMons[gBattlerAttacker].hp -= gBattleMoveDamage;
gBattlescriptCurrInstr++;
}
static void atkF5_removeattackerstatus1(void)
{
- gBattleMons[gBankAttacker].status1 = 0;
+ gBattleMons[gBattlerAttacker].status1 = 0;
gBattlescriptCurrInstr++;
}
static void atkF6_finishaction(void)
{
- gCurrentActionFuncId = ACTION_FINISHED;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
}
static void atkF7_finishturn(void)
{
- gCurrentActionFuncId = ACTION_FINISHED;
- gCurrentTurnActionNumber = gNoOfAllBanks;
+ gCurrentActionFuncId = B_ACTION_FINISHED;
+ gCurrentTurnActionNumber = gBattlersCount;
}
static void atkF8_trainerslideout(void)
{
- gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]);
- EmitTrainerSlideBack(0);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = GetBattlerAtPosition(gBattlescriptCurrInstr[1]);
+ BtlController_EmitTrainerSlideBack(0);
+ MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 6d7a97844..52ed99b21 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -30,6 +30,8 @@
#include "strings.h"
#include "secret_base.h"
#include "string_util.h"
+#include "overworld.h"
+#include "field_weather.h"
enum
{
@@ -59,14 +61,11 @@ extern void sub_81BE72C(void);
extern void FreezeMapObjects(void);
extern void sub_808BCF4(void);
extern void sub_80EECC8(void);
-extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
-extern void c2_exit_to_overworld_2_switch(void);
extern void Overworld_ClearSavedMusic(void);
extern void CB2_WhiteOut(void);
extern void sub_80AF6F0(void);
extern void PlayBattleBGM(void);
extern void sub_81DA57C(void);
-extern u8 GetSav1Weather(void);
extern u8 Overworld_GetFlashLevel(void);
extern u16 sub_81A9AA8(u8 localId);
extern u16 sub_81D6180(u8 localId);
@@ -82,12 +81,6 @@ extern void sub_81D61E8(void);
extern void sub_80982B8(void);
extern void sub_81A9EDC(u16 a0);
extern void sub_81D572C(u8 a0, u16 arg1);
-extern void IncrementGameStat(u8 statId);
-extern u32 GetGameStat(u8 statId);
-
-extern u32 gBattleTypeFlags;
-extern u8 gBattleOutcome;
-extern void (*gFieldCallback)(void);
// this file's functions
static void DoBattlePikeWildBattle(void);
@@ -990,14 +983,14 @@ static bool32 IsPlayerDefeated(u32 battleOutcome)
{
switch (battleOutcome)
{
- case BATTLE_LOST:
- case BATTLE_DREW:
+ case B_OUTCOME_LOST:
+ case B_OUTCOME_DREW:
return TRUE;
- case BATTLE_WON:
- case BATTLE_RAN:
- case BATTLE_PLAYER_TELEPORTED:
- case BATTLE_POKE_FLED:
- case BATTLE_CAUGHT:
+ case B_OUTCOME_WON:
+ case B_OUTCOME_RAN:
+ case B_OUTCOME_PLAYER_TELEPORTED:
+ case B_OUTCOME_MON_FLED:
+ case B_OUTCOME_CAUGHT:
return FALSE;
default:
return FALSE;
diff --git a/src/battle_transition.c b/src/battle_transition.c
index 0ff8cd903..e0d208f23 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -61,9 +61,7 @@ extern u16 gBattle_BG0_Y;
extern const struct OamData gFieldObjectBaseOam_32x32;
-extern void c2_exit_to_overworld_2_switch(void);
extern void sub_80AC3D0(void);
-extern void ScanlineEffect_Clear(void);
// this file's functions
static void LaunchBattleTransitionTask(u8 transitionId);
diff --git a/src/battle_util.c b/src/battle_util.c
index 2ce37cfbd..ddd61ae19 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "constants/battle_script_commands.h"
#include "constants/abilities.h"
#include "constants/moves.h"
#include "constants/hold_effects.h"
@@ -15,7 +16,7 @@
#include "text.h"
#include "string_util.h"
#include "battle_message.h"
-#include "battle_string_ids.h"
+#include "constants/battle_string_ids.h"
#include "battle_ai_script_commands.h"
#include "battle_controllers.h"
#include "event_data.h"
@@ -23,45 +24,6 @@
#include "link.h"
#include "berry.h"
-extern const u8* gBattlescriptCurrInstr;
-extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT];
-extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u8 gActiveBank;
-extern u8 gStringBank;
-extern u16 gCurrentMove;
-extern u16 gLastUsedItem;
-extern u8 gNoOfAllBanks;
-extern u32 gStatuses3[BATTLE_BANKS_COUNT];
-extern u8 gBankAttacker;
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern u16 gBattleWeather;
-extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT];
-extern u16 gSideAffecting[2];
-extern u8 gBattleCommunication[];
-extern void (*gBattleMainFunc)(void);
-extern s32 gBattleMoveDamage;
-extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
-extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
-extern u32 gBattleTypeFlags;
-extern u16 gLastMoves[BATTLE_BANKS_COUNT];
-extern u32 gHitMarker;
-extern u8 gEffectBank;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gBank1;
-extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
-extern u8 gBattleMoveFlags;
-extern s32 gTakenDmg[BATTLE_BANKS_COUNT];
-extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT];
-extern u8 gLastUsedAbility;
-extern u8 gCurrentActionFuncId;
-extern u32 gBattleExecBuffer;
-extern u16 gRandomMove;
-extern u8 gCurrMovePos;
-extern u8 gUnknown_020241E9;
-extern u8 gSentPokesToOpponent[2];
-
extern const struct BattleMove gBattleMoves[];
extern u8 weather_get_current(void);
@@ -73,173 +35,169 @@ static const u16 sSoundMovesTable[] =
MOVE_UPROAR, MOVE_METAL_SOUND, MOVE_GRASS_WHISTLE, MOVE_HYPER_VOICE, 0xFFFF
};
-u8 GetBattleBank(u8 caseId)
+u8 GetBattlerForBattleScript(u8 caseId)
{
u8 ret = 0;
switch (caseId)
{
- case BS_GET_TARGET:
- ret = gBankTarget;
+ case BS_TARGET:
+ ret = gBattlerTarget;
break;
- case BS_GET_ATTACKER:
- ret = gBankAttacker;
+ case BS_ATTACKER:
+ ret = gBattlerAttacker;
break;
- case BS_GET_EFFECT_BANK:
- ret = gEffectBank;
+ case BS_EFFECT_BATTLER:
+ ret = gEffectBattler;
break;
- case BS_GET_BANK_0:
+ case BS_BANK_0:
ret = 0;
break;
- case BS_GET_SCRIPTING_BANK:
- ret = gBattleScripting.bank;
+ case BS_SCRIPTING:
+ ret = gBattleScripting.battler;
break;
- case BS_GET_gBank1:
- ret = gBank1;
+ case BS_FAINTED:
+ ret = gBattlerFainted;
break;
case 5:
- ret = gBank1;
+ ret = gBattlerFainted;
break;
case 4:
case 6:
case 8:
case 9:
- case BS_GET_PLAYER1:
- ret = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ case BS_PLAYER1:
+ ret = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
break;
- case BS_GET_OPPONENT1:
- ret = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ case BS_OPPONENT1:
+ ret = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
break;
- case BS_GET_PLAYER2:
- ret = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ case BS_PLAYER2:
+ ret = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
break;
- case BS_GET_OPPONENT2:
- ret = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ case BS_OPPONENT2:
+ ret = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
break;
}
return ret;
}
-void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move)
+void PressurePPLose(u8 defender, u8 attacker, u16 move)
{
s32 i;
- if (gBattleMons[bankDef].ability != ABILITY_PRESSURE)
+ if (gBattleMons[defender].ability != ABILITY_PRESSURE)
return;
for (i = 0; i < 4; i++)
{
- if (gBattleMons[bankAtk].moves[i] == move)
+ if (gBattleMons[attacker].moves[i] == move)
break;
}
if (i == 4) // mons don't share any moves
return;
- if (gBattleMons[bankAtk].pp[i] != 0)
- gBattleMons[bankAtk].pp[i]--;
+ if (gBattleMons[attacker].pp[i] != 0)
+ gBattleMons[attacker].pp[i]--;
- if (!(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[bankAtk].unk18_b & gBitTable[i]))
+ if (!(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[attacker].unk18_b & gBitTable[i]))
{
- gActiveBank = bankAtk;
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = attacker;
+ BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
-void PressurePPLoseOnUsingImprision(u8 bankAtk)
+void PressurePPLoseOnUsingImprision(u8 attacker)
{
s32 i, j;
s32 imprisionPos = 4;
- u8 atkSide = GetBankSide(bankAtk);
+ u8 atkSide = GetBattlerSide(attacker);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (atkSide != GetBankSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE)
+ if (atkSide != GetBattlerSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE)
{
for (j = 0; j < 4; j++)
{
- if (gBattleMons[bankAtk].moves[j] == MOVE_IMPRISON)
+ if (gBattleMons[attacker].moves[j] == MOVE_IMPRISON)
break;
}
if (j != 4)
{
imprisionPos = j;
- if (gBattleMons[bankAtk].pp[j] != 0)
- gBattleMons[bankAtk].pp[j]--;
+ if (gBattleMons[attacker].pp[j] != 0)
+ gBattleMons[attacker].pp[j]--;
}
}
}
if (imprisionPos != 4
- && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[bankAtk].unk18_b & gBitTable[imprisionPos]))
+ && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[attacker].unk18_b & gBitTable[imprisionPos]))
{
- gActiveBank = bankAtk;
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBank].pp[imprisionPos]);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = attacker;
+ BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisionPos]);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
-void PressurePPLoseOnUsingPerishSong(u8 bankAtk)
+void PressurePPLoseOnUsingPerishSong(u8 attacker)
{
s32 i, j;
s32 perishSongPos = 4;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gBattleMons[i].ability == ABILITY_PRESSURE && i != bankAtk)
+ if (gBattleMons[i].ability == ABILITY_PRESSURE && i != attacker)
{
for (j = 0; j < 4; j++)
{
- if (gBattleMons[bankAtk].moves[j] == MOVE_PERISH_SONG)
+ if (gBattleMons[attacker].moves[j] == MOVE_PERISH_SONG)
break;
}
if (j != 4)
{
perishSongPos = j;
- if (gBattleMons[bankAtk].pp[j] != 0)
- gBattleMons[bankAtk].pp[j]--;
+ if (gBattleMons[attacker].pp[j] != 0)
+ gBattleMons[attacker].pp[j]--;
}
}
}
if (perishSongPos != 4
- && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[bankAtk].unk18_b & gBitTable[perishSongPos]))
+ && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[attacker].unk18_b & gBitTable[perishSongPos]))
{
- gActiveBank = bankAtk;
- EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBank].pp[perishSongPos]);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = attacker;
+ BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]);
+ MarkBattlerForControllerExec(gActiveBattler);
}
}
-void MarkAllBufferBanksForExecution(void) // unused
+void MarkAllBattlersForControllerExec(void) // unused
{
s32 i;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- for (i = 0; i < gNoOfAllBanks; i++)
- gBattleExecBuffer |= gBitTable[i] << 0x1C;
+ for (i = 0; i < gBattlersCount; i++)
+ gBattleControllerExecFlags |= gBitTable[i] << 0x1C;
}
else
{
- for (i = 0; i < gNoOfAllBanks; i++)
- gBattleExecBuffer |= gBitTable[i];
+ for (i = 0; i < gBattlersCount; i++)
+ gBattleControllerExecFlags |= gBitTable[i];
}
}
-void MarkBufferBankForExecution(u8 bank)
+void MarkBattlerForControllerExec(u8 battlerId)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- {
- gBattleExecBuffer |= gBitTable[bank] << 0x1C;
- }
+ gBattleControllerExecFlags |= gBitTable[battlerId] << 0x1C;
else
- {
- gBattleExecBuffer |= gBitTable[bank];
- }
+ gBattleControllerExecFlags |= gBitTable[battlerId];
}
void sub_803F850(u8 arg0)
@@ -247,45 +205,45 @@ void sub_803F850(u8 arg0)
s32 i;
for (i = 0; i < GetLinkPlayerCount(); i++)
- gBattleExecBuffer |= gBitTable[arg0] << (i << 2);
+ gBattleControllerExecFlags |= gBitTable[arg0] << (i << 2);
- gBattleExecBuffer &= ~(0x10000000 << arg0);
+ gBattleControllerExecFlags &= ~(0x10000000 << arg0);
}
-void CancelMultiTurnMoves(u8 bank)
+void CancelMultiTurnMoves(u8 battler)
{
- gBattleMons[bank].status2 &= ~(STATUS2_MULTIPLETURNS);
- gBattleMons[bank].status2 &= ~(STATUS2_LOCK_CONFUSE);
- gBattleMons[bank].status2 &= ~(STATUS2_UPROAR);
- gBattleMons[bank].status2 &= ~(STATUS2_BIDE);
+ gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS);
+ gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE);
+ gBattleMons[battler].status2 &= ~(STATUS2_UPROAR);
+ gBattleMons[battler].status2 &= ~(STATUS2_BIDE);
- gStatuses3[bank] &= ~(STATUS3_SEMI_INVULNERABLE);
+ gStatuses3[battler] &= ~(STATUS3_SEMI_INVULNERABLE);
- gDisableStructs[bank].rolloutCounter1 = 0;
- gDisableStructs[bank].furyCutterCounter = 0;
+ gDisableStructs[battler].rolloutCounter1 = 0;
+ gDisableStructs[battler].furyCutterCounter = 0;
}
-bool8 WasUnableToUseMove(u8 bank)
+bool8 WasUnableToUseMove(u8 battler)
{
- if (gProtectStructs[bank].prlzImmobility
- || gProtectStructs[bank].targetNotAffected
- || gProtectStructs[bank].usedImprisionedMove
- || gProtectStructs[bank].loveImmobility
- || gProtectStructs[bank].usedDisabledMove
- || gProtectStructs[bank].usedTauntedMove
- || gProtectStructs[bank].flag2Unknown
- || gProtectStructs[bank].flinchImmobility
- || gProtectStructs[bank].confusionSelfDmg)
+ if (gProtectStructs[battler].prlzImmobility
+ || gProtectStructs[battler].targetNotAffected
+ || gProtectStructs[battler].usedImprisionedMove
+ || gProtectStructs[battler].loveImmobility
+ || gProtectStructs[battler].usedDisabledMove
+ || gProtectStructs[battler].usedTauntedMove
+ || gProtectStructs[battler].flag2Unknown
+ || gProtectStructs[battler].flinchImmobility
+ || gProtectStructs[battler].confusionSelfDmg)
return TRUE;
else
return FALSE;
}
-void PrepareStringBattle(u16 stringId, u8 bank)
+void PrepareStringBattle(u16 stringId, u8 battler)
{
- gActiveBank = bank;
- EmitPrintString(0, stringId);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = battler;
+ BtlController_EmitPrintString(0, stringId);
+ MarkBattlerForControllerExec(gActiveBattler);
}
void ResetSentPokesToOpponentValue(void)
@@ -296,161 +254,161 @@ void ResetSentPokesToOpponentValue(void)
gSentPokesToOpponent[0] = 0;
gSentPokesToOpponent[1] = 0;
- for (i = 0; i < gNoOfAllBanks; i += 2)
- bits |= gBitTable[gBattlePartyID[i]];
+ for (i = 0; i < gBattlersCount; i += 2)
+ bits |= gBitTable[gBattlerPartyIndexes[i]];
- for (i = 1; i < gNoOfAllBanks; i += 2)
- gSentPokesToOpponent[(i & BIT_MON) >> 1] = bits;
+ for (i = 1; i < gBattlersCount; i += 2)
+ gSentPokesToOpponent[(i & BIT_FLANK) >> 1] = bits;
}
-void sub_803F9EC(u8 bank)
+void sub_803F9EC(u8 battler)
{
s32 i = 0;
u32 bits = 0;
- if (GetBankSide(bank) == SIDE_OPPONENT)
+ if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
- u8 id = ((bank & BIT_MON) >> 1);
- gSentPokesToOpponent[id] = 0;
+ u8 flank = ((battler & BIT_FLANK) >> 1);
+ gSentPokesToOpponent[flank] = 0;
- for (i = 0; i < gNoOfAllBanks; i += 2)
+ for (i = 0; i < gBattlersCount; i += 2)
{
- if (!(gAbsentBankFlags & gBitTable[i]))
- bits |= gBitTable[gBattlePartyID[i]];
+ if (!(gAbsentBattlerFlags & gBitTable[i]))
+ bits |= gBitTable[gBattlerPartyIndexes[i]];
}
- gSentPokesToOpponent[id] = bits;
+ gSentPokesToOpponent[flank] = bits;
}
}
-void sub_803FA70(u8 bank)
+void sub_803FA70(u8 battler)
{
- if (GetBankSide(bank) == SIDE_OPPONENT)
+ if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
- sub_803F9EC(bank);
+ sub_803F9EC(battler);
}
else
{
s32 i;
- for (i = 1; i < gNoOfAllBanks; i++)
- gSentPokesToOpponent[(i & BIT_MON) >> 1] |= gBitTable[gBattlePartyID[bank]];
+ for (i = 1; i < gBattlersCount; i++)
+ gSentPokesToOpponent[(i & BIT_FLANK) >> 1] |= gBitTable[gBattlerPartyIndexes[battler]];
}
}
void BattleScriptPush(const u8* bsPtr)
{
- BATTLESCRIPTS_STACK->ptr[BATTLESCRIPTS_STACK->size++] = bsPtr;
+ gBattleResources->battleScriptsStack->ptr[gBattleResources->battleScriptsStack->size++] = bsPtr;
}
void BattleScriptPushCursor(void)
{
- BATTLESCRIPTS_STACK->ptr[BATTLESCRIPTS_STACK->size++] = gBattlescriptCurrInstr;
+ gBattleResources->battleScriptsStack->ptr[gBattleResources->battleScriptsStack->size++] = gBattlescriptCurrInstr;
}
void BattleScriptPop(void)
{
- gBattlescriptCurrInstr = BATTLESCRIPTS_STACK->ptr[--BATTLESCRIPTS_STACK->size];
+ gBattlescriptCurrInstr = gBattleResources->battleScriptsStack->ptr[--gBattleResources->battleScriptsStack->size];
}
u8 TrySetCantSelectMoveBattleScript(void)
{
u8 limitations = 0;
- u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]];
+ u16 move = gBattleMons[gActiveBattler].moves[gBattleBufferB[gActiveBattler][2]];
u8 holdEffect;
- u16* choicedMove = &gBattleStruct->choicedMove[gActiveBank];
+ u16* choicedMove = &gBattleStruct->choicedMove[gActiveBattler];
- if (gDisableStructs[gActiveBank].disabledMove == move && move != 0)
+ if (gDisableStructs[gActiveBattler].disabledMove == move && move != 0)
{
- gBattleScripting.bank = gActiveBank;
+ gBattleScripting.battler = gActiveBattler;
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_SelectingDisabledMoveInPalace;
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingDisabledMoveInPalace;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
}
else
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingDisabledMove;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingDisabledMove;
limitations = 1;
}
}
- if (move == gLastMoves[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT))
+ if (move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT))
{
- CancelMultiTurnMoves(gActiveBank);
+ CancelMultiTurnMoves(gActiveBattler);
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_SelectingTormentedMoveInPalace;
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingTormentedMoveInPalace;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
}
else
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingTormentedMove;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingTormentedMove;
limitations++;
}
}
- if (gDisableStructs[gActiveBank].tauntTimer1 != 0 && gBattleMoves[move].power == 0)
+ if (gDisableStructs[gActiveBattler].tauntTimer1 != 0 && gBattleMoves[move].power == 0)
{
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveTauntInPalace;
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveTauntInPalace;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
}
else
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveTaunt;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveTaunt;
limitations++;
}
}
- if (GetImprisonedMovesCount(gActiveBank, move))
+ if (GetImprisonedMovesCount(gActiveBattler, move))
{
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_SelectingImprisionedMoveInPalace;
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMoveInPalace;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
}
else
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingImprisionedMove;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMove;
limitations++;
}
}
- if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY)
- holdEffect = gEnigmaBerries[gActiveBank].holdEffect;
+ if (gBattleMons[gActiveBattler].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[gActiveBattler].holdEffect;
else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item);
- gStringBank = gActiveBank;
+ gPotentialItemEffectBattler = gActiveBattler;
if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move)
{
gCurrentMove = *choicedMove;
- gLastUsedItem = gBattleMons[gActiveBank].item;
+ gLastUsedItem = gBattleMons[gActiveBattler].item;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
}
else
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveChoiceItem;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveChoiceItem;
limitations++;
}
}
- if (gBattleMons[gActiveBank].pp[gBattleBufferB[gActiveBank][2]] == 0)
+ if (gBattleMons[gActiveBattler].pp[gBattleBufferB[gActiveBattler][2]] == 0)
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gProtectStructs[gActiveBank].flag_x10 = 1;
+ gProtectStructs[gActiveBattler].flag_x10 = 1;
}
else
{
- gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingMoveWithNoPP;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingMoveWithNoPP;
limitations++;
}
}
@@ -458,36 +416,36 @@ u8 TrySetCantSelectMoveBattleScript(void)
return limitations;
}
-u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
+u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check)
{
u8 holdEffect;
- u16 *choicedMove = &gBattleStruct->choicedMove[bank];
+ u16 *choicedMove = &gBattleStruct->choicedMove[battlerId];
s32 i;
- if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
- holdEffect = gEnigmaBerries[bank].holdEffect;
+ if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[battlerId].holdEffect;
else
- holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item);
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item);
- gStringBank = bank;
+ gPotentialItemEffectBattler = battlerId;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE)
+ if (gBattleMons[battlerId].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE)
unusableMoves |= gBitTable[i];
- if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP)
+ if (gBattleMons[battlerId].pp[i] == 0 && check & MOVE_LIMITATION_PP)
unusableMoves |= gBitTable[i];
- if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED)
+ if (gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove && check & MOVE_LIMITATION_DISABLED)
unusableMoves |= gBitTable[i];
- if (gBattleMons[bank].moves[i] == gLastMoves[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT)
+ if (gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].status2 & STATUS2_TORMENT)
unusableMoves |= gBitTable[i];
- if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0)
+ if (gDisableStructs[battlerId].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0)
unusableMoves |= gBitTable[i];
- if (GetImprisonedMovesCount(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
+ if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
unusableMoves |= gBitTable[i];
- if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i])
+ if (gDisableStructs[battlerId].encoreTimer1 && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i])
unusableMoves |= gBitTable[i];
- if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i])
+ if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[battlerId].moves[i])
unusableMoves |= gBitTable[i];
}
return unusableMoves;
@@ -496,30 +454,30 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
bool8 AreAllMovesUnusable(void)
{
u8 unusable;
- unusable = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
if (unusable == 0xF) // all moves are unusable
{
- gProtectStructs[gActiveBank].onlyStruggle = 1;
- gSelectionBattleScripts[gActiveBank] = BattleScript_NoMovesLeft;
+ gProtectStructs[gActiveBattler].onlyStruggle = 1;
+ gSelectionBattleScripts[gActiveBattler] = BattleScript_NoMovesLeft;
}
else
{
- gProtectStructs[gActiveBank].onlyStruggle = 0;
+ gProtectStructs[gActiveBattler].onlyStruggle = 0;
}
return (unusable == 0xF);
}
-u8 GetImprisonedMovesCount(u8 bank, u16 move)
+u8 GetImprisonedMovesCount(u8 battlerId, u16 move)
{
s32 i;
u8 imprisionedMoves = 0;
- u8 bankSide = GetBankSide(bank);
+ u8 bankSide = GetBattlerSide(battlerId);
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS)
+ if (bankSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS)
{
s32 j;
for (j = 0; j < 4; j++)
@@ -540,10 +498,10 @@ u8 UpdateTurnCounters(void)
u8 effect = 0;
s32 i;
- for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankAttacker]; gBankAttacker++)
+ for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerAttacker]; gBattlerAttacker++)
{
}
- for (gBankTarget = 0; gBankTarget < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankTarget]; gBankTarget++)
+ for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerTarget]; gBattlerTarget++)
{
}
@@ -551,26 +509,26 @@ u8 UpdateTurnCounters(void)
{
u8 sideBank;
- switch (gBattleStruct->turncountersTracker)
+ switch (gBattleStruct->turnCountersTracker)
{
case 0:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- gBanksByTurnOrder[i] = i;
+ gBattleTurnOrder[i] = i;
}
- for (i = 0; i < gNoOfAllBanks - 1; i++)
+ for (i = 0; i < gBattlersCount - 1; i++)
{
s32 j;
- for (j = i + 1; j < gNoOfAllBanks; j++)
+ for (j = i + 1; j < gBattlersCount; j++)
{
- if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0))
+ if (GetWhoStrikesFirst(gBattleTurnOrder[i], gBattleTurnOrder[j], 0))
SwapTurnOrder(i, j);
}
}
// It's stupid, but won't match without it
{
- u8* var = &gBattleStruct->turncountersTracker;
+ u8* var = &gBattleStruct->turnCountersTracker;
(*var)++;
gBattleStruct->turnSideTracker = 0;
}
@@ -579,12 +537,12 @@ u8 UpdateTurnCounters(void)
while (gBattleStruct->turnSideTracker < 2)
{
sideBank = gBattleStruct->turnSideTracker;
- gActiveBank = gBankAttacker = gSideTimers[sideBank].reflectBank;
- if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT)
+ gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].reflectBattlerId;
+ if (gSideStatuses[sideBank] & SIDE_STATUS_REFLECT)
{
if (--gSideTimers[sideBank].reflectTimer == 0)
{
- gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT;
+ gSideStatuses[sideBank] &= ~SIDE_STATUS_REFLECT;
BattleScriptExecute(BattleScript_SideStatusWoreOff);
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT);
effect++;
@@ -596,7 +554,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
gBattleStruct->turnSideTracker = 0;
}
break;
@@ -604,12 +562,12 @@ u8 UpdateTurnCounters(void)
while (gBattleStruct->turnSideTracker < 2)
{
sideBank = gBattleStruct->turnSideTracker;
- gActiveBank = gBankAttacker = gSideTimers[sideBank].lightscreenBank;
- if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN)
+ gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].lightscreenBattlerId;
+ if (gSideStatuses[sideBank] & SIDE_STATUS_LIGHTSCREEN)
{
if (--gSideTimers[sideBank].lightscreenTimer == 0)
{
- gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN;
+ gSideStatuses[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN;
BattleScriptExecute(BattleScript_SideStatusWoreOff);
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN);
@@ -622,7 +580,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
gBattleStruct->turnSideTracker = 0;
}
break;
@@ -630,11 +588,11 @@ u8 UpdateTurnCounters(void)
while (gBattleStruct->turnSideTracker < 2)
{
sideBank = gBattleStruct->turnSideTracker;
- gActiveBank = gBankAttacker = gSideTimers[sideBank].mistBank;
+ gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].mistBattlerId;
if (gSideTimers[sideBank].mistTimer != 0
&& --gSideTimers[sideBank].mistTimer == 0)
{
- gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST;
+ gSideStatuses[sideBank] &= ~SIDE_STATUS_MIST;
BattleScriptExecute(BattleScript_SideStatusWoreOff);
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST);
@@ -646,7 +604,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
gBattleStruct->turnSideTracker = 0;
}
break;
@@ -654,12 +612,12 @@ u8 UpdateTurnCounters(void)
while (gBattleStruct->turnSideTracker < 2)
{
sideBank = gBattleStruct->turnSideTracker;
- gActiveBank = gBankAttacker = gSideTimers[sideBank].safeguardBank;
- if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD)
+ gActiveBattler = gBattlerAttacker = gSideTimers[sideBank].safeguardBattlerId;
+ if (gSideStatuses[sideBank] & SIDE_STATUS_SAFEGUARD)
{
if (--gSideTimers[sideBank].safeguardTimer == 0)
{
- gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD;
+ gSideStatuses[sideBank] &= ~SIDE_STATUS_SAFEGUARD;
BattleScriptExecute(BattleScript_SafeguardEnds);
effect++;
}
@@ -670,19 +628,19 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
gBattleStruct->turnSideTracker = 0;
}
break;
case 5:
- while (gBattleStruct->turnSideTracker < gNoOfAllBanks)
+ while (gBattleStruct->turnSideTracker < gBattlersCount)
{
- gActiveBank = gBanksByTurnOrder[gBattleStruct->turnSideTracker];
- if (gWishFutureKnock.wishCounter[gActiveBank] != 0
- && --gWishFutureKnock.wishCounter[gActiveBank] == 0
- && gBattleMons[gActiveBank].hp != 0)
+ gActiveBattler = gBattleTurnOrder[gBattleStruct->turnSideTracker];
+ if (gWishFutureKnock.wishCounter[gActiveBattler] != 0
+ && --gWishFutureKnock.wishCounter[gActiveBattler] == 0
+ && gBattleMons[gActiveBattler].hp != 0)
{
- gBankTarget = gActiveBank;
+ gBattlerTarget = gActiveBattler;
BattleScriptExecute(BattleScript_WishComesTrue);
effect++;
}
@@ -692,7 +650,7 @@ u8 UpdateTurnCounters(void)
}
if (!effect)
{
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
}
break;
case 6:
@@ -723,7 +681,7 @@ u8 UpdateTurnCounters(void)
BattleScriptExecute(BattleScript_RainContinuesOrEnds);
effect++;
}
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
break;
case 7:
if (gBattleWeather & WEATHER_SANDSTORM_ANY)
@@ -743,7 +701,7 @@ u8 UpdateTurnCounters(void)
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
break;
case 8:
if (gBattleWeather & WEATHER_SUN_ANY)
@@ -761,7 +719,7 @@ u8 UpdateTurnCounters(void)
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
break;
case 9:
if (gBattleWeather & WEATHER_HAIL)
@@ -781,7 +739,7 @@ u8 UpdateTurnCounters(void)
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
- gBattleStruct->turncountersTracker++;
+ gBattleStruct->turnCountersTracker++;
break;
case 10:
effect++;
@@ -798,23 +756,23 @@ u8 TurnBasedEffects(void)
u8 effect = 0;
gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
- while (gBattleStruct->turnEffectsBank < gNoOfAllBanks && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE)
+ while (gBattleStruct->turnEffectsBattlerId < gBattlersCount && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE)
{
- gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->turnEffectsBank];
- if (gAbsentBankFlags & gBitTable[gActiveBank])
+ gActiveBattler = gBattlerAttacker = gBattleTurnOrder[gBattleStruct->turnEffectsBattlerId];
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
{
- gBattleStruct->turnEffectsBank++;
+ gBattleStruct->turnEffectsBattlerId++;
}
else
{
switch (gBattleStruct->turnEffectsTracker)
{
case 0: // ingrain
- if ((gStatuses3[gActiveBank] & STATUS3_ROOTED)
- && gBattleMons[gActiveBank].hp != gBattleMons[gActiveBank].maxHP
- && gBattleMons[gActiveBank].hp != 0)
+ if ((gStatuses3[gActiveBattler] & STATUS3_ROOTED)
+ && gBattleMons[gActiveBattler].hp != gBattleMons[gActiveBattler].maxHP
+ && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
@@ -824,40 +782,40 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 1: // end turn abilities
- if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBank, 0, 0, 0))
+ if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBattler, 0, 0, 0))
effect++;
gBattleStruct->turnEffectsTracker++;
break;
case 2: // item effects
- if (ItemBattleEffects(1, gActiveBank, 0))
+ if (ItemBattleEffects(1, gActiveBattler, 0))
effect++;
gBattleStruct->turnEffectsTracker++;
break;
case 18: // item effects again
- if (ItemBattleEffects(1, gActiveBank, 1))
+ if (ItemBattleEffects(1, gActiveBattler, 1))
effect++;
gBattleStruct->turnEffectsTracker++;
break;
case 3: // leech seed
- if ((gStatuses3[gActiveBank] & STATUS3_LEECHSEED)
- && gBattleMons[gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK].hp != 0
- && gBattleMons[gActiveBank].hp != 0)
+ if ((gStatuses3[gActiveBattler] & STATUS3_LEECHSEED)
+ && gBattleMons[gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK].hp != 0
+ && gBattleMons[gActiveBattler].hp != 0)
{
- gBankTarget = gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ gBattlerTarget = gStatuses3[gActiveBattler] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the battlerId that receives HP
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- gBattleScripting.animArg1 = gBankTarget;
- gBattleScripting.animArg2 = gBankAttacker;
+ gBattleScripting.animArg1 = gBattlerTarget;
+ gBattleScripting.animArg2 = gBattlerAttacker;
BattleScriptExecute(BattleScript_LeechSeedTurnDrain);
effect++;
}
gBattleStruct->turnEffectsTracker++;
break;
case 4: // poison
- if ((gBattleMons[gActiveBank].status1 & STATUS_POISON) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status1 & STATUS1_POISON) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptExecute(BattleScript_PoisonTurnDmg);
@@ -866,23 +824,23 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 5: // toxic poison
- if ((gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) // not 16 turns
- gBattleMons[gActiveBank].status1 += 0x100;
- gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8;
+ if ((gBattleMons[gActiveBattler].status1 & 0xF00) != 0xF00) // not 16 turns
+ gBattleMons[gActiveBattler].status1 += 0x100;
+ gBattleMoveDamage *= (gBattleMons[gActiveBattler].status1 & 0xF00) >> 8;
BattleScriptExecute(BattleScript_PoisonTurnDmg);
effect++;
}
gBattleStruct->turnEffectsTracker++;
break;
case 6: // burn
- if ((gBattleMons[gActiveBank].status1 & STATUS_BURN) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status1 & STATUS1_BURN) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptExecute(BattleScript_BurnTurnDmg);
@@ -891,13 +849,13 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 7: // spooky nightmares
- if ((gBattleMons[gActiveBank].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0)
{
// R/S does not perform this sleep check, which causes the nighmare effect to
// persist even after the affected Pokemon has been awakened by Shed Skin
- if (gBattleMons[gActiveBank].status1 & STATUS_SLEEP)
+ if (gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptExecute(BattleScript_NightmareTurnDmg);
@@ -905,15 +863,15 @@ u8 TurnBasedEffects(void)
}
else
{
- gBattleMons[gActiveBank].status2 &= ~STATUS2_NIGHTMARE;
+ gBattleMons[gActiveBattler].status2 &= ~STATUS2_NIGHTMARE;
}
}
gBattleStruct->turnEffectsTracker++;
break;
case 8: // curse
- if ((gBattleMons[gActiveBank].status2 & STATUS2_CURSED) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status2 & STATUS2_CURSED) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptExecute(BattleScript_CurseTurnDmg);
@@ -922,21 +880,21 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 9: // wrap
- if ((gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBank].hp != 0)
+ if ((gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBattler].hp != 0)
{
- gBattleMons[gActiveBank].status2 -= 0x2000;
- if (gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) // damaged by wrap
+ gBattleMons[gActiveBattler].status2 -= 0x2000;
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) // damaged by wrap
{
// This is the only way I could get this array access to match.
- gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
- gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
+ gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0);
+ gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1);
gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
gBattleTextBuff1[1] = B_BUFF_MOVE;
- gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
- gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
+ gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0);
+ gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1);
gBattleTextBuff1[4] = EOS;
gBattlescriptCurrInstr = BattleScript_WrapTurnDmg;
- gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
}
@@ -944,8 +902,8 @@ u8 TurnBasedEffects(void)
{
gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
gBattleTextBuff1[1] = B_BUFF_MOVE;
- gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
- gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
+ gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0);
+ gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 1);
gBattleTextBuff1[4] = EOS;
gBattlescriptCurrInstr = BattleScript_WrapEnds;
}
@@ -955,46 +913,46 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 10: // uproar
- if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR)
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR)
{
- for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks; gBankAttacker++)
+ for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++)
{
- if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP)
- && gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF)
+ if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP)
+ && gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF)
{
- gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
BattleScriptExecute(BattleScript_MonWokeUpInUproar);
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
}
}
- if (gBankAttacker != gNoOfAllBanks)
+ if (gBattlerAttacker != gBattlersCount)
{
effect = 2; // a pokemon was awaken
break;
}
else
{
- gBankAttacker = gActiveBank;
- gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down
- if (WasUnableToUseMove(gActiveBank))
+ gBattlerAttacker = gActiveBattler;
+ gBattleMons[gActiveBattler].status2 -= 0x10; // uproar timer goes down
+ if (WasUnableToUseMove(gActiveBattler))
{
- CancelMultiTurnMoves(gActiveBank);
+ CancelMultiTurnMoves(gActiveBattler);
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
- else if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR)
+ else if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- gBattleMons[gActiveBank].status2 |= STATUS2_MULTIPLETURNS;
+ gBattleMons[gActiveBattler].status2 |= STATUS2_MULTIPLETURNS;
}
else
{
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- CancelMultiTurnMoves(gActiveBank);
+ CancelMultiTurnMoves(gActiveBattler);
}
BattleScriptExecute(BattleScript_PrintUproarOverTurns);
effect = 1;
@@ -1004,20 +962,20 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 11: // thrash
- if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE)
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE)
{
- gBattleMons[gActiveBank].status2 -= 0x400;
- if (WasUnableToUseMove(gActiveBank))
- CancelMultiTurnMoves(gActiveBank);
- else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE)
- && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS))
+ gBattleMons[gActiveBattler].status2 -= 0x400;
+ if (WasUnableToUseMove(gActiveBattler))
+ CancelMultiTurnMoves(gActiveBattler);
+ else if (!(gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE)
+ && (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS))
{
- gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS);
- if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION))
+ gBattleMons[gActiveBattler].status2 &= ~(STATUS2_MULTIPLETURNS);
+ if (!(gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION))
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER;
SetMoveEffect(1, 0);
- if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
BattleScriptExecute(BattleScript_ThrashConfuses);
effect++;
}
@@ -1026,22 +984,22 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 12: // disable
- if (gDisableStructs[gActiveBank].disableTimer1 != 0)
+ if (gDisableStructs[gActiveBattler].disableTimer1 != 0)
{
int i;
for (i = 0; i < 4; i++)
{
- if (gDisableStructs[gActiveBank].disabledMove == gBattleMons[gActiveBank].moves[i])
+ if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i])
break;
}
if (i == 4) // pokemon does not have the disabled move anymore
{
- gDisableStructs[gActiveBank].disabledMove = 0;
- gDisableStructs[gActiveBank].disableTimer1 = 0;
+ gDisableStructs[gActiveBattler].disabledMove = 0;
+ gDisableStructs[gActiveBattler].disableTimer1 = 0;
}
- else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends
+ else if (--gDisableStructs[gActiveBattler].disableTimer1 == 0) // disable ends
{
- gDisableStructs[gActiveBank].disabledMove = 0;
+ gDisableStructs[gActiveBattler].disabledMove = 0;
BattleScriptExecute(BattleScript_DisabledNoMore);
effect++;
}
@@ -1049,18 +1007,18 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 13: // encore
- if (gDisableStructs[gActiveBank].encoreTimer1 != 0)
+ if (gDisableStructs[gActiveBattler].encoreTimer1 != 0)
{
- if (gBattleMons[gActiveBank].moves[gDisableStructs[gActiveBank].encoredMovePos] != gDisableStructs[gActiveBank].encoredMove) // pokemon does not have the encored move anymore
+ if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // pokemon does not have the encored move anymore
{
- gDisableStructs[gActiveBank].encoredMove = 0;
- gDisableStructs[gActiveBank].encoreTimer1 = 0;
+ gDisableStructs[gActiveBattler].encoredMove = 0;
+ gDisableStructs[gActiveBattler].encoreTimer1 = 0;
}
- else if (--gDisableStructs[gActiveBank].encoreTimer1 == 0
- || gBattleMons[gActiveBank].pp[gDisableStructs[gActiveBank].encoredMovePos] == 0)
+ else if (--gDisableStructs[gActiveBattler].encoreTimer1 == 0
+ || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0)
{
- gDisableStructs[gActiveBank].encoredMove = 0;
- gDisableStructs[gActiveBank].encoreTimer1 = 0;
+ gDisableStructs[gActiveBattler].encoredMove = 0;
+ gDisableStructs[gActiveBattler].encoreTimer1 = 0;
BattleScriptExecute(BattleScript_EncoredNoMore);
effect++;
}
@@ -1068,33 +1026,33 @@ u8 TurnBasedEffects(void)
gBattleStruct->turnEffectsTracker++;
break;
case 14: // lock-on decrement
- if (gStatuses3[gActiveBank] & STATUS3_ALWAYS_HITS)
- gStatuses3[gActiveBank] -= 0x8;
+ if (gStatuses3[gActiveBattler] & STATUS3_ALWAYS_HITS)
+ gStatuses3[gActiveBattler] -= 0x8;
gBattleStruct->turnEffectsTracker++;
break;
case 15: // charge
- if (gDisableStructs[gActiveBank].chargeTimer1 && --gDisableStructs[gActiveBank].chargeTimer1 == 0)
- gStatuses3[gActiveBank] &= ~STATUS3_CHARGED_UP;
+ if (gDisableStructs[gActiveBattler].chargeTimer1 && --gDisableStructs[gActiveBattler].chargeTimer1 == 0)
+ gStatuses3[gActiveBattler] &= ~STATUS3_CHARGED_UP;
gBattleStruct->turnEffectsTracker++;
break;
case 16: // taunt
- if (gDisableStructs[gActiveBank].tauntTimer1)
- gDisableStructs[gActiveBank].tauntTimer1--;
+ if (gDisableStructs[gActiveBattler].tauntTimer1)
+ gDisableStructs[gActiveBattler].tauntTimer1--;
gBattleStruct->turnEffectsTracker++;
break;
case 17: // yawn
- if (gStatuses3[gActiveBank] & STATUS3_YAWN)
- {
- gStatuses3[gActiveBank] -= 0x800;
- if (!(gStatuses3[gActiveBank] & STATUS3_YAWN) && !(gBattleMons[gActiveBank].status1 & STATUS_ANY)
- && gBattleMons[gActiveBank].ability != ABILITY_VITAL_SPIRIT
- && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBank))
- {
- CancelMultiTurnMoves(gActiveBank);
- gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
- gEffectBank = gActiveBank;
+ if (gStatuses3[gActiveBattler] & STATUS3_YAWN)
+ {
+ gStatuses3[gActiveBattler] -= 0x800;
+ if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS1_ANY)
+ && gBattleMons[gActiveBattler].ability != ABILITY_VITAL_SPIRIT
+ && gBattleMons[gActiveBattler].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBattler))
+ {
+ CancelMultiTurnMoves(gActiveBattler);
+ gBattleMons[gActiveBattler].status1 |= (Random() & 3) + 2;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
+ gEffectBattler = gActiveBattler;
BattleScriptExecute(BattleScript_YawnMakesAsleep);
effect++;
}
@@ -1103,7 +1061,7 @@ u8 TurnBasedEffects(void)
break;
case 19: // done
gBattleStruct->turnEffectsTracker = 0;
- gBattleStruct->turnEffectsBank++;
+ gBattleStruct->turnEffectsBattlerId++;
break;
}
if (effect != 0)
@@ -1121,37 +1079,37 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
switch (gBattleStruct->wishPerishSongState)
{
case 0:
- while (gBattleStruct->wishPerishSongBank < gNoOfAllBanks)
+ while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount)
{
- gActiveBank = gBattleStruct->wishPerishSongBank;
- if (gAbsentBankFlags & gBitTable[gActiveBank])
+ gActiveBattler = gBattleStruct->wishPerishSongBattlerId;
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
{
- gBattleStruct->wishPerishSongBank++;
+ gBattleStruct->wishPerishSongBattlerId++;
continue;
}
- gBattleStruct->wishPerishSongBank++;
- if (gWishFutureKnock.futureSightCounter[gActiveBank] != 0
- && --gWishFutureKnock.futureSightCounter[gActiveBank] == 0
- && gBattleMons[gActiveBank].hp != 0)
+ gBattleStruct->wishPerishSongBattlerId++;
+ if (gWishFutureKnock.futureSightCounter[gActiveBattler] != 0
+ && --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0
+ && gBattleMons[gActiveBattler].hp != 0)
{
- if (gWishFutureKnock.futureSightMove[gActiveBank] == MOVE_FUTURE_SIGHT)
+ if (gWishFutureKnock.futureSightMove[gActiveBattler] == MOVE_FUTURE_SIGHT)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBank]);
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBattler]);
- gBankTarget = gActiveBank;
- gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank];
- gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank];
- gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
+ gBattlerTarget = gActiveBattler;
+ gBattlerAttacker = gWishFutureKnock.futureSightAttacker[gActiveBattler];
+ gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBattler];
+ gSpecialStatuses[gBattlerTarget].dmg = 0xFFFF;
BattleScriptExecute(BattleScript_MonTookFutureAttack);
- if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0
- && gWishFutureKnock.futureSightCounter[gActiveBank ^ BIT_MON] == 0)
+ if (gWishFutureKnock.futureSightCounter[gActiveBattler] == 0
+ && gWishFutureKnock.futureSightCounter[gActiveBattler ^ BIT_FLANK] == 0)
{
- gSideAffecting[GET_BANK_SIDE(gBankTarget)] &= ~(SIDE_STATUS_FUTUREATTACK);
+ gSideStatuses[GET_BATTLER_SIDE(gBattlerTarget)] &= ~(SIDE_STATUS_FUTUREATTACK);
}
return TRUE;
}
@@ -1160,31 +1118,31 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
{
u8 *state = &gBattleStruct->wishPerishSongState;
*state = 1;
- gBattleStruct->wishPerishSongBank = 0;
+ gBattleStruct->wishPerishSongBattlerId = 0;
}
// fall through
case 1:
- while (gBattleStruct->wishPerishSongBank < gNoOfAllBanks)
+ while (gBattleStruct->wishPerishSongBattlerId < gBattlersCount)
{
- gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->wishPerishSongBank];
- if (gAbsentBankFlags & gBitTable[gActiveBank])
+ gActiveBattler = gBattlerAttacker = gBattleTurnOrder[gBattleStruct->wishPerishSongBattlerId];
+ if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
{
- gBattleStruct->wishPerishSongBank++;
+ gBattleStruct->wishPerishSongBattlerId++;
continue;
}
- gBattleStruct->wishPerishSongBank++;
- if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG)
+ gBattleStruct->wishPerishSongBattlerId++;
+ if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG)
{
- PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBank].perishSongTimer1);
- if (gDisableStructs[gActiveBank].perishSongTimer1 == 0)
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBattler].perishSongTimer1);
+ if (gDisableStructs[gActiveBattler].perishSongTimer1 == 0)
{
- gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG;
- gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ gStatuses3[gActiveBattler] &= ~STATUS3_PERISH_SONG;
+ gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
gBattlescriptCurrInstr = BattleScript_PerishSongTakesLife;
}
else
{
- gDisableStructs[gActiveBank].perishSongTimer1--;
+ gDisableStructs[gActiveBattler].perishSongTimer1--;
gBattlescriptCurrInstr = BattleScript_PerishSongCountGoesDown;
}
BattleScriptExecute(gBattlescriptCurrInstr);
@@ -1195,7 +1153,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void)
{
u8 *state = &gBattleStruct->wishPerishSongState;
*state = 2;
- gBattleStruct->wishPerishSongBank = 0;
+ gBattleStruct->wishPerishSongBattlerId = 0;
}
// fall through
case 2:
@@ -1233,56 +1191,56 @@ bool8 HandleFaintedMonActions(void)
switch (gBattleStruct->faintedActionsState)
{
case 0:
- gBattleStruct->faintedActionsBank = 0;
+ gBattleStruct->faintedActionsBattlerId = 0;
gBattleStruct->faintedActionsState++;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gAbsentBankFlags & gBitTable[i] && !sub_80423F4(i, 6, 6))
- gAbsentBankFlags &= ~(gBitTable[i]);
+ if (gAbsentBattlerFlags & gBitTable[i] && !sub_80423F4(i, 6, 6))
+ gAbsentBattlerFlags &= ~(gBitTable[i]);
}
// fall through
case 1:
do
{
- gBank1 = gBankTarget = gBattleStruct->faintedActionsBank;
- if (gBattleMons[gBattleStruct->faintedActionsBank].hp == 0
- && !(gBattleStruct->field_DF & gBitTable[gBattlePartyID[gBattleStruct->faintedActionsBank]])
- && !(gAbsentBankFlags & gBitTable[gBattleStruct->faintedActionsBank]))
+ gBattlerFainted = gBattlerTarget = gBattleStruct->faintedActionsBattlerId;
+ if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0
+ && !(gBattleStruct->field_DF & gBitTable[gBattlerPartyIndexes[gBattleStruct->faintedActionsBattlerId]])
+ && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId]))
{
BattleScriptExecute(BattleScript_GiveExp);
gBattleStruct->faintedActionsState = 2;
return TRUE;
}
- } while (++gBattleStruct->faintedActionsBank != gNoOfAllBanks);
+ } while (++gBattleStruct->faintedActionsBattlerId != gBattlersCount);
gBattleStruct->faintedActionsState = 3;
break;
case 2:
- sub_803F9EC(gBank1);
- if (++gBattleStruct->faintedActionsBank == gNoOfAllBanks)
+ sub_803F9EC(gBattlerFainted);
+ if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount)
gBattleStruct->faintedActionsState = 3;
else
gBattleStruct->faintedActionsState = 1;
break;
case 3:
- gBattleStruct->faintedActionsBank = 0;
+ gBattleStruct->faintedActionsBattlerId = 0;
gBattleStruct->faintedActionsState++;
// fall through
case 4:
do
{
- gBank1 = gBankTarget = gBattleStruct->faintedActionsBank;
- if (gBattleMons[gBattleStruct->faintedActionsBank].hp == 0
- && !(gAbsentBankFlags & gBitTable[gBattleStruct->faintedActionsBank]))
+ gBattlerFainted = gBattlerTarget = gBattleStruct->faintedActionsBattlerId;
+ if (gBattleMons[gBattleStruct->faintedActionsBattlerId].hp == 0
+ && !(gAbsentBattlerFlags & gBitTable[gBattleStruct->faintedActionsBattlerId]))
{
BattleScriptExecute(BattleScript_HandleFaintedMon);
gBattleStruct->faintedActionsState = 5;
return TRUE;
}
- } while (++gBattleStruct->faintedActionsBank != gNoOfAllBanks);
+ } while (++gBattleStruct->faintedActionsBattlerId != gBattlersCount);
gBattleStruct->faintedActionsState = 6;
break;
case 5:
- if (++gBattleStruct->faintedActionsBank == gNoOfAllBanks)
+ if (++gBattleStruct->faintedActionsBattlerId == gBattlersCount)
gBattleStruct->faintedActionsState = 6;
else
gBattleStruct->faintedActionsState = 4;
@@ -1302,9 +1260,9 @@ bool8 HandleFaintedMonActions(void)
void TryClearRageStatuses(void)
{
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if ((gBattleMons[i].status2 & STATUS2_RAGE) && gChosenMovesByBanks[i] != MOVE_RAGE)
+ if ((gBattleMons[i].status2 & STATUS2_RAGE) && gChosenMoveByBattler[i] != MOVE_RAGE)
gBattleMons[i].status2 &= ~(STATUS2_RAGE);
}
}
@@ -1320,17 +1278,17 @@ u8 AtkCanceller_UnableToUseMove(void)
switch (gBattleStruct->atkCancellerTracker)
{
case 0: // flags clear
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_DESTINY_BOND);
- gStatuses3[gBankAttacker] &= ~(STATUS3_GRUDGE);
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_DESTINY_BOND);
+ gStatuses3[gBattlerAttacker] &= ~(STATUS3_GRUDGE);
gBattleStruct->atkCancellerTracker++;
break;
case 1: // check being asleep
- if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP)
+ if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP)
{
- if (UproarWakeUpCheck(gBankAttacker))
+ if (UproarWakeUpCheck(gBattlerAttacker))
{
- gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
@@ -1339,15 +1297,15 @@ u8 AtkCanceller_UnableToUseMove(void)
else
{
u8 toSub;
- if (gBattleMons[gBankAttacker].ability == ABILITY_EARLY_BIRD)
+ if (gBattleMons[gBattlerAttacker].ability == ABILITY_EARLY_BIRD)
toSub = 2;
else
toSub = 1;
- if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) < toSub)
- gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
+ if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) < toSub)
+ gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP);
else
- gBattleMons[gBankAttacker].status1 -= toSub;
- if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP)
+ gBattleMons[gBattlerAttacker].status1 -= toSub;
+ if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP)
{
if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK)
{
@@ -1358,7 +1316,7 @@ u8 AtkCanceller_UnableToUseMove(void)
}
else
{
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
@@ -1369,7 +1327,7 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 2: // check being frozen
- if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE)
+ if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE)
{
if (Random() % 5)
{
@@ -1386,7 +1344,7 @@ u8 AtkCanceller_UnableToUseMove(void)
}
else // unfreeze
{
- gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE);
+ gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -1396,23 +1354,23 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 3: // truant
- if (gBattleMons[gBankAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBankAttacker].truantCounter)
+ if (gBattleMons[gBattlerAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBattlerAttacker].truantCounter)
{
- CancelMultiTurnMoves(gBankAttacker);
+ CancelMultiTurnMoves(gBattlerAttacker);
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
- gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveResultFlags |= MOVE_RESULT_MISSED;
effect = 1;
}
gBattleStruct->atkCancellerTracker++;
break;
case 4: // recharge
- if (gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE)
{
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RECHARGE);
- gDisableStructs[gBankAttacker].rechargeCounter = 0;
- CancelMultiTurnMoves(gBankAttacker);
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RECHARGE);
+ gDisableStructs[gBattlerAttacker].rechargeCounter = 0;
+ CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
effect = 1;
@@ -1420,11 +1378,11 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 5: // flinch
- if (gBattleMons[gBankAttacker].status2 & STATUS2_FLINCHED)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FLINCHED)
{
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_FLINCHED);
- gProtectStructs[gBankAttacker].flinchImmobility = 1;
- CancelMultiTurnMoves(gBankAttacker);
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_FLINCHED);
+ gProtectStructs[gBattlerAttacker].flinchImmobility = 1;
+ CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
effect = 1;
@@ -1432,11 +1390,11 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 6: // disabled move
- if (gDisableStructs[gBankAttacker].disabledMove == gCurrentMove && gDisableStructs[gBankAttacker].disabledMove != 0)
+ if (gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != 0)
{
- gProtectStructs[gBankAttacker].usedDisabledMove = 1;
- gBattleScripting.bank = gBankAttacker;
- CancelMultiTurnMoves(gBankAttacker);
+ gProtectStructs[gBattlerAttacker].usedDisabledMove = 1;
+ gBattleScripting.battler = gBattlerAttacker;
+ CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
effect = 1;
@@ -1444,10 +1402,10 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 7: // taunt
- if (gDisableStructs[gBankAttacker].tauntTimer1 && gBattleMoves[gCurrentMove].power == 0)
+ if (gDisableStructs[gBattlerAttacker].tauntTimer1 && gBattleMoves[gCurrentMove].power == 0)
{
- gProtectStructs[gBankAttacker].usedTauntedMove = 1;
- CancelMultiTurnMoves(gBankAttacker);
+ gProtectStructs[gBattlerAttacker].usedTauntedMove = 1;
+ CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
effect = 1;
@@ -1455,10 +1413,10 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 8: // imprisoned
- if (GetImprisonedMovesCount(gBankAttacker, gCurrentMove))
+ if (GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove))
{
- gProtectStructs[gBankAttacker].usedImprisionedMove = 1;
- CancelMultiTurnMoves(gBankAttacker);
+ gProtectStructs[gBattlerAttacker].usedImprisionedMove = 1;
+ CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
effect = 1;
@@ -1466,10 +1424,10 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 9: // confusion
- if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION)
{
- gBattleMons[gBankAttacker].status2--;
- if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION)
+ gBattleMons[gBattlerAttacker].status2--;
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION)
{
if (Random() & 1)
{
@@ -1479,9 +1437,9 @@ u8 AtkCanceller_UnableToUseMove(void)
else // confusion dmg
{
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- gBankTarget = gBankAttacker;
- gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker);
- gProtectStructs[gBankAttacker].confusionSelfDmg = 1;
+ gBattlerTarget = gBattlerAttacker;
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerAttacker], MOVE_POUND, 0, 40, 0, gBattlerAttacker, gBattlerAttacker);
+ gProtectStructs[gBattlerAttacker].confusionSelfDmg = 1;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
}
gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused;
@@ -1496,11 +1454,11 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 10: // paralysis
- if ((gBattleMons[gBankAttacker].status1 & STATUS_PARALYSIS) && (Random() % 4) == 0)
+ if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && (Random() % 4) == 0)
{
- gProtectStructs[gBankAttacker].prlzImmobility = 1;
+ gProtectStructs[gBattlerAttacker].prlzImmobility = 1;
// This is removed in Emerald for some reason
- //CancelMultiTurnMoves(gBankAttacker);
+ //CancelMultiTurnMoves(gBattlerAttacker);
gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
effect = 1;
@@ -1508,17 +1466,17 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 11: // infatuation
- if (gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION)
{
- gBattleScripting.bank = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10);
+ gBattleScripting.battler = CountTrailingZeroBits((gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) >> 0x10);
if (Random() & 1)
BattleScriptPushCursor();
else
{
BattleScriptPush(BattleScript_MoveUsedIsParalyzedCantAttack);
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
- gProtectStructs[gBankAttacker].loveImmobility = 1;
- CancelMultiTurnMoves(gBankAttacker);
+ gProtectStructs[gBattlerAttacker].loveImmobility = 1;
+ CancelMultiTurnMoves(gBattlerAttacker);
}
gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove;
effect = 1;
@@ -1526,22 +1484,22 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 12: // bide
- if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_BIDE)
{
- gBattleMons[gBankAttacker].status2 -= 0x100;
- if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE)
+ gBattleMons[gBattlerAttacker].status2 -= 0x100;
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_BIDE)
gBattlescriptCurrInstr = BattleScript_BideStoringEnergy;
else
{
// This is removed in Emerald for some reason
- //gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
- if (gTakenDmg[gBankAttacker])
+ //gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
+ if (gTakenDmg[gBattlerAttacker])
{
gCurrentMove = MOVE_BIDE;
- *bideDmg = gTakenDmg[gBankAttacker] * 2;
- gBankTarget = gTakenDmgBanks[gBankAttacker];
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetMoveTarget(MOVE_BIDE, 1);
+ *bideDmg = gTakenDmg[gBattlerAttacker] * 2;
+ gBattlerTarget = gTakenDmgByBattler[gBattlerAttacker];
+ if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
+ gBattlerTarget = GetMoveTarget(MOVE_BIDE, 1);
gBattlescriptCurrInstr = BattleScript_BideAttack;
}
else
@@ -1552,11 +1510,11 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 13: // move thawing
- if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE)
+ if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE)
{
if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT)
{
- gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE);
+ gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -1573,14 +1531,14 @@ u8 AtkCanceller_UnableToUseMove(void)
if (effect == 2)
{
- gActiveBank = gBankAttacker;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = gBattlerAttacker;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
}
return effect;
}
-bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
+bool8 sub_80423F4(u8 battler, u8 r1, u8 r2)
{
struct Pokemon* party;
u8 r7;
@@ -1590,11 +1548,11 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
- r6 = ((bank & 2) / 2);
+ r6 = ((battler & 2) / 2);
for (i = r6 * 3; i < r6 * 3 + 3; i++)
{
if (GetMonData(&party[i], MON_DATA_HP) != 0
@@ -1608,10 +1566,10 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
{
if (gBattleTypeFlags & BATTLE_TYPE_x800000)
{
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
party = gPlayerParty;
- r7 = GetBankMultiplayerId(bank);
+ r7 = GetBattlerMultiplayerId(battler);
r6 = sub_806D82C(r7);
}
else
@@ -1624,14 +1582,14 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
#endif // NONMATCHING
party = gEnemyParty;
- var = bank ^ 1;
+ var = battler ^ 1;
r6 = (var != 0) ? 1 : 0;
}
}
else
{
- r7 = GetBankMultiplayerId(bank);
- if (GetBankSide(bank) == SIDE_PLAYER)
+ r7 = GetBattlerMultiplayerId(battler);
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -1646,11 +1604,11 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
}
return (i == r6 * 3 + 3);
}
- else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && GetBankSide(bank) == SIDE_OPPONENT)
+ else if ((gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
party = gEnemyParty;
- if (bank == 1)
+ if (battler == 1)
r6 = 0;
else
r6 = 3;
@@ -1665,22 +1623,22 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
}
else
{
- if (GetBankSide(bank) == SIDE_OPPONENT)
+ if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
{
- r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- r6 = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ r7 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ r6 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
party = gEnemyParty;
}
else
{
- r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
- r6 = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ r7 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ r6 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
party = gPlayerParty;
}
if (r1 == 6)
- r1 = gBattlePartyID[r7];
+ r1 = gBattlerPartyIndexes[r7];
if (r2 == 6)
- r2 = gBattlePartyID[r6];
+ r2 = gBattlerPartyIndexes[r6];
for (i = 0; i < 6; i++)
{
if (GetMonData(&party[i], MON_DATA_HP) != 0
@@ -1703,48 +1661,48 @@ enum
CASTFORM_TO_ICE, //4
};
-u8 CastformDataTypeChange(u8 bank)
+u8 CastformDataTypeChange(u8 battler)
{
u8 formChange = 0;
- if (gBattleMons[bank].species != SPECIES_CASTFORM || gBattleMons[bank].ability != ABILITY_FORECAST || gBattleMons[bank].hp == 0)
+ if (gBattleMons[battler].species != SPECIES_CASTFORM || gBattleMons[battler].ability != ABILITY_FORECAST || gBattleMons[battler].hp == 0)
return CASTFORM_NO_CHANGE;
- if (!WEATHER_HAS_EFFECT && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL)
+ if (!WEATHER_HAS_EFFECT && gBattleMons[battler].type1 != TYPE_NORMAL && gBattleMons[battler].type2 != TYPE_NORMAL)
{
- gBattleMons[bank].type1 = TYPE_NORMAL;
- gBattleMons[bank].type2 = TYPE_NORMAL;
+ gBattleMons[battler].type1 = TYPE_NORMAL;
+ gBattleMons[battler].type2 = TYPE_NORMAL;
return CASTFORM_TO_NORMAL;
}
if (!WEATHER_HAS_EFFECT)
return CASTFORM_NO_CHANGE;
- if (!(gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SUN_ANY | WEATHER_HAIL)) && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL)
+ if (!(gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SUN_ANY | WEATHER_HAIL)) && gBattleMons[battler].type1 != TYPE_NORMAL && gBattleMons[battler].type2 != TYPE_NORMAL)
{
- gBattleMons[bank].type1 = TYPE_NORMAL;
- gBattleMons[bank].type2 = TYPE_NORMAL;
+ gBattleMons[battler].type1 = TYPE_NORMAL;
+ gBattleMons[battler].type2 = TYPE_NORMAL;
formChange = CASTFORM_TO_NORMAL;
}
- if (gBattleWeather & WEATHER_SUN_ANY && gBattleMons[bank].type1 != TYPE_FIRE && gBattleMons[bank].type2 != TYPE_FIRE)
+ if (gBattleWeather & WEATHER_SUN_ANY && gBattleMons[battler].type1 != TYPE_FIRE && gBattleMons[battler].type2 != TYPE_FIRE)
{
- gBattleMons[bank].type1 = TYPE_FIRE;
- gBattleMons[bank].type2 = TYPE_FIRE;
+ gBattleMons[battler].type1 = TYPE_FIRE;
+ gBattleMons[battler].type2 = TYPE_FIRE;
formChange = CASTFORM_TO_FIRE;
}
- if (gBattleWeather & WEATHER_RAIN_ANY && gBattleMons[bank].type1 != TYPE_WATER && gBattleMons[bank].type2 != TYPE_WATER)
+ if (gBattleWeather & WEATHER_RAIN_ANY && gBattleMons[battler].type1 != TYPE_WATER && gBattleMons[battler].type2 != TYPE_WATER)
{
- gBattleMons[bank].type1 = TYPE_WATER;
- gBattleMons[bank].type2 = TYPE_WATER;
+ gBattleMons[battler].type1 = TYPE_WATER;
+ gBattleMons[battler].type2 = TYPE_WATER;
formChange = CASTFORM_TO_WATER;
}
- if (gBattleWeather & WEATHER_HAIL && gBattleMons[bank].type1 != TYPE_ICE && gBattleMons[bank].type2 != TYPE_ICE)
+ if (gBattleWeather & WEATHER_HAIL && gBattleMons[battler].type1 != TYPE_ICE && gBattleMons[battler].type2 != TYPE_ICE)
{
- gBattleMons[bank].type1 = TYPE_ICE;
- gBattleMons[bank].type2 = TYPE_ICE;
+ gBattleMons[battler].type1 = TYPE_ICE;
+ gBattleMons[battler].type2 = TYPE_ICE;
formChange = CASTFORM_TO_ICE;
}
return formChange;
}
// The largest function in the game, but even it could not save itself from decompiling.
-u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
+u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveArg)
{
u8 effect = 0;
struct Pokemon *pokeAtk;
@@ -1754,19 +1712,19 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
u32 pidAtk;
u32 pidDef;
- if (gBankAttacker >= gNoOfAllBanks)
- gBankAttacker = bank;
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
- pokeAtk = &gPlayerParty[gBattlePartyID[gBankAttacker]];
+ if (gBattlerAttacker >= gBattlersCount)
+ gBattlerAttacker = battler;
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
+ pokeAtk = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]];
else
- pokeAtk = &gEnemyParty[gBattlePartyID[gBankAttacker]];
+ pokeAtk = &gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]];
- if (gBankTarget >= gNoOfAllBanks)
- gBankTarget = bank;
- if (GetBankSide(gBankTarget) == SIDE_PLAYER)
- pokeDef = &gPlayerParty[gBattlePartyID[gBankTarget]];
+ if (gBattlerTarget >= gBattlersCount)
+ gBattlerTarget = battler;
+ if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
+ pokeDef = &gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]];
else
- pokeDef = &gEnemyParty[gBattlePartyID[gBankTarget]];
+ pokeDef = &gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]];
speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES);
pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY);
@@ -1785,7 +1743,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (special)
gLastUsedAbility = special;
else
- gLastUsedAbility = gBattleMons[bank].ability;
+ gLastUsedAbility = gBattleMons[battler].ability;
if (moveArg)
move = moveArg;
@@ -1797,8 +1755,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (caseID)
{
case ABILITYEFFECT_ON_SWITCHIN: // 0
- if (gBankAttacker >= gNoOfAllBanks)
- gBankAttacker = bank;
+ if (gBattlerAttacker >= gBattlersCount)
+ gBattlerAttacker = battler;
switch (gLastUsedAbility)
{
case ABILITYEFFECT_SWITCH_IN_WEATHER:
@@ -1813,7 +1771,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT);
gBattleScripting.animArg1 = B_ANIM_RAIN_CONTINUES;
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
effect++;
}
break;
@@ -1822,7 +1780,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES;
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
effect++;
}
break;
@@ -1831,7 +1789,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
gBattleScripting.animArg1 = B_ANIM_SUN_CONTINUES;
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
effect++;
}
break;
@@ -1848,7 +1806,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY);
BattleScriptPushCursorAndCallback(BattleScript_DrizzleActivates);
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
effect++;
}
break;
@@ -1857,7 +1815,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
BattleScriptPushCursorAndCallback(BattleScript_SandstreamActivates);
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
effect++;
}
break;
@@ -1866,44 +1824,44 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates);
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
effect++;
}
break;
case ABILITY_INTIMIDATE:
- if (!(gSpecialStatuses[bank].intimidatedPoke))
+ if (!(gSpecialStatuses[battler].intimidatedPoke))
{
- gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES;
- gSpecialStatuses[bank].intimidatedPoke = 1;
+ gStatuses3[battler] |= STATUS3_INTIMIDATE_POKES;
+ gSpecialStatuses[battler].intimidatedPoke = 1;
}
break;
case ABILITY_FORECAST:
- effect = CastformDataTypeChange(bank);
+ effect = CastformDataTypeChange(battler);
if (effect != 0)
{
BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
*(&gBattleStruct->formToChangeInto) = effect - 1;
}
break;
case ABILITY_TRACE:
- if (!(gSpecialStatuses[bank].traced))
+ if (!(gSpecialStatuses[battler].traced))
{
- gStatuses3[bank] |= STATUS3_TRACE;
- gSpecialStatuses[bank].traced = 1;
+ gStatuses3[battler] |= STATUS3_TRACE;
+ gSpecialStatuses[battler].traced = 1;
}
break;
case ABILITY_CLOUD_NINE:
case ABILITY_AIR_LOCK:
{
- // that's a weird choice for a variable, why not use i or bank?
- for (target1 = 0; target1 < gNoOfAllBanks; target1++)
+ // that's a weird choice for a variable, why not use i or battler?
+ for (target1 = 0; target1 < gBattlersCount; target1++)
{
effect = CastformDataTypeChange(target1);
if (effect != 0)
{
BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
- gBattleScripting.bank = target1;
+ gBattleScripting.battler = target1;
*(&gBattleStruct->formToChangeInto) = effect - 1;
break;
}
@@ -1913,18 +1871,18 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ENDTURN: // 1
- if (gBattleMons[bank].hp != 0)
+ if (gBattleMons[battler].hp != 0)
{
- gBankAttacker = bank;
+ gBattlerAttacker = battler;
switch (gLastUsedAbility)
{
case ABILITY_RAIN_DISH:
if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY)
- && gBattleMons[bank].maxHP > gBattleMons[bank].hp)
+ && gBattleMons[battler].maxHP > gBattleMons[battler].hp)
{
gLastUsedAbility = ABILITY_RAIN_DISH; // why
BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates);
- gBattleMoveDamage = gBattleMons[bank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[battler].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
@@ -1932,40 +1890,40 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_SHED_SKIN:
- if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0)
+ if ((gBattleMons[battler].status1 & STATUS1_ANY) && (Random() % 3) == 0)
{
- if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON))
+ if (gBattleMons[battler].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON))
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ if (gBattleMons[battler].status1 & STATUS1_SLEEP)
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
- if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ if (gBattleMons[battler].status1 & STATUS1_PARALYSIS)
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
- if (gBattleMons[bank].status1 & STATUS_BURN)
+ if (gBattleMons[battler].status1 & STATUS1_BURN)
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
- if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ if (gBattleMons[battler].status1 & STATUS1_FREEZE)
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
- gBattleMons[bank].status1 = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nightmare glitch
- gBattleScripting.bank = gActiveBank = bank;
+ gBattleMons[battler].status1 = 0;
+ gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE); // fix nightmare glitch
+ gBattleScripting.battler = gActiveBattler = battler;
BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates);
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
effect++;
}
break;
case ABILITY_SPEED_BOOST:
- if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2)
+ if (gBattleMons[battler].statStages[STAT_SPEED] < 0xC && gDisableStructs[battler].isFirstTurn != 2)
{
- gBattleMons[bank].statStages[STAT_STAGE_SPEED]++;
+ gBattleMons[battler].statStages[STAT_SPEED]++;
gBattleScripting.animArg1 = 0x11;
gBattleScripting.animArg2 = 0;
BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates);
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
effect++;
}
break;
case ABILITY_TRUANT:
- gDisableStructs[gBankAttacker].truantCounter ^= 1;
+ gDisableStructs[gBattlerAttacker].truantCounter ^= 1;
break;
}
}
@@ -1980,7 +1938,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
if (sSoundMovesTable[i] != 0xFFFF)
{
- if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)
+ if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS)
gHitMarker |= HITMARKER_NO_PPDEDUCT;
gBattlescriptCurrInstr = BattleScript_SoundproofProtected;
effect = 1;
@@ -1995,7 +1953,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_VOLT_ABSORB:
if (moveType == TYPE_ELECTRIC && gBattleMoves[move].power != 0)
{
- if (gProtectStructs[gBankAttacker].notFirstStrike)
+ if (gProtectStructs[gBattlerAttacker].notFirstStrike)
gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
else
gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
@@ -2006,7 +1964,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_WATER_ABSORB:
if (moveType == TYPE_WATER && gBattleMoves[move].power != 0)
{
- if (gProtectStructs[gBankAttacker].notFirstStrike)
+ if (gProtectStructs[gBattlerAttacker].notFirstStrike)
gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
else
gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
@@ -2015,23 +1973,23 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_FLASH_FIRE:
- if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE))
+ if (moveType == TYPE_FIRE && !(gBattleMons[battler].status1 & STATUS1_FREEZE))
{
- if (!(gBattleResources->flags->flags[bank] & UNKNOWN_FLAG_FLASH_FIRE))
+ if (!(gBattleResources->flags->flags[battler] & UNKNOWN_FLAG_FLASH_FIRE))
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (gProtectStructs[gBankAttacker].notFirstStrike)
+ if (gProtectStructs[gBattlerAttacker].notFirstStrike)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
- gBattleResources->flags->flags[bank] |= UNKNOWN_FLAG_FLASH_FIRE;
+ gBattleResources->flags->flags[battler] |= UNKNOWN_FLAG_FLASH_FIRE;
effect = 2;
}
else
{
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- if (gProtectStructs[gBankAttacker].notFirstStrike)
+ if (gProtectStructs[gBattlerAttacker].notFirstStrike)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
@@ -2043,16 +2001,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
if (effect == 1)
{
- if (gBattleMons[bank].maxHP == gBattleMons[bank].hp)
+ if (gBattleMons[battler].maxHP == gBattleMons[battler].hp)
{
- if ((gProtectStructs[gBankAttacker].notFirstStrike))
+ if ((gProtectStructs[gBattlerAttacker].notFirstStrike))
gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless;
else
gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless_PPLoss;
}
else
{
- gBattleMoveDamage = gBattleMons[bank].maxHP / 4;
+ gBattleMoveDamage = gBattleMons[battler].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
@@ -2064,16 +2022,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (gLastUsedAbility)
{
case ABILITY_COLOR_CHANGE:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
&& move != MOVE_STRUGGLE
&& gBattleMoves[move].power != 0
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && gBattleMons[bank].type1 != moveType
- && gBattleMons[bank].type2 != moveType
- && gBattleMons[bank].hp != 0)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
+ && gBattleMons[battler].type1 != moveType
+ && gBattleMons[battler].type2 != moveType
+ && gBattleMons[battler].hp != 0)
{
- gBattleMons[bank].type1 = moveType;
- gBattleMons[bank].type2 = moveType;
+ gBattleMons[battler].type1 = moveType;
+ gBattleMons[battler].type2 = moveType;
PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType)
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ColorChangeActivates;
@@ -2081,13 +2039,13 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_ROUGH_SKIN:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ && gBattleMons[gBattlerAttacker].hp != 0
+ && !gProtectStructs[gBattlerAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
{
- gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
BattleScriptPushCursor();
@@ -2096,10 +2054,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_EFFECT_SPORE:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ && gBattleMons[gBattlerAttacker].hp != 0
+ && !gProtectStructs[gBattlerAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 10) == 0)
{
@@ -2119,10 +2077,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_POISON_POINT:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ && gBattleMons[gBattlerAttacker].hp != 0
+ && !gProtectStructs[gBattlerAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
@@ -2134,10 +2092,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_STATIC:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ && gBattleMons[gBattlerAttacker].hp != 0
+ && !gProtectStructs[gBattlerAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
@@ -2149,11 +2107,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_FLAME_BODY:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ && gBattleMons[gBattlerAttacker].hp != 0
+ && !gProtectStructs[gBattlerAttacker].confusionSelfDmg
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (Random() % 3) == 0)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN;
@@ -2164,20 +2122,20 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_CUTE_CHARM:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ && gBattleMons[gBattlerAttacker].hp != 0
+ && !gProtectStructs[gBattlerAttacker].confusionSelfDmg
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && gBattleMons[gBankTarget].hp != 0
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
+ && gBattleMons[gBattlerTarget].hp != 0
&& (Random() % 3) == 0
- && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
+ && gBattleMons[gBattlerAttacker].ability != ABILITY_OBLIVIOUS
&& GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
- && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION)
&& GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != MON_GENDERLESS
&& GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != MON_GENDERLESS)
{
- gBattleMons[gBankAttacker].status2 |= STATUS2_INFATUATED_WITH(gBankTarget);
+ gBattleMons[gBattlerAttacker].status2 |= STATUS2_INFATUATED_WITH(gBattlerTarget);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
effect++;
@@ -2186,26 +2144,26 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_IMMUNITY: // 5
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (battler = 0; battler < gBattlersCount; battler++)
{
- switch (gBattleMons[bank].ability)
+ switch (gBattleMons[battler].ability)
{
case ABILITY_IMMUNITY:
- if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER))
+ if (gBattleMons[battler].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON | STATUS1_TOXIC_COUNTER))
{
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
effect = 1;
}
break;
case ABILITY_OWN_TEMPO:
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battler].status2 & STATUS2_CONFUSION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
effect = 2;
}
break;
case ABILITY_LIMBER:
- if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ if (gBattleMons[battler].status1 & STATUS1_PARALYSIS)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
effect = 1;
@@ -2213,29 +2171,29 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITY_INSOMNIA:
case ABILITY_VITAL_SPIRIT:
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ if (gBattleMons[battler].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE);
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
effect = 1;
}
break;
case ABILITY_WATER_VEIL:
- if (gBattleMons[bank].status1 & STATUS_BURN)
+ if (gBattleMons[battler].status1 & STATUS1_BURN)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
effect = 1;
}
break;
case ABILITY_MAGMA_ARMOR:
- if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ if (gBattleMons[battler].status1 & STATUS1_FREEZE)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
effect = 1;
}
break;
case ABILITY_OBLIVIOUS:
- if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
+ if (gBattleMons[battler].status2 & STATUS2_INFATUATION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
effect = 3;
@@ -2247,36 +2205,36 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (effect)
{
case 1: // status cleared
- gBattleMons[bank].status1 = 0;
+ gBattleMons[battler].status1 = 0;
break;
case 2: // get rid of confusion
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battler].status2 &= ~(STATUS2_CONFUSION);
break;
case 3: // get rid of infatuation
- gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[battler].status2 &= ~(STATUS2_INFATUATION);
break;
}
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus;
- gBattleScripting.bank = bank;
- gActiveBank = bank;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gBattleScripting.battler = battler;
+ gActiveBattler = battler;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
return effect;
}
}
break;
case ABILITYEFFECT_FORECAST: // 6
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (battler = 0; battler < gBattlersCount; battler++)
{
- if (gBattleMons[bank].ability == ABILITY_FORECAST)
+ if (gBattleMons[battler].ability == ABILITY_FORECAST)
{
- effect = CastformDataTypeChange(bank);
+ effect = CastformDataTypeChange(battler);
if (effect)
{
BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
- gBattleScripting.bank = bank;
+ gBattleScripting.battler = battler;
*(&gBattleStruct->formToChangeInto) = effect - 1;
return effect;
}
@@ -2292,7 +2250,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER;
- gBattleScripting.bank = gBankTarget;
+ gBattleScripting.battler = gBattlerTarget;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
@@ -2308,7 +2266,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect;
- gBattleScripting.bank = gBankAttacker;
+ gBattleScripting.battler = gBattlerAttacker;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
@@ -2316,7 +2274,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE1: // 9
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES)
{
@@ -2330,42 +2288,42 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_TRACE: // 11
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
{
u8 target2;
- side = (GetBankIdentity(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon
- target1 = GetBankByIdentity(side);
- target2 = GetBankByIdentity(side + BIT_MON);
+ side = (GetBattlerPosition(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon
+ target1 = GetBattlerAtPosition(side);
+ target2 = GetBattlerAtPosition(side + BIT_FLANK);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0
&& gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side);
- gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ gActiveBattler = GetBattlerAtPosition(((Random() & 1) * 2) | side);
+ gBattleMons[i].ability = gBattleMons[gActiveBattler].ability;
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
effect++;
}
else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0)
{
- gActiveBank = target1;
- gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ gActiveBattler = target1;
+ gBattleMons[i].ability = gBattleMons[gActiveBattler].ability;
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
effect++;
}
else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- gActiveBank = target2;
- gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
- gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ gActiveBattler = target2;
+ gBattleMons[i].ability = gBattleMons[gActiveBattler].ability;
+ gLastUsedAbility = gBattleMons[gActiveBattler].ability;
effect++;
}
}
else
{
- gActiveBank = target1;
+ gActiveBattler = target1;
if (gBattleMons[target1].ability && gBattleMons[target1].hp)
{
gBattleMons[i].ability = gBattleMons[target1].ability;
@@ -2377,9 +2335,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
BattleScriptPushCursorAndCallback(BattleScript_TraceActivates);
gStatuses3[i] &= ~(STATUS3_TRACE);
- gBattleScripting.bank = i;
+ gBattleScripting.battler = i;
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattlePartyID[gActiveBank])
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility)
break;
}
@@ -2387,7 +2345,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE2: // 10
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES))
{
@@ -2402,10 +2360,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12
- side = GetBankSide(bank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ side = GetBattlerSide(battler);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) != side && gBattleMons[i].ability == ability)
+ if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability)
{
gLastUsedAbility = ability;
effect = i + 1;
@@ -2413,10 +2371,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_BANK_SIDE: // 13
- side = GetBankSide(bank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ side = GetBattlerSide(battler);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) == side && gBattleMons[i].ability == ability)
+ if (GetBattlerSide(i) == side && gBattleMons[i].ability == ability)
{
gLastUsedAbility = ability;
effect = i + 1;
@@ -2427,21 +2385,21 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (gLastUsedAbility)
{
case 0xFD:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gStatuses3[i] & STATUS3_MUDSPORT)
effect = i + 1;
}
break;
case 0xFE:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gStatuses3[i] & STATUS3_WATERSPORT)
effect = i + 1;
}
break;
default:
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ability)
{
@@ -2453,7 +2411,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_ON_FIELD: // 19
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0)
{
@@ -2463,9 +2421,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gBattleMons[i].ability == ability && i != bank)
+ if (gBattleMons[i].ability == ability && i != battler)
{
gLastUsedAbility = ability;
effect = i + 1;
@@ -2473,10 +2431,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_OTHER_SIDE: // 16
- side = GetBankSide(bank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ side = GetBattlerSide(battler);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) != side && gBattleMons[i].ability == ability)
+ if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability)
{
gLastUsedAbility = ability;
effect++;
@@ -2484,10 +2442,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_BANK_SIDE: // 17
- side = GetBankSide(bank);
- for (i = 0; i < gNoOfAllBanks; i++)
+ side = GetBattlerSide(battler);
+ for (i = 0; i < gBattlersCount; i++)
{
- if (GetBankSide(i) == side && gBattleMons[i].ability == ability)
+ if (GetBattlerSide(i) == side && gBattleMons[i].ability == ability)
{
gLastUsedAbility = ability;
effect++;
@@ -2495,9 +2453,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_ON_FIELD: // 18
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
- if (gBattleMons[i].ability == ability && i != bank)
+ if (gBattleMons[i].ability == ability && i != battler)
{
gLastUsedAbility = ability;
effect++;
@@ -2507,7 +2465,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
if (effect && caseID < ABILITYEFFECT_CHECK_OTHER_SIDE && gLastUsedAbility != 0xFF)
- RecordAbilityBattle(bank, gLastUsedAbility);
+ RecordAbilityBattle(battler, gLastUsedAbility);
}
return effect;
@@ -2516,7 +2474,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
void BattleScriptExecute(const u8 *BS_ptr)
{
gBattlescriptCurrInstr = BS_ptr;
- BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc;
+ gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size++] = gBattleMainFunc;
gBattleMainFunc = RunBattleScriptCommands_PopCallbacksStack;
gCurrentActionFuncId = 0;
}
@@ -2525,7 +2483,7 @@ void BattleScriptPushCursorAndCallback(const u8 *BS_ptr)
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BS_ptr;
- BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc;
+ gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size++] = gBattleMainFunc;
gBattleMainFunc = RunBattleScriptCommands;
}
@@ -2539,7 +2497,7 @@ enum
ITEM_STATS_CHANGE, // 5
};
-u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
+u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
{
int i = 0;
u8 effect = ITEM_NO_EFFECT;
@@ -2548,11 +2506,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
u8 bankQuality, atkQuality, defQuality;
u16 atkItem, defItem;
- gLastUsedItem = gBattleMons[bank].item;
+ gLastUsedItem = gBattleMons[battlerId].item;
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
{
- bankHoldEffect = gEnigmaBerries[bank].holdEffect;
- bankQuality = gEnigmaBerries[bank].holdEffectParam;
+ bankHoldEffect = gEnigmaBerries[battlerId].holdEffect;
+ bankQuality = gEnigmaBerries[battlerId].holdEffectParam;
}
else
{
@@ -2560,11 +2518,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem);
}
- atkItem = gBattleMons[gBankAttacker].item;
+ atkItem = gBattleMons[gBattlerAttacker].item;
if (atkItem == ITEM_ENIGMA_BERRY)
{
- atkHoldEffect = gEnigmaBerries[gBankAttacker].holdEffect;
- atkQuality = gEnigmaBerries[gBankAttacker].holdEffectParam;
+ atkHoldEffect = gEnigmaBerries[gBattlerAttacker].holdEffect;
+ atkQuality = gEnigmaBerries[gBattlerAttacker].holdEffectParam;
}
else
{
@@ -2573,11 +2531,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
// def variables are unused
- defItem = gBattleMons[gBankTarget].item;
+ defItem = gBattleMons[gBattlerTarget].item;
if (defItem == ITEM_ENIGMA_BERRY)
{
- defHoldEffect = gEnigmaBerries[gBankTarget].holdEffect;
- defQuality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ defHoldEffect = gEnigmaBerries[gBattlerTarget].holdEffect;
+ defQuality = gEnigmaBerries[gBattlerTarget].holdEffectParam;
}
else
{
@@ -2591,39 +2549,39 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
switch (bankHoldEffect)
{
case HOLD_EFFECT_DOUBLE_PRIZE:
- if (GetBankSide(bank) == SIDE_PLAYER)
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
gBattleStruct->moneyMultiplier = 2;
break;
case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- if (gBattleMons[bank].statStages[i] < 6)
+ if (gBattleMons[battlerId].statStages[i] < 6)
{
- gBattleMons[bank].statStages[i] = 6;
+ gBattleMons[battlerId].statStages[i] = 6;
effect = ITEM_STATS_CHANGE;
}
}
if (effect)
{
- gBattleScripting.bank = bank;
- gStringBank = bank;
- gActiveBank = gBankAttacker = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
+ gActiveBattler = gBattlerAttacker = battlerId;
BattleScriptExecute(BattleScript_WhiteHerbEnd2);
}
break;
}
break;
case 1:
- if (gBattleMons[bank].hp)
+ if (gBattleMons[battlerId].hp)
{
switch (bankHoldEffect)
{
case HOLD_EFFECT_RESTORE_HP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
gBattleMoveDamage = bankQuality;
- if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + bankQuality > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
effect = 4;
@@ -2636,10 +2594,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
u8 ppBonuses;
u16 move;
- if (GetBankSide(bank) == SIDE_PLAYER)
- mon = &gPlayerParty[gBattlePartyID[bank]];
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
+ mon = &gPlayerParty[gBattlerPartyIndexes[battlerId]];
else
- mon = &gEnemyParty[gBattlePartyID[bank]];
+ mon = &gEnemyParty[gBattlerPartyIndexes[battlerId]];
for (i = 0; i < 4; i++)
{
move = GetMonData(mon, MON_DATA_MOVE1 + i);
@@ -2659,8 +2617,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
PREPARE_MOVE_BUFFER(gBattleTextBuff1, move);
BattleScriptExecute(BattleScript_BerryPPHealEnd2);
- EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
+ MarkBattlerForControllerExec(gActiveBattler);
effect = ITEM_PP_CHANGE;
}
}
@@ -2668,47 +2626,47 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- if (gBattleMons[bank].statStages[i] < 6)
+ if (gBattleMons[battlerId].statStages[i] < 6)
{
- gBattleMons[bank].statStages[i] = 6;
+ gBattleMons[battlerId].statStages[i] = 6;
effect = ITEM_STATS_CHANGE;
}
}
if (effect)
{
- gBattleScripting.bank = bank;
- gStringBank = bank;
- gActiveBank = gBankAttacker = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
+ gActiveBattler = gBattlerAttacker = battlerId;
BattleScriptExecute(BattleScript_WhiteHerbEnd2);
}
break;
case HOLD_EFFECT_LEFTOVERS:
- if (gBattleMons[bank].hp < gBattleMons[bank].maxHP && !moveTurn)
+ if (gBattleMons[battlerId].hp < gBattleMons[battlerId].maxHP && !moveTurn)
{
- gBattleMoveDamage = gBattleMons[bank].maxHP / 16;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
BattleScriptExecute(BattleScript_ItemHealHP_End2);
effect = ITEM_HP_CHANGE;
- RecordItemEffectBattle(bank, bankHoldEffect);
+ RecordItemEffectBattle(battlerId, bankHoldEffect);
}
break;
// nice copy/paste there gamefreak, making a function for confuse berries was too much eh?
case HOLD_EFFECT_CONFUSE_SPICY:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SPICY) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SPICY) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2716,17 +2674,17 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CONFUSE_DRY:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_DRY);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_DRY) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_DRY) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2734,17 +2692,17 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CONFUSE_SWEET:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SWEET) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SWEET) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2752,17 +2710,17 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CONFUSE_BITTER:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_BITTER) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_BITTER) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2770,17 +2728,17 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CONFUSE_SOUR:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn)
{
PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR);
- gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
- gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP)
+ gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp;
gBattleMoveDamage *= -1;
- if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SOUR) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SOUR) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2789,85 +2747,85 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
break;
// copy/paste again, smh
case HOLD_EFFECT_ATTACK_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_ATK);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_ATK, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_ATK, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_ATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_DEFENSE_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_DEF] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_DEF);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_DEF);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_DEF, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_DEF, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_DEF;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_SPEED_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPEED] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPEED);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPEED);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_SPEED, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_SPEED, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_SPEED;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_SP_ATTACK_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPATK] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPATK);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_SPATK, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_SPATK, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_SPATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_SP_DEFENSE_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC)
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPDEF] < 0xC)
{
- PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPDEF);
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPDEF);
- gEffectBank = bank;
- SET_STATCHANGER(STAT_STAGE_SPDEF, 1, FALSE);
- gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF;
+ gEffectBattler = battlerId;
+ SET_STATCHANGER(STAT_SPDEF, 1, FALSE);
+ gBattleScripting.animArg1 = 0xE + STAT_SPDEF;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
case HOLD_EFFECT_CRITICAL_UP:
- if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY))
+ if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality && !moveTurn && !(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY))
{
- gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY;
+ gBattleMons[battlerId].status2 |= STATUS2_FOCUS_ENERGY;
BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2);
effect = ITEM_EFFECT_OTHER;
}
break;
case HOLD_EFFECT_RANDOM_STAT_UP:
- if (!moveTurn && gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality)
+ if (!moveTurn && gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / bankQuality)
{
for (i = 0; i < 5; i++)
{
- if (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] < 0xC)
+ if (gBattleMons[battlerId].statStages[STAT_ATK + i] < 0xC)
break;
}
if (i != 5)
@@ -2875,7 +2833,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
do
{
i = Random() % 5;
- } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC);
+ } while (gBattleMons[battlerId].statStages[STAT_ATK + i] == 0xC);
PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1);
@@ -2888,7 +2846,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleTextBuff2[6] = STRINGID_STATROSE >> 8;
gBattleTextBuff2[7] = EOS;
- gEffectBank = bank;
+ gEffectBattler = battlerId;
SET_STATCHANGER(i + 1, 2, FALSE);
gBattleScripting.animArg1 = 0x21 + i + 6;
gBattleScripting.animArg2 = 0;
@@ -2898,85 +2856,85 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CURE_PAR:
- if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
- gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS);
BattleScriptExecute(BattleScript_BerryCurePrlzEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_PSN:
- if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
+ if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
{
- gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER);
BattleScriptExecute(BattleScript_BerryCurePsnEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_BRN:
- if (gBattleMons[bank].status1 & STATUS_BURN)
+ if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
- gBattleMons[bank].status1 &= ~(STATUS_BURN);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_BURN);
BattleScriptExecute(BattleScript_BerryCureBrnEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_FRZ:
- if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
- gBattleMons[bank].status1 &= ~(STATUS_FREEZE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
BattleScriptExecute(BattleScript_BerryCureFrzEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_SLP:
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status1 &= ~(STATUS_SLEEP);
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptExecute(BattleScript_BerryCureSlpEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_CONFUSION:
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptExecute(BattleScript_BerryCureConfusionEnd2);
effect = ITEM_EFFECT_OTHER;
}
break;
case HOLD_EFFECT_CURE_STATUS:
- if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
i = 0;
- if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
+ if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
i++;
}
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
i++;
}
- if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
i++;
}
- if (gBattleMons[bank].status1 & STATUS_BURN)
+ if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
i++;
}
- if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
i++;
}
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
i++;
@@ -2985,16 +2943,16 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- gBattleMons[bank].status1 = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status1 = 0;
+ gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_ATTRACT:
- if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
+ if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION)
{
- gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION);
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -3004,18 +2962,18 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
if (effect)
{
- gBattleScripting.bank = bank;
- gStringBank = bank;
- gActiveBank = gBankAttacker = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
+ gActiveBattler = gBattlerAttacker = battlerId;
switch (effect)
{
case ITEM_STATUS_CHANGE:
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battlerId].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
case ITEM_PP_CHANGE:
- if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i]))
- gBattleMons[bank].pp[i] = changedPP;
+ if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[battlerId].unk18_b & gBitTable[i]))
+ gBattleMons[battlerId].pp[i] = changedPP;
break;
}
}
@@ -3024,13 +2982,13 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case 2:
break;
case 3:
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
- gLastUsedItem = gBattleMons[bank].item;
- if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
+ gLastUsedItem = gBattleMons[battlerId].item;
+ if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY)
{
- bankHoldEffect = gEnigmaBerries[bank].holdEffect;
- bankQuality = gEnigmaBerries[bank].holdEffectParam;
+ bankHoldEffect = gEnigmaBerries[battlerId].holdEffect;
+ bankQuality = gEnigmaBerries[battlerId].holdEffectParam;
}
else
{
@@ -3040,64 +2998,64 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
switch (bankHoldEffect)
{
case HOLD_EFFECT_CURE_PAR:
- if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
- gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureParRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_PSN:
- if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
+ if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
{
- gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_BRN:
- if (gBattleMons[bank].status1 & STATUS_BURN)
+ if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
- gBattleMons[bank].status1 &= ~(STATUS_BURN);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_BURN);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_FRZ:
- if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
- gBattleMons[bank].status1 &= ~(STATUS_FREEZE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_SLP:
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status1 &= ~(STATUS_SLEEP);
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet;
effect = ITEM_STATUS_CHANGE;
}
break;
case HOLD_EFFECT_CURE_CONFUSION:
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet;
effect = ITEM_EFFECT_OTHER;
}
break;
case HOLD_EFFECT_CURE_ATTRACT:
- if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
+ if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION)
{
- gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION);
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -3106,35 +3064,35 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_CURE_STATUS:
- if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
- if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
+ if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
}
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
}
- if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
}
- if (gBattleMons[bank].status1 & STATUS_BURN)
+ if (gBattleMons[battlerId].status1 & STATUS1_BURN)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
}
- if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
}
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
}
- gBattleMons[bank].status1 = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[battlerId].status1 = 0;
+ gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet;
@@ -3144,16 +3102,16 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_RESTORE_STATS:
for (i = 0; i < BATTLE_STATS_NO; i++)
{
- if (gBattleMons[bank].statStages[i] < 6)
+ if (gBattleMons[battlerId].statStages[i] < 6)
{
- gBattleMons[bank].statStages[i] = 6;
+ gBattleMons[battlerId].statStages[i] = 6;
effect = ITEM_STATS_CHANGE;
}
}
if (effect)
{
- gBattleScripting.bank = bank;
- gStringBank = bank;
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_WhiteHerbRet;
return effect; // unnecessary return
@@ -3162,11 +3120,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
if (effect)
{
- gBattleScripting.bank = bank;
- gStringBank = bank;
- gActiveBank = bank;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gBattleScripting.battler = battlerId;
+ gPotentialItemEffectBattler = battlerId;
+ gActiveBattler = battlerId;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
break;
}
}
@@ -3177,11 +3135,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
switch (atkHoldEffect)
{
case HOLD_EFFECT_FLINCH:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ && (gSpecialStatuses[gBattlerTarget].physicalDmg || gSpecialStatuses[gBattlerTarget].specialDmg)
&& (Random() % 100) < atkQuality
&& gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED
- && gBattleMons[gBankTarget].hp)
+ && gBattleMons[gBattlerTarget].hp)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH;
BattleScriptPushCursor();
@@ -3190,20 +3148,20 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_SHELL_BELL:
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gSpecialStatuses[gBankTarget].moveturnLostHP != 0
- && gSpecialStatuses[gBankTarget].moveturnLostHP != 0xFFFF
- && gBankAttacker != gBankTarget
- && gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP
- && gBattleMons[gBankAttacker].hp != 0)
+ if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
+ && gSpecialStatuses[gBattlerTarget].dmg != 0
+ && gSpecialStatuses[gBattlerTarget].dmg != 0xFFFF
+ && gBattlerAttacker != gBattlerTarget
+ && gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP
+ && gBattleMons[gBattlerAttacker].hp != 0)
{
gLastUsedItem = atkItem;
- gStringBank = gBankAttacker;
- gBattleScripting.bank = gBankAttacker;
- gBattleMoveDamage = (gSpecialStatuses[gBankTarget].moveturnLostHP / atkQuality) * -1;
+ gPotentialItemEffectBattler = gBattlerAttacker;
+ gBattleScripting.battler = gBattlerAttacker;
+ gBattleMoveDamage = (gSpecialStatuses[gBattlerTarget].dmg / atkQuality) * -1;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = -1;
- gSpecialStatuses[gBankTarget].moveturnLostHP = 0;
+ gSpecialStatuses[gBattlerTarget].dmg = 0;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret;
effect++;
@@ -3217,16 +3175,16 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
return effect;
}
-void ClearFuryCutterDestinyBondGrudge(u8 bank)
+void ClearFuryCutterDestinyBondGrudge(u8 battlerId)
{
- gDisableStructs[bank].furyCutterCounter = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_DESTINY_BOND);
- gStatuses3[bank] &= ~(STATUS3_GRUDGE);
+ gDisableStructs[battlerId].furyCutterCounter = 0;
+ gBattleMons[battlerId].status2 &= ~(STATUS2_DESTINY_BOND);
+ gStatuses3[battlerId] &= ~(STATUS3_GRUDGE);
}
void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands
{
- if (gBattleExecBuffer == 0)
+ if (gBattleControllerExecFlags == 0)
gBattleScriptingCommandsTable[*gBattlescriptCurrInstr]();
}
@@ -3244,21 +3202,21 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
switch (moveTarget)
{
case MOVE_TARGET_SELECTED:
- side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
targetBank = gSideTimers[side].followmeTarget;
else
{
- side = GetBankSide(gBankAttacker);
+ side = GetBattlerSide(gBattlerAttacker);
do
{
- targetBank = Random() % gNoOfAllBanks;
- } while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]);
+ targetBank = Random() % gBattlersCount;
+ } while (targetBank == gBattlerAttacker || side == GetBattlerSide(targetBank) || gAbsentBattlerFlags & gBitTable[targetBank]);
if (gBattleMoves[move].type == TYPE_ELECTRIC
- && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
+ && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBattlerAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
&& gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD)
{
- targetBank ^= BIT_MON;
+ targetBank ^= BIT_FLANK;
RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability);
gSpecialStatuses[targetBank].lightningRodRedirected = 1;
}
@@ -3268,55 +3226,55 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
case MOVE_TARGET_BOTH:
case MOVE_TARGET_FOES_AND_ALLY:
case MOVE_TARGET_OPPONENTS_FIELD:
- targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE);
- if (gAbsentBankFlags & gBitTable[targetBank])
- targetBank ^= BIT_MON;
+ targetBank = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE);
+ if (gAbsentBattlerFlags & gBitTable[targetBank])
+ targetBank ^= BIT_FLANK;
break;
case MOVE_TARGET_RANDOM:
- side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ side = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
targetBank = gSideTimers[side].followmeTarget;
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM)
{
- if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
{
if (Random() & 1)
- targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ targetBank = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
else
- targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ targetBank = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
}
else
{
if (Random() & 1)
- targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ targetBank = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
else
- targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ targetBank = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
}
- if (gAbsentBankFlags & gBitTable[targetBank])
- targetBank ^= BIT_MON;
+ if (gAbsentBattlerFlags & gBitTable[targetBank])
+ targetBank ^= BIT_FLANK;
}
else
- targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE);
+ targetBank = GetBattlerAtPosition((GetBattlerPosition(gBattlerAttacker) & BIT_SIDE) ^ BIT_SIDE);
break;
case MOVE_TARGET_USER:
case MOVE_TARGET_x10:
- targetBank = gBankAttacker;
+ targetBank = gBattlerAttacker;
break;
}
- *(gBattleStruct->moveTarget + gBankAttacker) = targetBank;
+ *(gBattleStruct->moveTarget + gBattlerAttacker) = targetBank;
return targetBank;
}
-static bool32 HasObedientBitSet(u8 bank)
+static bool32 HasObedientBitSet(u8 battlerId)
{
- if (GetBankSide(bank) == SIDE_OPPONENT)
+ if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
return TRUE;
- if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS
- && GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES, NULL) != SPECIES_MEW)
+ if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS
+ && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_MEW)
return TRUE;
- return GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_OBEDIENCE, NULL);
+ return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_OBEDIENCE, NULL);
}
u8 IsMonDisobedient(void)
@@ -3327,18 +3285,18 @@ u8 IsMonDisobedient(void)
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
return 0;
- if (GetBankSide(gBankAttacker) == SIDE_OPPONENT)
+ if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)
return 0;
- if (HasObedientBitSet(gBankAttacker)) // only if species is Mew or Deoxys
+ if (HasObedientBitSet(gBattlerAttacker)) // only if species is Mew or Deoxys
{
- if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBankIdentity(gBankAttacker) == 2)
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gBattlerAttacker) == 2)
return 0;
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
return 0;
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
return 0;
- if (!IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName))
+ if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName))
return 0;
if (FlagGet(FLAG_BADGE08_GET))
return 0;
@@ -3353,27 +3311,27 @@ u8 IsMonDisobedient(void)
obedienceLevel = 70;
}
- if (gBattleMons[gBankAttacker].level <= obedienceLevel)
+ if (gBattleMons[gBattlerAttacker].level <= obedienceLevel)
return 0;
rnd = (Random() & 255);
- calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8;
+ calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8;
if (calc < obedienceLevel)
return 0;
// is not obedient
if (gCurrentMove == MOVE_RAGE)
- gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE);
- if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK))
+ gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RAGE);
+ if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK))
{
gBattlescriptCurrInstr = BattleScript_82DB695;
return 1;
}
rnd = (Random() & 255);
- calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8;
+ calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8;
if (calc < obedienceLevel)
{
- calc = CheckMoveLimitations(gBankAttacker, gBitTable[gCurrMovePos], 0xFF);
+ calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], 0xFF);
if (calc == 0xF) // all moves cannot be used
{
gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3;
@@ -3384,31 +3342,31 @@ u8 IsMonDisobedient(void)
{
do
{
- gCurrMovePos = gUnknown_020241E9 = Random() & 3;
+ gCurrMovePos = gChosenMovePos = Random() & 3;
} while (gBitTable[gCurrMovePos] & calc);
- gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ gRandomMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos];
gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove;
- gBankTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlerTarget = GetMoveTarget(gRandomMove, 0);
gHitMarker |= HITMARKER_x200000;
return 2;
}
}
else
{
- obedienceLevel = gBattleMons[gBankAttacker].level - obedienceLevel;
+ obedienceLevel = gBattleMons[gBattlerAttacker].level - obedienceLevel;
calc = (Random() & 255);
- if (calc < obedienceLevel && !(gBattleMons[gBankAttacker].status1 & STATUS_ANY) && gBattleMons[gBankAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBankAttacker].ability != ABILITY_INSOMNIA)
+ if (calc < obedienceLevel && !(gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY) && gBattleMons[gBattlerAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBattlerAttacker].ability != ABILITY_INSOMNIA)
{
// try putting asleep
int i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gBattlersCount; i++)
{
if (gBattleMons[i].status2 & STATUS2_UPROAR)
break;
}
- if (i == gNoOfAllBanks)
+ if (i == gBattlersCount)
{
gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep;
return 1;
@@ -3417,8 +3375,8 @@ u8 IsMonDisobedient(void)
calc -= obedienceLevel;
if (calc < obedienceLevel)
{
- gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker);
- gBankTarget = gBankAttacker;
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerAttacker], MOVE_POUND, 0, 40, 0, gBattlerAttacker, gBattlerAttacker);
+ gBattlerTarget = gBattlerAttacker;
gBattlescriptCurrInstr = BattleScript_82DB6F0;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
return 2;
diff --git a/src/battle_util2.c b/src/battle_util2.c
index 538c1c641..c1bbabc85 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -8,12 +8,7 @@
#include "random.h"
#include "battle_scripts.h"
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
extern u8 gUnknown_0203CF00[];
-extern const u8 *gBattlescriptCurrInstr;
-extern u8 gBattleCommunication[];
-extern u8 gActiveBank;
extern void sub_81D55D0(void);
extern void sub_81D5694(void);
@@ -79,7 +74,7 @@ void FreeBattleResources(void)
}
}
-void AdjustFriendshipOnBattleFaint(u8 bank)
+void AdjustFriendshipOnBattleFaint(u8 battlerId)
{
u8 opposingBank;
@@ -87,33 +82,33 @@ void AdjustFriendshipOnBattleFaint(u8 bank)
{
u8 opposingBank2;
- opposingBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- opposingBank2 = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ opposingBank = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ opposingBank2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
if (gBattleMons[opposingBank2].level > gBattleMons[opposingBank].level)
opposingBank = opposingBank2;
}
else
{
- opposingBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ opposingBank = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
}
- if (gBattleMons[opposingBank].level > gBattleMons[bank].level)
+ if (gBattleMons[opposingBank].level > gBattleMons[battlerId].level)
{
- if (gBattleMons[opposingBank].level - gBattleMons[bank].level > 29)
- AdjustFriendship(&gPlayerParty[gBattlePartyID[bank]], 8);
+ if (gBattleMons[opposingBank].level - gBattleMons[battlerId].level > 29)
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 8);
else
- AdjustFriendship(&gPlayerParty[gBattlePartyID[bank]], 6);
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 6);
}
else
{
- AdjustFriendship(&gPlayerParty[gBattlePartyID[bank]], 6);
+ AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battlerId]], 6);
}
}
-void sub_80571DC(u8 bank, u8 arg1)
+void sub_80571DC(u8 battlerId, u8 arg1)
{
- if (GetBankSide(bank) != SIDE_OPPONENT)
+ if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
{
s32 i;
@@ -122,14 +117,14 @@ void sub_80571DC(u8 bank, u8 arg1)
for (i = 0; i < 3; i++)
gUnknown_0203CF00[i] = *(0 * 3 + i + (u8*)(gBattleStruct->field_60));
- sub_81B8FB0(pokemon_order_func(gBattlePartyID[bank]), pokemon_order_func(arg1));
+ sub_81B8FB0(pokemon_order_func(gBattlerPartyIndexes[battlerId]), pokemon_order_func(arg1));
for (i = 0; i < 3; i++)
*(0 * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
}
}
-u32 sub_805725C(u8 bank)
+u32 sub_805725C(u8 battlerId)
{
u32 effect = 0;
@@ -138,12 +133,12 @@ u32 sub_805725C(u8 bank)
switch (gBattleCommunication[MULTIUSE_STATE])
{
case 0:
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
- if (UproarWakeUpCheck(bank))
+ if (UproarWakeUpCheck(battlerId))
{
- gBattleMons[bank].status1 &= ~(STATUS_SLEEP);
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
@@ -153,24 +148,24 @@ u32 sub_805725C(u8 bank)
{
u32 toSub;
- if (gBattleMons[bank].ability == ABILITY_EARLY_BIRD)
+ if (gBattleMons[battlerId].ability == ABILITY_EARLY_BIRD)
toSub = 2;
else
toSub = 1;
- if ((gBattleMons[bank].status1 & STATUS_SLEEP) < toSub)
- gBattleMons[bank].status1 &= ~(STATUS_SLEEP);
+ if ((gBattleMons[battlerId].status1 & STATUS1_SLEEP) < toSub)
+ gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP);
else
- gBattleMons[bank].status1 -= toSub;
+ gBattleMons[battlerId].status1 -= toSub;
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ if (gBattleMons[battlerId].status1 & STATUS1_SLEEP)
{
gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep;
effect = 2;
}
else
{
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE);
BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
@@ -181,7 +176,7 @@ u32 sub_805725C(u8 bank)
gBattleCommunication[MULTIUSE_STATE]++;
break;
case 1:
- if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ if (gBattleMons[battlerId].status1 & STATUS1_FREEZE)
{
if (Random() % 5 != 0)
{
@@ -189,7 +184,7 @@ u32 sub_805725C(u8 bank)
}
else
{
- gBattleMons[bank].status1 &= ~(STATUS_FREEZE);
+ gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@@ -206,9 +201,9 @@ u32 sub_805725C(u8 bank)
if (effect == 2)
{
- gActiveBank = bank;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
+ gActiveBattler = battlerId;
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ MarkBattlerForControllerExec(gActiveBattler);
}
return effect;
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 0cf6efd65..23594ba46 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -18,7 +18,6 @@
#include "event_data.h"
#include "main.h"
#include "link.h"
-#include "new_menu_helpers.h"
#include "item_menu_icons.h"
#include "berry.h"
#include "item.h"
@@ -3489,7 +3488,7 @@ void ShowBerryBlenderRecordWindow(void)
winTemplate = sBlenderRecordWindowTemplate;
gResultsWindowId = AddWindow(&winTemplate);
- sub_81973FC(gResultsWindowId, 0);
+ NewMenuHelpers_DrawStdWindowFrame(gResultsWindowId, 0);
FillWindowPixelBuffer(gResultsWindowId, 0x11);
xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90);
@@ -3574,35 +3573,35 @@ static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlen
static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s32 speed, s32 caseId)
{
- struct TextColor txtColor;
+ u8 txtColor[3];
u32 letterSpacing = 0;
switch (caseId)
{
case 0:
case 3:
- txtColor.fgColor = 1;
- txtColor.bgColor = 2;
- txtColor.shadowColor = 3;
+ txtColor[0] = 1;
+ txtColor[1] = 2;
+ txtColor[2] = 3;
break;
case 1:
- txtColor.fgColor = 0;
- txtColor.bgColor = 2;
- txtColor.shadowColor = 3;
+ txtColor[0] = 0;
+ txtColor[1] = 2;
+ txtColor[2] = 3;
break;
case 2:
- txtColor.fgColor = 0;
- txtColor.bgColor = 4;
- txtColor.shadowColor = 5;
+ txtColor[0] = 0;
+ txtColor[1] = 4;
+ txtColor[2] = 5;
break;
}
if (caseId != 3)
{
- FillWindowPixelBuffer(windowId, txtColor.fgColor | (txtColor.fgColor << 4));
+ FillWindowPixelBuffer(windowId, txtColor[0] | (txtColor[0] << 4));
}
- AddTextPrinterParameterized2(windowId, 1, x, y, letterSpacing, 1, &txtColor, speed, string);
+ AddTextPrinterParameterized2(windowId, 1, x, y, letterSpacing, 1, txtColor, speed, string);
}
static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed)
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index 2b576b61b..f6a5895a9 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -133,7 +133,7 @@ extern const u8 gMultiBootProgram_BerryGlitchFix_End[];
// .text
-void InitBerryFixProgram(void)
+void CB2_InitBerryFixProgram(void)
{
DisableInterrupts(0xFFFF);
EnableInterrupts(0x0001);
@@ -217,10 +217,9 @@ static void berry_fix_main(void)
}
}
-#ifdef NONMATCHING
static void berry_fix_gpu_set(void)
{
- s32 width;
+ s32 width, left;
SetGpuReg(REG_OFFSET_BG0CNT, 0x0000);
SetGpuReg(REG_OFFSET_BG1CNT, 0x0000);
@@ -249,230 +248,27 @@ static void berry_fix_gpu_set(void)
FillWindowPixelBuffer(3, 0);
FillWindowPixelBuffer(0, 0xAA);
-// This block is a meme among memes
- width = (0x78 - GetStringWidth(0, sUnknown_08617E9B, 0)) / 2;
- box_print(2, 0, width, 3, sUnknown_0861815B, -1, sUnknown_08617E9B);
- width = (s32)(0x78 - GetStringWidth(0, sUnknown_08617E9B, 0)) / 2 + 0x78;
- box_print(2, 0, width, 3, sUnknown_0861815B, -1, sUnknown_08617E8D);
- width = (0x70 - GetStringWidth(0, sUnknown_08617E8D, 0)) / 2;
- box_print(3, 0, width, 0, sUnknown_0861815B, -1, sUnknown_08617E8D);
- width = (0xd0 - GetStringWidth(1, sUnknown_08617E78, 0)) / 2;
- box_print(0, 1, width, 2, sUnknown_08618158, -1, sUnknown_08617E78);
+ width = GetStringWidth(0, sUnknown_08617E9B, 0);
+ left = (0x78 - width) / 2;
+ box_print(2, 0, left, 3, sUnknown_0861815B, TEXT_SPEED_FF, sUnknown_08617E9B);
+
+ width = GetStringWidth(0, sUnknown_08617E8D, 0);
+ left = (0x78 - width) / 2 + 0x78;
+ box_print(2, 0, left, 3, sUnknown_0861815B, TEXT_SPEED_FF, sUnknown_08617E8D);
+
+ width = GetStringWidth(0, sUnknown_08617E8D, 0);
+ left = (0x70 - width) / 2;
+ box_print(3, 0, left, 0, sUnknown_0861815B, TEXT_SPEED_FF, sUnknown_08617E8D);
+
+ width = GetStringWidth(1, sUnknown_08617E78, 0);
+ left = (0xD0 - width) / 2;
+ box_print(0, 1, left, 2, sUnknown_08618158, TEXT_SPEED_FF, sUnknown_08617E78);
CopyWindowToVram(2, 2);
CopyWindowToVram(3, 2);
CopyWindowToVram(0, 2);
}
-#else
-ASM_DIRECT static void berry_fix_gpu_set(void)
-{
- asm(".syntax unified\n"
- "\tpush {r4-r6,lr}\n"
- "\tmov r6, r8\n"
- "\tpush {r6}\n"
- "\tsub sp, 0x10\n"
- "\tmovs r0, 0x8\n"
- "\tmovs r1, 0\n"
- "\tbl SetGpuReg\n"
- "\tmovs r0, 0xA\n"
- "\tmovs r1, 0\n"
- "\tbl SetGpuReg\n"
- "\tmovs r0, 0x10\n"
- "\tmovs r1, 0\n"
- "\tbl SetGpuReg\n"
- "\tmovs r0, 0x12\n"
- "\tmovs r1, 0\n"
- "\tbl SetGpuReg\n"
- "\tmovs r0, 0x14\n"
- "\tmovs r1, 0\n"
- "\tbl SetGpuReg\n"
- "\tmovs r0, 0x16\n"
- "\tmovs r1, 0\n"
- "\tbl SetGpuReg\n"
- "\tmovs r0, 0x50\n"
- "\tmovs r1, 0\n"
- "\tbl SetGpuReg\n"
- "\tmovs r1, 0\n"
- "\tstr r1, [sp, 0xC]\n"
- "\tldr r4, =0x040000d4\n"
- "\tadd r0, sp, 0xC\n"
- "\tstr r0, [r4]\n"
- "\tmovs r0, 0xC0\n"
- "\tlsls r0, 19\n"
- "\tstr r0, [r4, 0x4]\n"
- "\tldr r0, =0x85006000\n"
- "\tstr r0, [r4, 0x8]\n"
- "\tldr r0, [r4, 0x8]\n"
- "\tstr r1, [sp, 0xC]\n"
- "\tadd r0, sp, 0xC\n"
- "\tstr r0, [r4]\n"
- "\tmovs r0, 0xE0\n"
- "\tlsls r0, 19\n"
- "\tstr r0, [r4, 0x4]\n"
- "\tldr r2, =0x85000100\n"
- "\tstr r2, [r4, 0x8]\n"
- "\tldr r0, [r4, 0x8]\n"
- "\tstr r1, [sp, 0xC]\n"
- "\tadd r0, sp, 0xC\n"
- "\tstr r0, [r4]\n"
- "\tmovs r0, 0xA0\n"
- "\tlsls r0, 19\n"
- "\tstr r0, [r4, 0x4]\n"
- "\tstr r2, [r4, 0x8]\n"
- "\tldr r0, [r4, 0x8]\n"
- "\tmovs r0, 0\n"
- "\tbl ResetBgsAndClearDma3BusyFlags\n"
- "\tldr r1, =gUnknown_08618108\n"
- "\tmovs r0, 0\n"
- "\tmovs r2, 0x2\n"
- "\tbl InitBgsFromTemplates\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0\n"
- "\tmovs r2, 0\n"
- "\tbl ChangeBgX\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0\n"
- "\tmovs r2, 0\n"
- "\tbl ChangeBgY\n"
- "\tmovs r0, 0x1\n"
- "\tmovs r1, 0\n"
- "\tmovs r2, 0\n"
- "\tbl ChangeBgX\n"
- "\tmovs r0, 0x1\n"
- "\tmovs r1, 0\n"
- "\tmovs r2, 0\n"
- "\tbl ChangeBgY\n"
- "\tldr r0, =gUnknown_08618110\n"
- "\tbl InitWindows\n"
- "\tbl DeactivateAllTextPrinters\n"
- "\tldr r0, =sUnknown_08618138\n"
- "\tstr r0, [r4]\n"
- "\tldr r0, =0x050001e0\n"
- "\tstr r0, [r4, 0x4]\n"
- "\tldr r0, =0x84000008\n"
- "\tstr r0, [r4, 0x8]\n"
- "\tldr r0, [r4, 0x8]\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0x40\n"
- "\tbl SetGpuReg\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r1, 0\n"
- "\tbl FillWindowPixelBuffer\n"
- "\tmovs r0, 0x3\n"
- "\tmovs r1, 0\n"
- "\tbl FillWindowPixelBuffer\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0xAA\n"
- "\tbl FillWindowPixelBuffer\n"
- "\tldr r5, =sUnknown_08617E9B\n"
- "\tmovs r0, 0\n"
- "\tadds r1, r5, 0\n"
- "\tmovs r2, 0\n"
- "\tbl GetStringWidth\n"
- "\tadds r1, r0, 0\n"
- "\tmovs r4, 0x78\n"
- "\tsubs r0, r4, r1\n"
- "\tlsrs r1, r0, 31\n"
- "\tadds r0, r1\n"
- "\tasrs r0, 1\n"
- "\tlsls r2, r0, 24\n"
- "\tlsrs r2, 24\n"
- "\tldr r6, =sUnknown_0861815B\n"
- "\tstr r6, [sp]\n"
- "\tmovs r0, 0x1\n"
- "\tnegs r0, r0\n"
- "\tmov r8, r0\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tstr r5, [sp, 0x8]\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r1, 0\n"
- "\tmovs r3, 0x3\n"
- "\tbl box_print\n"
- "\tldr r5, =sUnknown_08617E8D\n"
- "\tmovs r0, 0\n"
- "\tadds r1, r5, 0\n"
- "\tmovs r2, 0\n"
- "\tbl GetStringWidth\n"
- "\tadds r1, r0, 0\n"
- "\tsubs r4, r1\n"
- "\tlsrs r0, r4, 31\n"
- "\tadds r4, r0\n"
- "\tasrs r4, 1\n"
- "\tadds r0, r4, 0\n"
- "\tadds r0, 0x78\n"
- "\tlsls r2, r0, 24\n"
- "\tlsrs r2, 24\n"
- "\tstr r6, [sp]\n"
- "\tmov r0, r8\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tstr r5, [sp, 0x8]\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r1, 0\n"
- "\tmovs r3, 0x3\n"
- "\tbl box_print\n"
- "\tmovs r0, 0\n"
- "\tadds r1, r5, 0\n"
- "\tmovs r2, 0\n"
- "\tbl GetStringWidth\n"
- "\tadds r1, r0, 0\n"
- "\tmovs r0, 0x70\n"
- "\tsubs r0, r1\n"
- "\tlsrs r1, r0, 31\n"
- "\tadds r0, r1\n"
- "\tasrs r0, 1\n"
- "\tlsls r2, r0, 24\n"
- "\tlsrs r2, 24\n"
- "\tstr r6, [sp]\n"
- "\tmov r0, r8\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tstr r5, [sp, 0x8]\n"
- "\tmovs r0, 0x3\n"
- "\tmovs r1, 0\n"
- "\tmovs r3, 0\n"
- "\tbl box_print\n"
- "\tldr r4, =sUnknown_08617E78\n"
- "\tmovs r0, 0x1\n"
- "\tadds r1, r4, 0\n"
- "\tmovs r2, 0\n"
- "\tbl GetStringWidth\n"
- "\tadds r1, r0, 0\n"
- "\tmovs r0, 0xD0\n"
- "\tsubs r0, r1\n"
- "\tlsrs r1, r0, 31\n"
- "\tadds r0, r1\n"
- "\tasrs r0, 1\n"
- "\tlsls r2, r0, 24\n"
- "\tlsrs r2, 24\n"
- "\tldr r0, =sUnknown_08618158\n"
- "\tstr r0, [sp]\n"
- "\tmov r0, r8\n"
- "\tstr r0, [sp, 0x4]\n"
- "\tstr r4, [sp, 0x8]\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0x1\n"
- "\tmovs r3, 0x2\n"
- "\tbl box_print\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r1, 0x2\n"
- "\tbl CopyWindowToVram\n"
- "\tmovs r0, 0x3\n"
- "\tmovs r1, 0x2\n"
- "\tbl CopyWindowToVram\n"
- "\tmovs r0, 0\n"
- "\tmovs r1, 0x2\n"
- "\tbl CopyWindowToVram\n"
- "\tadd sp, 0x10\n"
- "\tpop {r3}\n"
- "\tmov r8, r3\n"
- "\tpop {r4-r6}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.pool\n"
- ".syntax divided");
-}
-#endif
-
static int berry_fix_text_update(int checkval)
{
if (berry_fix_mb_manager->unk1 == checkval)
@@ -522,7 +318,7 @@ static void berry_fix_text_print(int scene)
ShowBg(1);
}
-static void berry_fix_bg_hide()
+static void berry_fix_bg_hide(void)
{
HideBg(0);
HideBg(1);
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
new file mode 100644
index 000000000..f86f350bf
--- /dev/null
+++ b/src/berry_tag_screen.c
@@ -0,0 +1,653 @@
+#include "global.h"
+#include "berry_tag_screen.h"
+#include "berry.h"
+#include "decompress.h"
+#include "field_map_obj.h"
+#include "item_menu.h"
+#include "constants/items.h"
+#include "item.h"
+#include "item_use.h"
+#include "main.h"
+#include "menu.h"
+#include "text.h"
+#include "window.h"
+#include "task.h"
+#include "menu_helpers.h"
+#include "palette.h"
+#include "overworld.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
+#include "bg.h"
+#include "malloc.h"
+#include "scanline_effect.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "item_menu_icons.h"
+#include "decompress.h"
+#include "international_string_util.h"
+
+// There are 4 windows used in berry tag screen.
+enum
+{
+ WIN_BERRY_NAME,
+ WIN_SIZE_FIRM,
+ WIN_DESC,
+ WIN_BERRY_TAG
+};
+
+struct BerryTagScreenStruct
+{
+ u16 tilemapBuffers[3][0x400];
+ u16 berryId;
+ u8 berrySpriteId;
+ u8 flavorCircleIds[FLAVOR_COUNT];
+ u16 gfxState;
+};
+
+// EWRAM vars
+static EWRAM_DATA struct BerryTagScreenStruct *sBerryTag = NULL;
+
+// const rom data
+static const struct BgTemplate sBackgroundTemplates[] =
+{
+ {
+ .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
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 28,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+static const u16 sFontPalette[] = INCBIN_U16("graphics/interface/berry_tag_screen.gbapal");
+
+static const u8 sTextColors[2][3] =
+{
+ {0, 2, 3},
+ {15, 14, 13}
+};
+
+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
+ DUMMY_WIN_TEMPLATE
+};
+
+static const u8 *const sBerryFirmnessStrings[] =
+{
+ gBerryFirmnessString_VerySoft,
+ gBerryFirmnessString_Soft,
+ gBerryFirmnessString_Hard,
+ gBerryFirmnessString_VeryHard,
+ gBerryFirmnessString_SuperHard
+};
+
+// this file's functions
+static void CB2_InitBerryTagScreen(void);
+static void HandleInitBackgrounds(void);
+static void HandleInitWindows(void);
+static void AddBerryTagTextToBg0(void);
+static void PrintAllBerryData(void);
+static void CreateBerrySprite(void);
+static void CreateFlavorCircleSprites(void);
+static void SetFlavorCirclesVisiblity(void);
+static void PrintBerryNumberAndName(void);
+static void PrintBerrySize(void);
+static void PrintBerryFirmness(void);
+static void PrintBerryDescription1(void);
+static void PrintBerryDescription2(void);
+static bool8 InitBerryTagScreen(void);
+static bool8 LoadBerryTagGfx(void);
+static void Task_HandleInput(u8 taskId);
+static void Task_CloseBerryTagScreen(u8 taskId);
+static void Task_DisplayAnotherBerry(u8 taskId);
+static void TryChangeDisplayedBerry(u8 taskId, s8 toMove);
+static void HandleBagCursorPositionChange(s8 toMove);
+
+// code
+void DoBerryTagScreen(void)
+{
+ sBerryTag = AllocZeroed(sizeof(*sBerryTag));
+ sBerryTag->berryId = ItemIdToBerryType(gSpecialVar_ItemId);
+ SetMainCallback2(CB2_InitBerryTagScreen);
+}
+
+static void CB2_BerryTagScreen(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+static void VblankCB(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_InitBerryTagScreen(void)
+{
+ while (1)
+ {
+ if (sub_81221EC() == TRUE)
+ break;
+ if (InitBerryTagScreen() == TRUE)
+ break;
+ if (sub_81221AC() == TRUE)
+ break;
+ }
+}
+
+static bool8 InitBerryTagScreen(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankHBlankCallbacksToNull();
+ ResetVramOamAndBgCntRegs();
+ clear_scheduled_bg_copies_to_vram();
+ gMain.state++;
+ break;
+ case 1:
+ ScanlineEffect_Stop();
+ gMain.state++;
+ break;
+ case 2:
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = 1;
+ gMain.state++;
+ break;
+ case 3:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 5:
+ if (!sub_81221AC())
+ ResetTasks();
+ gMain.state++;
+ break;
+ case 6:
+ HandleInitBackgrounds();
+ sBerryTag->gfxState = 0;
+ gMain.state++;
+ break;
+ case 7:
+ if (LoadBerryTagGfx())
+ gMain.state++;
+ break;
+ case 8:
+ HandleInitWindows();
+ gMain.state++;
+ break;
+ case 9:
+ AddBerryTagTextToBg0();
+ gMain.state++;
+ break;
+ case 10:
+ PrintAllBerryData();
+ gMain.state++;
+ break;
+ case 11:
+ CreateBerrySprite();
+ gMain.state++;
+ break;
+ case 12:
+ CreateFlavorCircleSprites();
+ SetFlavorCirclesVisiblity();
+ gMain.state++;
+ break;
+ case 13:
+ CreateTask(Task_HandleInput, 0);
+ gMain.state++;
+ break;
+ case 14:
+ BlendPalettes(-1, 0x10, 0);
+ gMain.state++;
+ break;
+ case 15:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gPaletteFade.bufferTransferDisabled = 0;
+ gMain.state++;
+ break;
+ default: // done
+ SetVBlankCallback(VblankCB);
+ SetMainCallback2(CB2_BerryTagScreen);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void HandleInitBackgrounds(void)
+{
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sBackgroundTemplates, ARRAY_COUNT(sBackgroundTemplates));
+ SetBgTilemapBuffer(2, sBerryTag->tilemapBuffers[0]);
+ SetBgTilemapBuffer(3, sBerryTag->tilemapBuffers[1]);
+ ResetAllBgsCoordinates();
+ schedule_bg_copy_tilemap_to_vram(2);
+ schedule_bg_copy_tilemap_to_vram(3);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+}
+
+static bool8 LoadBerryTagGfx(void)
+{
+ u16 i;
+
+ switch (sBerryTag->gfxState)
+ {
+ case 0:
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(2, gUnknown_08D9BB44, 0, 0, 0);
+ sBerryTag->gfxState++;
+ break;
+ case 1:
+ if (free_temp_tile_data_buffers_if_possible() != TRUE)
+ {
+ LZDecompressWram(gUnknown_08D9BF98, sBerryTag->tilemapBuffers[0]);
+ sBerryTag->gfxState++;
+ }
+ break;
+ case 2:
+ LZDecompressWram(gUnknown_08D9C13C, sBerryTag->tilemapBuffers[2]);
+ sBerryTag->gfxState++;
+ break;
+ case 3:
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ for (i = 0; i < ARRAY_COUNT(sBerryTag->tilemapBuffers[1]); i++)
+ sBerryTag->tilemapBuffers[1][i] = 0x4042;
+ }
+ else
+ {
+ for (i = 0; i < ARRAY_COUNT(sBerryTag->tilemapBuffers[1]); i++)
+ sBerryTag->tilemapBuffers[1][i] = 0x5042;
+ }
+ sBerryTag->gfxState++;
+ break;
+ case 4:
+ LoadCompressedPalette(gUnknown_08D9BEF0, 0, 0xC0);
+ sBerryTag->gfxState++;
+ break;
+ case 5:
+ LoadCompressedObjectPic(&gUnknown_0857FDEC);
+ sBerryTag->gfxState++;
+ break;
+ default:
+ LoadCompressedObjectPalette(&gUnknown_0857FDF4);
+ return TRUE; // done
+ }
+
+ return FALSE;
+}
+
+static void HandleInitWindows(void)
+{
+ u16 i;
+
+ InitWindows(sWindowTemplates);
+ DeactivateAllTextPrinters();
+ LoadPalette(sFontPalette, 0xF0, 0x20);
+ for (i = 0; i < ARRAY_COUNT(sWindowTemplates) - 1; i++)
+ PutWindowTilemap(i);
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+}
+
+static void PrintTextInBerryTagScreen(u8 windowId, const u8 *text, u8 x, u8 y, s32 speed, u8 colorStructId)
+{
+ AddTextPrinterParameterized2(windowId, 1, x, y, 0, 0, sTextColors[colorStructId], speed, text);
+}
+
+static void AddBerryTagTextToBg0(void)
+{
+ memcpy(GetBgTilemapBuffer(0), sBerryTag->tilemapBuffers[2], sizeof(sBerryTag->tilemapBuffers[2]));
+ FillWindowPixelBuffer(WIN_BERRY_TAG, 0xFF);
+ PrintTextInBerryTagScreen(WIN_BERRY_TAG, gText_BerryTag, GetStringCenterAlignXOffset(1, gText_BerryTag, 0x40), 1, 0, 1);
+ PutWindowTilemap(WIN_BERRY_TAG);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+static void PrintAllBerryData(void)
+{
+ PrintBerryNumberAndName();
+ PrintBerrySize();
+ PrintBerryFirmness();
+ PrintBerryDescription1();
+ PrintBerryDescription2();
+}
+
+static void PrintBerryNumberAndName(void)
+{
+ const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
+ ConvertIntToDecimalStringN(gStringVar1, sBerryTag->berryId, 2, 2);
+ StringCopy(gStringVar2, berry->name);
+ StringExpandPlaceholders(gStringVar4, gText_UnkF908Var1Var2);
+ PrintTextInBerryTagScreen(WIN_BERRY_NAME, gStringVar4, 0, 1, 0, 0);
+}
+
+static void PrintBerrySize(void)
+{
+ const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
+ PrintTextOnWindow(WIN_SIZE_FIRM, 1, gText_SizeSlash, 0, 1, TEXT_SPEED_FF, NULL);
+ if (berry->size != 0)
+ {
+ u32 inches, fraction;
+
+ inches = 1000 * berry->size / 254;
+ if (inches % 10 > 4)
+ inches += 10;
+ fraction = (inches % 100) / 10;
+ inches /= 100;
+
+ ConvertIntToDecimalStringN(gStringVar1, inches, 0, 2);
+ ConvertIntToDecimalStringN(gStringVar2, fraction, 0, 2);
+ StringExpandPlaceholders(gStringVar4, gText_Var1DotVar2);
+ PrintTextOnWindow(WIN_SIZE_FIRM, 1, gStringVar4, 0x28, 1, 0, NULL);
+ }
+ else
+ {
+ PrintTextOnWindow(WIN_SIZE_FIRM, 1, gText_ThreeMarks, 0x28, 1, 0, NULL);
+ }
+}
+
+static void PrintBerryFirmness(void)
+{
+ const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
+ PrintTextOnWindow(WIN_SIZE_FIRM, 1, gText_FirmSlash, 0, 0x11, TEXT_SPEED_FF, NULL);
+ if (berry->firmness != 0)
+ PrintTextOnWindow(WIN_SIZE_FIRM, 1, sBerryFirmnessStrings[berry->firmness - 1], 0x28, 0x11, 0, NULL);
+ else
+ PrintTextOnWindow(WIN_SIZE_FIRM, 1, gText_ThreeMarks, 0x28, 0x11, 0, NULL);
+}
+
+static void PrintBerryDescription1(void)
+{
+ const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
+ PrintTextOnWindow(WIN_DESC, 1, berry->description1, 0, 1, 0, NULL);
+}
+
+static void PrintBerryDescription2(void)
+{
+ const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
+ PrintTextOnWindow(WIN_DESC, 1, berry->description2, 0, 0x11, 0, NULL);
+}
+
+static void CreateBerrySprite(void)
+{
+ sBerryTag->berrySpriteId = CreateBerryTagSprite(sBerryTag->berryId - 1, 56, 64);
+}
+
+static void DestroyBerrySprite(void)
+{
+ DestroySprite(&gSprites[sBerryTag->berrySpriteId]);
+ FreeBerryTagSpritePalette();
+}
+
+static void CreateFlavorCircleSprites(void)
+{
+ sBerryTag->flavorCircleIds[FLAVOR_SPICY] = CreateBerryFlavorCircleSprite(64);
+ sBerryTag->flavorCircleIds[FLAVOR_DRY] = CreateBerryFlavorCircleSprite(104);
+ sBerryTag->flavorCircleIds[FLAVOR_SWEET] = CreateBerryFlavorCircleSprite(144);
+ sBerryTag->flavorCircleIds[FLAVOR_BITTER] = CreateBerryFlavorCircleSprite(184);
+ sBerryTag->flavorCircleIds[FLAVOR_SOUR] = CreateBerryFlavorCircleSprite(224);
+}
+
+static void SetFlavorCirclesVisiblity(void)
+{
+ const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
+
+ if (berry->spicy)
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_SPICY]].invisible = 0;
+ else
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_SPICY]].invisible = 1;
+
+ if (berry->dry)
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_DRY]].invisible = 0;
+ else
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_DRY]].invisible = 1;
+
+ if (berry->sweet)
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_SWEET]].invisible = 0;
+ else
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_SWEET]].invisible = 1;
+
+ if (berry->bitter)
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_BITTER]].invisible = 0;
+ else
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_BITTER]].invisible = 1;
+
+ if (berry->sour)
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_SOUR]].invisible = 0;
+ else
+ gSprites[sBerryTag->flavorCircleIds[FLAVOR_SOUR]].invisible = 1;
+}
+
+static void DestroyFlavorCircleSprites(void)
+{
+ u16 i;
+
+ for (i = 0; i < FLAVOR_COUNT; i++)
+ DestroySprite(&gSprites[sBerryTag->flavorCircleIds[i]]);
+}
+
+static void PrepareToCloseBerryTagScreen(u8 taskId)
+{
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_CloseBerryTagScreen;
+}
+
+static void Task_CloseBerryTagScreen(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyBerrySprite();
+ DestroyFlavorCircleSprites();
+ Free(sBerryTag);
+ FreeAllWindowBuffers();
+ SetMainCallback2(bag_menu_mail_related);
+ DestroyTask(taskId);
+ }
+}
+
+static void Task_HandleInput(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ u16 arrowKeys = gMain.newAndRepeatedKeys & DPAD_ANY;
+ if (arrowKeys == DPAD_UP)
+ TryChangeDisplayedBerry(taskId, -1);
+ else if (arrowKeys == DPAD_DOWN)
+ TryChangeDisplayedBerry(taskId, 1);
+ else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ PrepareToCloseBerryTagScreen(taskId);
+ }
+}
+
+static void TryChangeDisplayedBerry(u8 taskId, s8 toMove)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 currPocketPosition = gUnknown_0203CE58.unk12[3] + gUnknown_0203CE58.unk8[3];
+ u32 newPocketPosition = currPocketPosition + toMove;
+ if (newPocketPosition < 46 && BagGetItemIdByPocketPosition(BAG_BERRIES, newPocketPosition) != 0)
+ {
+ if (toMove < 0)
+ data[1] = 2;
+ else
+ data[1] = 1;
+
+ data[0] = 0;
+ PlaySE(SE_SELECT);
+ HandleBagCursorPositionChange(toMove);
+ gTasks[taskId].func = Task_DisplayAnotherBerry;
+ }
+}
+
+static void HandleBagCursorPositionChange(s8 toMove)
+{
+ u16 *scrollPos = &gUnknown_0203CE58.unk12[3];
+ u16 *cursorPos = &gUnknown_0203CE58.unk8[3];
+ if (toMove > 0)
+ {
+ if (*cursorPos < 4 || BagGetItemIdByPocketPosition(BAG_BERRIES, *scrollPos + 8) == 0)
+ *cursorPos += toMove;
+ else
+ *scrollPos += toMove;
+ }
+ else
+ {
+ if (*cursorPos > 3 || *scrollPos == 0)
+ *cursorPos += toMove;
+ else
+ *scrollPos += toMove;
+ }
+
+ sBerryTag->berryId = ItemIdToBerryType(BagGetItemIdByPocketPosition(BAG_BERRIES, *scrollPos + *cursorPos));
+}
+
+static void Task_DisplayAnotherBerry(u8 taskId)
+{
+ u16 i;
+ s16 posY;
+ s16 *data = gTasks[taskId].data;
+ data[0] += 0x10;
+ data[0] &= 0xFF;
+
+ if (data[1] == 1)
+ {
+ switch (data[0])
+ {
+ case 0x30:
+ FillWindowPixelBuffer(0, 0);
+ break;
+ case 0x40:
+ PrintBerryNumberAndName();
+ break;
+ case 0x50:
+ DestroyBerrySprite();
+ CreateBerrySprite();
+ break;
+ case 0x60:
+ FillWindowPixelBuffer(1, 0);
+ break;
+ case 0x70:
+ PrintBerrySize();
+ break;
+ case 0x80:
+ PrintBerryFirmness();
+ break;
+ case 0x90:
+ SetFlavorCirclesVisiblity();
+ break;
+ case 0xA0:
+ FillWindowPixelBuffer(2, 0);
+ break;
+ case 0xB0:
+ PrintBerryDescription1();
+ break;
+ case 0xC0:
+ PrintBerryDescription2();
+ break;
+ }
+ }
+ else
+ {
+ switch (data[0])
+ {
+ case 0x30:
+ FillWindowPixelBuffer(2, 0);
+ break;
+ case 0x40:
+ PrintBerryDescription2();
+ break;
+ case 0x50:
+ PrintBerryDescription1();
+ break;
+ case 0x60:
+ SetFlavorCirclesVisiblity();
+ break;
+ case 0x70:
+ FillWindowPixelBuffer(1, 0);
+ break;
+ case 0x80:
+ PrintBerryFirmness();
+ break;
+ case 0x90:
+ PrintBerrySize();
+ break;
+ case 0xA0:
+ DestroyBerrySprite();
+ CreateBerrySprite();
+ break;
+ case 0xB0:
+ FillWindowPixelBuffer(0, 0);
+ break;
+ case 0xC0:
+ PrintBerryNumberAndName();
+ break;
+ }
+ }
+
+ if (data[1] == 1)
+ posY = -data[0];
+ else
+ posY = data[0];
+
+ gSprites[sBerryTag->berrySpriteId].pos2.y = posY;
+ for (i = 0; i < FLAVOR_COUNT; i++)
+ gSprites[sBerryTag->flavorCircleIds[i]].pos2.y = posY;
+
+ ChangeBgY(1, 0x1000, data[1]);
+ ChangeBgY(2, 0x1000, data[1]);
+
+ if (data[0] == 0)
+ gTasks[taskId].func = Task_HandleInput;
+}
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index d30599607..98468caa2 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "constants/abilities.h"
#include "battle.h"
+#include "battle_setup.h"
#include "constants/hold_effects.h"
#include "event_data.h"
#include "item.h"
@@ -10,15 +11,6 @@
#include "constants/moves.h"
#include "constants/battle_move_effects.h"
-extern u32 gBattleTypeFlags;
-extern struct BattlePokemon gBattleMons[4];
-extern u16 gCurrentMove;
-extern u8 gCritMultiplier;
-extern u16 gBattleWeather;
-extern struct BattleEnigmaBerry gEnigmaBerries[];
-extern u16 gBattleMovePower;
-extern u16 gTrainerBattleOpponent_A;
-
bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 bank);
extern const struct BattleMove gBattleMoves[];
@@ -149,35 +141,35 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION)
defense /= 2;
- if (type < TYPE_MYSTERY) // is physical
+ if (IS_MOVE_PHYSICAL(type))
{
if (gCritMultiplier == 2)
{
- if (attacker->statStages[STAT_STAGE_ATK] > 6)
- APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK)
+ if (attacker->statStages[STAT_ATK] > 6)
+ APPLY_STAT_MOD(damage, attacker, attack, STAT_ATK)
else
damage = attack;
}
else
- APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK)
+ APPLY_STAT_MOD(damage, attacker, attack, STAT_ATK)
damage = damage * gBattleMovePower;
damage *= (2 * attacker->level / 5 + 2);
if (gCritMultiplier == 2)
{
- if (defender->statStages[STAT_STAGE_DEF] < 6)
- APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF)
+ if (defender->statStages[STAT_DEF] < 6)
+ APPLY_STAT_MOD(damageHelper, defender, defense, STAT_DEF)
else
damageHelper = defense;
}
else
- APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF)
+ APPLY_STAT_MOD(damageHelper, defender, defense, STAT_DEF)
damage = damage / damageHelper;
damage /= 50;
- if ((attacker->status1 & STATUS_BURN) && attacker->ability != ABILITY_GUTS)
+ if ((attacker->status1 & STATUS1_BURN) && attacker->ability != ABILITY_GUTS)
damage /= 2;
if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1)
@@ -199,30 +191,30 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (type == TYPE_MYSTERY)
damage = 0; // is ??? type. does 0 damage.
- if (type > TYPE_MYSTERY) // is special?
+ if (IS_MOVE_SPECIAL(type))
{
if (gCritMultiplier == 2)
{
- if (attacker->statStages[STAT_STAGE_SPATK] > 6)
- APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK)
+ if (attacker->statStages[STAT_SPATK] > 6)
+ APPLY_STAT_MOD(damage, attacker, spAttack, STAT_SPATK)
else
damage = spAttack;
}
else
- APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK)
+ APPLY_STAT_MOD(damage, attacker, spAttack, STAT_SPATK)
damage = damage * gBattleMovePower;
damage *= (2 * attacker->level / 5 + 2);
if (gCritMultiplier == 2)
{
- if (defender->statStages[STAT_STAGE_SPDEF] < 6)
- APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF)
+ if (defender->statStages[STAT_SPDEF] < 6)
+ APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_SPDEF)
else
damageHelper = spDefense;
}
else
- APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF)
+ APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_SPDEF)
damage = (damage / damageHelper);
damage /= 50;
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 6d6a1545b..ca2037d2f 100644
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -14,8 +14,6 @@
extern u8 gText_ClearAllSaveData[];
extern u8 gText_ClearingData[];
-extern u16 gUnknown_0860F074[];
-
static void Task_DoClearSaveDataScreenYesNo(u8);
static void Task_ClearSaveDataScreenYesNoChoice(u8);
static void Task_ClearSaveData(u8);
diff --git a/src/coins.c b/src/coins.c
index 50c31cac0..12e0bd4ef 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -4,7 +4,6 @@
#include "window.h"
#include "strings.h"
#include "string_util.h"
-#include "new_menu_helpers.h"
#include "menu.h"
#include "international_string_util.h"
diff --git a/src/daycare.c b/src/daycare.c
index 59ee562bd..89c0a48d8 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -43,7 +43,7 @@ extern u16 ItemIdToBattleMoveId(u16);
extern s32 ListMenuHandleInputGetItemId(u8);
extern void sub_81AE6C8(u8, u16*, u16*);
extern void sub_819746C(u8, bool8);
-extern void sub_81973FC(u8, bool8);
+extern void NewMenuHelpers_DrawStdWindowFrame(u8, bool8);
extern void sub_81B9328(void);
extern void sub_81AF078(u32, bool8, struct ListMenu *);
extern void c2_exit_to_overworld_2_switch(void);
@@ -413,7 +413,7 @@ static u16 GetEggSpecies(u16 species)
{
for (k = 0; k < EVOS_PER_MON; k++)
{
- if (gEvolutionTable[j].evolutions[k].targetSpecies == species)
+ if (gEvolutionTable[j][k].targetSpecies == species)
{
species = j;
found = TRUE;
@@ -694,7 +694,7 @@ static void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, stru
{
for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++)
{
- if (sHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j))
+ if (sHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01_FOCUS_PUNCH + j) && CanMonLearnTMHM(egg, j))
{
if (GiveMoveToMon(egg, sHatchedEggFatherMoves[i]) == 0xffff)
DeleteFirstMoveAndGiveMoveToMon(egg, sHatchedEggFatherMoves[i]);
@@ -1212,7 +1212,7 @@ static void DaycareAddTextPrinter(u8 windowId, const u8 *text, u32 x, u32 y)
gTextFlags.flag_1 = 0;
printer.letterSpacing = 0;
printer.lineSpacing = 1;
- printer.fontColor_h = 2;
+ printer.fgColor = 2;
printer.bgColor = 1;
printer.shadowColor = 3;
@@ -1296,7 +1296,7 @@ void ShowDaycareLevelMenu(void)
u8 daycareMenuTaskId;
windowId = AddWindow(&sDaycareLevelMenuWindowTemplate);
- sub_81973FC(windowId, FALSE);
+ NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE);
menuTemplate = sDaycareListMenuLevelTemplate;
menuTemplate.unk_10 = windowId;
diff --git a/src/decoration.c b/src/decoration.c
index 753854bc0..8eb875560 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -20,7 +20,7 @@
#include "field_map_obj.h"
#include "list_menu.h"
#include "menu_helpers.h"
-#include "new_menu_helpers.h"
+#include "menu.h"
#include "menu_indicators.h"
#include "sound.h"
#include "event_scripts.h"
@@ -727,7 +727,7 @@ void sub_81271CC(u8 taskId)
{
sub_8126A58(1);
sub_8126A88();
- sub_81973C4(0, 0);
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
sub_8126C08();
gTasks[taskId].func = sub_8126B80;
}
@@ -2013,9 +2013,9 @@ u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
{
return MAX_SPRITES;
}
- LZDecompressWram(GetDecorationIconPicOrPalette(decor, 0), gUnknown_0203CEBC);
- CopyItemIconPicTo4x4Buffer(gUnknown_0203CEBC, gUnknown_0203CEC0);
- sheet.data = gUnknown_0203CEC0;
+ LZDecompressWram(GetDecorationIconPicOrPalette(decor, 0), gItemIconDecompressionBuffer);
+ CopyItemIconPicTo4x4Buffer(gItemIconDecompressionBuffer, gItemIcon4x4Buffer);
+ sheet.data = gItemIcon4x4Buffer;
sheet.size = 0x200;
sheet.tag = tilesTag;
LoadSpriteSheet(&sheet);
@@ -2023,7 +2023,7 @@ u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
palette.tag = paletteTag;
LoadCompressedObjectPalette(&palette);
template = malloc(sizeof(struct SpriteTemplate));
- *template = gUnknown_08614FF4;
+ *template = gItemIconSpriteTemplate;
template->tileTag = tilesTag;
template->paletteTag = paletteTag;
spriteId = CreateSprite(template, 0, 0, 0);
@@ -2712,7 +2712,7 @@ void sub_812A334(void)
u8 taskId;
pal_fill_black();
- sub_81973C4(0, 1);
+ NewMenuHelpers_DrawDialogueFrame(0, 1);
sub_8126ABC();
taskId = CreateTask(sub_812A2C4, 8);
gTasks[taskId].data[2] = 0;
diff --git a/src/diploma.c b/src/diploma.c
index 89447c5ba..289e0e043 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -17,7 +17,7 @@ extern int decompress_and_copy_tile_data_to_vram(u8 bg_id, void *src, int size,
extern bool8 free_temp_tile_data_buffers_if_possible(void);
extern void sub_80861E8(void); // rom4
extern bool16 sub_80C0944(void);
-extern void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, u8 *str);
+extern void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, u8 *color, s8 speed, u8 *str);
extern u16 gUnknown_0860F074[];
@@ -208,12 +208,7 @@ static void InitDiplomaWindow(void)
static void PrintDiplomaText(u8 *text, u8 var1, u8 var2)
{
- struct TextColor color =
- {
- .fgColor = 0,
- .bgColor = 2,
- .shadowColor = 3,
- };
+ u8 color[3] = {0, 2, 3};
- AddTextPrinterParameterized2(0, 1, var1, var2, 0, 0, &color, -1, text);
+ AddTextPrinterParameterized2(0, 1, var1, var2, 0, 0, color, -1, text);
}
diff --git a/src/dma3_manager.c b/src/dma3_manager.c
index 3832c3663..28df9d932 100644
--- a/src/dma3_manager.c
+++ b/src/dma3_manager.c
@@ -204,7 +204,7 @@ s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode)
return -1; // no free DMA request was found
}
-int CheckForSpaceForDma3Request(s16 index)
+s16 CheckForSpaceForDma3Request(s16 index)
{
int i = 0;
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index e262a8281..fbbc8428a 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -41,7 +41,7 @@ struct EggHatchData
u8 unused_9;
u8 unused_A;
u16 species;
- struct TextColor textColor;
+ u8 textColor[3];
};
extern struct SpriteTemplate gUnknown_0202499C;
@@ -857,10 +857,10 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8
static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed)
{
FillWindowPixelBuffer(windowId, 0xFF);
- sEggHatchData->textColor.fgColor = 0;
- sEggHatchData->textColor.bgColor = 5;
- sEggHatchData->textColor.shadowColor = 6;
- AddTextPrinterParameterized2(windowId, 1, x, y, 0, 0, &sEggHatchData->textColor, speed, string);
+ sEggHatchData->textColor[0] = 0;
+ sEggHatchData->textColor[1] = 5;
+ sEggHatchData->textColor[2] = 6;
+ AddTextPrinterParameterized2(windowId, 1, x, y, 0, 0, sEggHatchData->textColor, speed, string);
}
u8 GetEggStepsToSubtract(void)
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 84ac7cc32..79eea0ed6 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -21,7 +21,7 @@
#include "constants/songs.h"
#include "overworld.h"
#include "battle_message.h"
-#include "battle_string_ids.h"
+#include "constants/battle_string_ids.h"
#include "gpu_regs.h"
#include "bg.h"
#include "link.h"
@@ -48,13 +48,11 @@ extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG3_X;
extern u16 gBattle_BG3_Y;
-extern u8 gBattleTerrain;
extern struct SpriteTemplate gUnknown_0202499C;
extern bool8 gAffineAnimsDisabled;
extern u16 gMoveToLearn;
extern const u8 gSpeciesNames[][11];
-extern u8 gBattleCommunication[];
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
#define sEvoGraphicsTaskID gBattleCommunication[2]
@@ -110,7 +108,7 @@ static const u16 sUnknown_085B5884[] = INCBIN_U16("graphics/evolution_scene/tran
static const u8 Text_ShedinjaJapaneseName[] = _("ヌケニン");
-static const u8 sUnknown_085B58C9[][4] =
+static const u8 sUnknown_085B58C9[][4] =
{
{ 0x00, 0x0C, 0x01, 0x06 },
{ 0x0D, 0x24, 0x05, 0x02 },
@@ -572,16 +570,16 @@ static void CB2_TradeEvolutionSceneUpdate(void)
static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
{
u32 data = 0;
- if (gEvolutionTable[preEvoSpecies].evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6)
+ if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6)
{
s32 i;
- struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount];
- const struct EvolutionData* evoTable;
- const struct EvolutionData* evos;
+ struct Pokemon* shedinja = &gPlayerParty[gPlayerPartyCount];
+ const struct Evolution *evos;
+ const struct Evolution *evos2;
CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon));
- SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, (&gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies));
- SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, (gSpeciesNames[gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies]));
+ SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, (&gEvolutionTable[preEvoSpecies][1].targetSpecies));
+ SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, (gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, (&data));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, (&data));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_10, (&data));
@@ -599,15 +597,16 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
CalculatePlayerPartyCount();
// can't match it otherwise, ehh
- evoTable = gEvolutionTable;
- evos = evoTable + preEvoSpecies;
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos->evolutions[1].targetSpecies), FLAG_SET_SEEN);
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos->evolutions[1].targetSpecies), FLAG_SET_CAUGHT);
+ evos2 = gEvolutionTable[0];
+ evos = evos2 + EVOS_PER_MON * preEvoSpecies;
- if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA
- && GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos[1].targetSpecies), FLAG_SET_SEEN);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(evos[1].targetSpecies), FLAG_SET_CAUGHT);
+
+ if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA
+ && GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE
&& GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK)
- SetMonData(Shedinja, MON_DATA_NICKNAME, Text_ShedinjaJapaneseName);
+ SetMonData(shedinja, MON_DATA_NICKNAME, Text_ShedinjaJapaneseName);
}
}
diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c
index 1e0e9b66b..de26cb034 100755
--- a/src/field_map_obj_helpers.c
+++ b/src/field_map_obj_helpers.c
@@ -549,14 +549,14 @@ bool32 sub_8097E50(struct MapObject *mapObject, struct Sprite *sprite)
{
if (firstFreeSlot == 16 && gUnknown_020375B8[i] == 0)
firstFreeSlot = i;
-
+
if (gUnknown_020375B8[i] == mapObject->localId)
{
found = TRUE;
break;
}
}
-
+
if (!found && firstFreeSlot != 16)
{
gUnknown_020375B8[firstFreeSlot] = mapObject->localId;
@@ -564,13 +564,13 @@ bool32 sub_8097E50(struct MapObject *mapObject, struct Sprite *sprite)
ableToStore = TRUE; // the nonmatching problem is that ableToStore == TRUE isnt being merged with the above ableToStore = TRUE assignment.
}
}
-
+
if (ableToStore == TRUE)
{
mapObject->mapobj_bit_12 = TRUE;
mapObject->mapobj_bit_9 = TRUE;
}
-
+
sprite->data[2] = 1;
return TRUE;
}
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 9570040eb..8ca291e33 100755
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -1,9 +1,10 @@
#include "global.h"
-#include "new_menu_helpers.h"
+#include "menu.h"
#include "string.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
+#include "battle_frontier_1.h"
EWRAM_DATA u8 gUnknown_020375BC = 0;
@@ -30,7 +31,7 @@ void sub_8098154(u8 taskId)
task->data[0]++;
break;
case 1:
- sub_81973C4(0, 1);
+ NewMenuHelpers_DrawDialogueFrame(0, 1);
task->data[0]++;
break;
case 2:
@@ -143,7 +144,7 @@ bool8 IsFieldMessageBoxHidden(void)
void sub_8098358(void)
{
task_del_textbox();
- sub_81973FC(0, 1);
+ NewMenuHelpers_DrawStdWindowFrame(0, 1);
gUnknown_020375BC = 0;
}
diff --git a/src/field_poison.c b/src/field_poison.c
index b83788210..98819c450 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -42,7 +42,7 @@ static bool32 sub_80F958C(void)
static void sub_80F95C0(u8 partyIdx)
{
struct Pokemon *pokemon = gPlayerParty + partyIdx;
- unsigned int status = STATUS_NONE;
+ unsigned int status = STATUS1_NONE;
AdjustFriendship(pokemon, 0x07);
SetMonData(pokemon, MON_DATA_STATUS, &status);
GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index e7caf9316..6dda6ad9c 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -25,7 +25,7 @@
#include "random.h"
#include "event_data.h"
#include "overworld.h"
-#include "new_menu_helpers.h"
+#include "menu.h"
struct HallofFameMon
{
@@ -81,7 +81,7 @@ extern const u8 gText_MainMenuTime[];
extern const u8 gContestConfetti_Gfx[];
extern const u8 gContestConfetti_Pal[];
-extern void sub_81973C4(u8, u8);
+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);
@@ -538,7 +538,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId)
}
*lastSavedTeam = *sHofMonPtr;
- sub_81973C4(0, 0);
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_Hof_TrySaveData;
@@ -745,7 +745,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId)
{
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
HallOfFame_PrintPlayerInfo(1, 2);
- sub_81973C4(0, 0);
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_LeagueChamp, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_Hof_ExitOnKeyPressed;
@@ -1114,7 +1114,7 @@ static void Task_HofPC_HandleExit(u8 taskId)
static void Task_HofPC_PrintDataIsCorrupted(u8 taskId)
{
sub_8198180(gText_UnkCtrlF800Exit, 8, 1);
- sub_81973C4(0, 0);
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
AddTextPrinterParameterized(0, 1, gText_HOFCorrupted, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
gTasks[taskId].func = Task_HofPC_ExitOnButtonPress;
diff --git a/src/item_icon.c b/src/item_icon.c
new file mode 100644
index 000000000..4aaad9c31
--- /dev/null
+++ b/src/item_icon.c
@@ -0,0 +1,169 @@
+#include "global.h"
+#include "item_icon.h"
+#include "malloc.h"
+#include "sprite.h"
+#include "decompress.h"
+#include "constants/items.h"
+
+// EWRAM vars
+EWRAM_DATA void *gItemIconDecompressionBuffer = NULL;
+EWRAM_DATA void *gItemIcon4x4Buffer = NULL;
+
+// const rom data
+extern const void *const gItemIconTable[][2]; // todo: move to C file
+
+static const struct OamData sOamData_ItemIcon =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 2,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_ItemIcon[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_ItemIcon[] =
+{
+ sSpriteAnim_ItemIcon
+};
+
+const struct SpriteTemplate gItemIconSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &sOamData_ItemIcon,
+ .anims = sSpriteAnimTable_ItemIcon,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+// code
+bool8 AllocItemIconTemporaryBuffers(void)
+{
+ gItemIconDecompressionBuffer = gItemIconDecompressionBuffer; // needed to match
+ gItemIconDecompressionBuffer = Alloc(0x120);
+ if (gItemIconDecompressionBuffer == NULL)
+ return FALSE;
+
+ gItemIcon4x4Buffer = gItemIcon4x4Buffer; // needed to match
+ gItemIcon4x4Buffer = AllocZeroed(0x200);
+ if (gItemIcon4x4Buffer == NULL)
+ {
+ Free(gItemIconDecompressionBuffer);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void FreeItemIconTemporaryBuffers(void)
+{
+ Free(gItemIconDecompressionBuffer);
+ Free(gItemIcon4x4Buffer);
+}
+
+void CopyItemIconPicTo4x4Buffer(const void *src, void *dest)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ CpuCopy16(src + i * 96, dest + i * 128, 0x60);
+}
+
+u8 AddItemIconSprite(u16 tilesTag, u16 paletteTag, u16 itemId)
+{
+ if (!AllocItemIconTemporaryBuffers())
+ {
+ return MAX_SPRITES;
+ }
+ else
+ {
+ u8 spriteId;
+ struct SpriteSheet spriteSheet;
+ struct CompressedSpritePalette spritePalette;
+ struct SpriteTemplate *spriteTemplate;
+
+ LZDecompressWram(GetItemIconPicOrPalette(itemId, 0), gItemIconDecompressionBuffer);
+ CopyItemIconPicTo4x4Buffer(gItemIconDecompressionBuffer, gItemIcon4x4Buffer);
+ spriteSheet.data = gItemIcon4x4Buffer;
+ spriteSheet.size = 0x200;
+ spriteSheet.tag = tilesTag;
+ LoadSpriteSheet(&spriteSheet);
+
+ spritePalette.data = GetItemIconPicOrPalette(itemId, 1);
+ spritePalette.tag = paletteTag;
+ LoadCompressedObjectPalette(&spritePalette);
+
+ spriteTemplate = Alloc(sizeof(*spriteTemplate));
+ CpuCopy16(&gItemIconSpriteTemplate, spriteTemplate, sizeof(*spriteTemplate));
+ spriteTemplate->tileTag = tilesTag;
+ spriteTemplate->paletteTag = paletteTag;
+ spriteId = CreateSprite(spriteTemplate, 0, 0, 0);
+
+ FreeItemIconTemporaryBuffers();
+ Free(spriteTemplate);
+
+ return spriteId;
+ }
+}
+
+u8 AddCustomItemIconSprite(struct SpriteTemplate *customSpriteTemplate, u16 tilesTag, u16 paletteTag, u16 itemId)
+{
+ if (!AllocItemIconTemporaryBuffers())
+ {
+ return MAX_SPRITES;
+ }
+ else
+ {
+ u8 spriteId;
+ struct SpriteSheet spriteSheet;
+ struct CompressedSpritePalette spritePalette;
+ struct SpriteTemplate *spriteTemplate;
+
+ LZDecompressWram(GetItemIconPicOrPalette(itemId, 0), gItemIconDecompressionBuffer);
+ CopyItemIconPicTo4x4Buffer(gItemIconDecompressionBuffer, gItemIcon4x4Buffer);
+ spriteSheet.data = gItemIcon4x4Buffer;
+ spriteSheet.size = 0x200;
+ spriteSheet.tag = tilesTag;
+ LoadSpriteSheet(&spriteSheet);
+
+ spritePalette.data = GetItemIconPicOrPalette(itemId, 1);
+ spritePalette.tag = paletteTag;
+ LoadCompressedObjectPalette(&spritePalette);
+
+ spriteTemplate = Alloc(sizeof(*spriteTemplate));
+ CpuCopy16(customSpriteTemplate, spriteTemplate, sizeof(*spriteTemplate));
+ spriteTemplate->tileTag = tilesTag;
+ spriteTemplate->paletteTag = paletteTag;
+ spriteId = CreateSprite(spriteTemplate, 0, 0, 0);
+
+ FreeItemIconTemporaryBuffers();
+ Free(spriteTemplate);
+
+ return spriteId;
+ }
+}
+
+const void *GetItemIconPicOrPalette(u16 itemId, u8 which)
+{
+ if (itemId == 0xFFFF)
+ itemId = ITEM_FIELD_ARROW;
+ else if (itemId > ITEM_LAST_ID)
+ itemId = 0;
+
+ return gItemIconTable[itemId][which];
+}
diff --git a/src/item_use.c b/src/item_use.c
index 8fe705a50..1fdd925ac 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "item_use.h"
#include "battle.h"
#include "berry.h"
#include "bike.h"
@@ -28,7 +29,6 @@
#include "task.h"
#include "text.h"
-extern u16 gSpecialVar_ItemId;
extern void(**gUnknown_0203CE54)(void);
extern void(**gUnknown_0203CF2C)(void);
extern void(*gUnknown_0203A0F4)(u8 taskId);
@@ -88,13 +88,12 @@ extern void sub_80B7CC8(void);
extern void flagmods_08054D70(void);
extern u8* sub_806CF78(u16);
extern bool8 ExecuteTableBasedItemEffect_(struct Pokemon*, u16, u8, u8);
-extern u8 gBankInMenu;
-extern u16 gBattlePartyID[];
extern void sub_81B89F0(void);
extern u8 GetItemEffectType(u16);
+extern struct MapConnection *sub_8088A8C(s16, s16);
void MapPostLoadHook_UseItem(void);
-extern void sub_80AF6D4(void);
+void sub_80AF6D4(void);
void Task_CallItemUseOnFieldCallback(u8 taskId);
void bag_menu_inits_lists_menu(u8 taskId);
void ItemUseOnFieldCB_Bike(u8 taskId);
@@ -379,12 +378,12 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId)
newDistanceX = distanceX - x;
distanceY = (u16)events->bgEvents[i].y + 7;
newDistanceY = distanceY - y;
-
+
if ((u16)(newDistanceX + 7) < 15 && (newDistanceY >= -5) && (newDistanceY < 6))
sub_80FD8E0(taskId, newDistanceX, newDistanceY);
}
}
-
+
sub_80FD7C8(taskId);
if (gTasks[taskId].data[2] == TRUE)
return TRUE;
@@ -453,8 +452,6 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
return sub_80FD6D4(mapHeader->events, localX, localY);
}
-// weird math
-#ifdef NONMATCHING
void sub_80FD7C8(u8 taskId)
{
s16 x, y;
@@ -462,15 +459,18 @@ void sub_80FD7C8(u8 taskId)
s16 width = gMapHeader.mapData->width + 7;
s16 height = gMapHeader.mapData->height + 7;
+ s16 var1 = 7;
+ s16 var2 = 7;
+
PlayerGetDestCoords(&x, &y);
for (curX = x - 7; curX <= x + 7; curX++)
{
for (curY = y - 5; curY <= y + 5; curY++)
{
- if (7 > curX
+ if (var1 > curX
|| curX >= width
- || 7 > curY
+ || var2 > curY
|| curY >= height)
{
struct MapConnection *conn = sub_8088A8C(curX, curY);
@@ -480,155 +480,6 @@ void sub_80FD7C8(u8 taskId)
}
}
}
-#else
-__attribute__((naked))
-void sub_80FD7C8(u8 taskId)
-{
- 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, 0x14\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x4]\n\
- ldr r0, =gMapHeader\n\
- ldr r1, [r0]\n\
- ldr r0, [r1]\n\
- adds r0, 0x7\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x8]\n\
- ldr r0, [r1, 0x4]\n\
- adds r0, 0x7\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0xC]\n\
- mov r4, sp\n\
- adds r4, 0x2\n\
- mov r0, sp\n\
- adds r1, r4, 0\n\
- bl PlayerGetDestCoords\n\
- mov r0, sp\n\
- ldrh r0, [r0]\n\
- subs r0, 0x7\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- asrs r0, 16\n\
- mov r1, sp\n\
- movs r2, 0\n\
- ldrsh r1, [r1, r2]\n\
- adds r1, 0x7\n\
- cmp r0, r1\n\
- bgt _080FD8CC\n\
-_080FD816:\n\
- mov r5, sp\n\
- ldrh r0, [r5, 0x2]\n\
- subs r0, 0x5\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- lsls r2, r4, 16\n\
- asrs r1, r2, 16\n\
- movs r6, 0x2\n\
- ldrsh r0, [r5, r6]\n\
- adds r0, 0x5\n\
- lsls r3, 16\n\
- mov r8, r3\n\
- cmp r1, r0\n\
- bgt _080FD8B6\n\
- movs r0, 0x7\n\
- str r0, [sp, 0x10]\n\
- mov r1, r8\n\
- asrs r1, 16\n\
- mov r9, r1\n\
- mov r10, r0\n\
-_080FD83E:\n\
- ldr r3, [sp, 0x10]\n\
- cmp r3, r9\n\
- bgt _080FD860\n\
- ldr r5, [sp, 0x8]\n\
- lsls r0, r5, 16\n\
- asrs r0, 16\n\
- cmp r9, r0\n\
- bge _080FD860\n\
- asrs r1, r2, 16\n\
- cmp r10, r1\n\
- bgt _080FD860\n\
- ldr r6, [sp, 0xC]\n\
- lsls r0, r6, 16\n\
- asrs r0, 16\n\
- lsls r7, r4, 16\n\
- cmp r1, r0\n\
- blt _080FD89E\n\
-_080FD860:\n\
- mov r0, r8\n\
- asrs r5, r0, 16\n\
- lsls r4, 16\n\
- asrs r6, r4, 16\n\
- adds r0, r5, 0\n\
- adds r1, r6, 0\n\
- bl sub_8088A8C\n\
- adds r7, r4, 0\n\
- cmp r0, 0\n\
- beq _080FD89E\n\
- adds r1, r5, 0\n\
- adds r2, r6, 0\n\
- bl sub_80FD730\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bne _080FD89E\n\
- mov r0, sp\n\
- ldrh r1, [r0]\n\
- subs r1, r5, r1\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- ldrh r2, [r0, 0x2]\n\
- subs r2, r6, r2\n\
- lsls r2, 16\n\
- asrs r2, 16\n\
- ldr r0, [sp, 0x4]\n\
- bl sub_80FD8E0\n\
-_080FD89E:\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r0, r7, r1\n\
- lsrs r4, r0, 16\n\
- lsls r2, r4, 16\n\
- asrs r1, r2, 16\n\
- mov r3, sp\n\
- movs r5, 0x2\n\
- ldrsh r0, [r3, r5]\n\
- adds r0, 0x5\n\
- cmp r1, r0\n\
- ble _080FD83E\n\
-_080FD8B6:\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- add r1, r8\n\
- lsrs r3, r1, 16\n\
- asrs r1, 16\n\
- mov r0, sp\n\
- movs r6, 0\n\
- ldrsh r0, [r0, r6]\n\
- adds r0, 0x7\n\
- cmp r1, r0\n\
- ble _080FD816\n\
-_080FD8CC:\n\
- add sp, 0x14\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_80FD8E0(u8 taskId, s16 x, s16 y)
{
@@ -929,7 +780,7 @@ void ItemUseOutOfBattle_RareCandy(u8 taskId)
void ItemUseOutOfBattle_TMHM(u8 taskId)
{
- if (gSpecialVar_ItemId >= ITEM_HM01)
+ if (gSpecialVar_ItemId >= ITEM_HM01_CUT)
DisplayItemMessage(taskId, 1, gText_BootedUpHM, sub_80FDF90); // HM
else
DisplayItemMessage(taskId, 1, gText_BootedUpTM, sub_80FDF90); // TM
@@ -992,7 +843,7 @@ void ItemUseOutOfBattle_Repel(u8 taskId)
void sub_80FE124(u8 taskId)
{
s16* data = gTasks[taskId].data;
-
+
if (++data[8] > 7)
{
data[8] = 0;
@@ -1131,7 +982,7 @@ void sub_80FE440(u8 taskId)
void ItemUseInBattle_StatIncrease(u8 taskId)
{
- u16 partyId = gBattlePartyID[gBankInMenu];
+ u16 partyId = gBattlerPartyIndexes[gBattlerInMenuId];
if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE)
{
diff --git a/src/link.c b/src/link.c
index acf2fbe6b..8f7aa71b6 100644
--- a/src/link.c
+++ b/src/link.c
@@ -19,7 +19,6 @@
#include "task.h"
#include "scanline_effect.h"
#include "menu.h"
-#include "new_menu_helpers.h"
#include "text.h"
#include "strings.h"
#include "constants/songs.h"
diff --git a/src/menu.c b/src/menu.c
new file mode 100644
index 000000000..d06f950d3
--- /dev/null
+++ b/src/menu.c
@@ -0,0 +1,2414 @@
+#include "global.h"
+#include "bg.h"
+#include "window.h"
+#include "palette.h"
+#include "menu.h"
+#include "constants/songs.h"
+#include "main.h"
+#include "sound.h"
+#include "menu_helpers.h"
+#include "malloc.h"
+#include "task.h"
+#include "dma3.h"
+#include "string_util.h"
+#include "pokemon_icon.h"
+#include "constants/flags.h"
+#include "event_data.h"
+#include "pokedex.h"
+#include "region_map.h"
+#include "text_window.h"
+#include "strings.h"
+#include "graphics.h"
+
+#define DLG_WINDOW_PALETTE_NUM 15
+#define DLG_WINDOW_BASE_TILE_NUM 0x200
+#define STD_WINDOW_PALETTE_NUM 14
+#define STD_WINDOW_BASE_TILE_NUM 0x214
+
+struct SomeUnkStruct_60F0D4
+{
+ u8 unk1;
+ u8 unk2;
+ u16 unk3;
+};
+
+struct Menu
+{
+ u8 left;
+ u8 top;
+ s8 cursorPos;
+ s8 minCursorPos;
+ s8 maxCursorPos;
+ u8 windowId;
+ u8 fontId;
+ u8 optionWidth;
+ u8 optionHeight;
+ u8 horizontalCount;
+ u8 verticalCount;
+ bool8 APressMuted;
+};
+
+static EWRAM_DATA u8 gUnknown_0203CD8C = 0;
+static EWRAM_DATA u8 gUnknown_0203CD8D = 0;
+static EWRAM_DATA struct Menu gUnknown_0203CD90 = {0};
+static EWRAM_DATA u16 gUnknown_0203CD9C = 0;
+static EWRAM_DATA u8 gUnknown_0203CD9E = 0;
+static EWRAM_DATA u8 gUnknown_0203CD9F = 0;
+static EWRAM_DATA u8 gUnknown_0203CDA0 = 0;
+static EWRAM_DATA u16 sFiller = 0; // needed to align
+static EWRAM_DATA bool8 gUnknown_0203CDA4[4] = {FALSE};
+static EWRAM_DATA u16 gUnknown_0203CDA8 = 0;
+static EWRAM_DATA void *gUnknown_0203CDAC[0x20] = {NULL};
+
+const u16 gUnknown_0860F074[] = INCBIN_U16("graphics/interface/860F074.gbapal");
+static const u8 gUnknown_0860F094[] = { 8, 4, 1 };
+
+static const struct WindowTemplate gUnknown_0860F098[] =
+{
+ { 0x00, 0x02, 0x0F, 0x1B, 0x04, 0x0F, 0x194 },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate gUnknown_0860F0A8 =
+{
+ 0x00, 0x15, 0x09, 0x05, 0x04, 0x0F, 0x125
+};
+
+const u16 gUnknown_0860F0B0[] = INCBIN_U16("graphics/interface/860F0B0.gbapal");
+const u8 gUnknown_0860F0D0[] = { 15, 1, 2 };
+const struct SomeUnkStruct_60F0D4 gUnknown_0860F0D4[] =
+{
+ { 12, 12, 0x00 },
+ { 32, 12, 0x20 },
+ { 32, 12, 0x64 },
+ { 32, 12, 0x60 },
+ { 32, 12, 0x80 },
+ { 32, 12, 0x48 },
+ { 32, 12, 0x44 },
+ { 32, 12, 0x6C },
+ { 32, 12, 0x68 },
+ { 32, 12, 0x88 },
+ { 32, 12, 0xA4 },
+ { 32, 12, 0x24 },
+ { 32, 12, 0x28 },
+ { 32, 12, 0x2C },
+ { 32, 12, 0x40 },
+ { 32, 12, 0x84 },
+ { 32, 12, 0x4C },
+ { 32, 12, 0xA0 },
+ { 32, 12, 0x8C },
+ { 42, 12, 0xA8 },
+ { 42, 12, 0xC0 },
+ { 42, 12, 0xC8 },
+ { 42, 12, 0xE0 },
+ { 42, 12, 0xE8 },
+ { 8, 8, 0xAE },
+ { 8, 8, 0xAF },
+};
+
+// Forward declarations
+extern void sub_81973A4(void);
+extern void DrawStandardFrame(u8, u8, u8, u8, u8, u8);
+extern void DrawDialogueFrame(u8, u8, u8, u8, u8, u8);
+extern void sub_81977BC(u8, u8, u8, u8, u8, u8);
+extern void sub_8197804(u8, u8, u8, u8, u8, u8);
+extern void sub_8197BB4(u8, u8, u8, u8, u8, u8);
+extern void sub_8197E30(u8, u8, u8, u8, u8, u8);
+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);
+
+void sub_81971D0(void)
+{
+ InitWindows(gUnknown_0860F098);
+ gUnknown_0203CD8C = 0xFF;
+ gUnknown_0203CD8D = 0xFF;
+}
+
+void sub_81971F4(void)
+{
+ FreeAllWindowBuffers();
+}
+
+void sub_8197200(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ DeactivateAllTextPrinters();
+ sub_81973A4();
+}
+
+u16 sub_8197224(void)
+{
+ RunTextPrinters();
+ return IsTextPrinterActive(0);
+}
+
+u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextSubPrinter *, u16), u8 fgColor, u8 bgColor, u8 shadowColor)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = 0;
+ printer.y = 1;
+ printer.currentX = 0;
+ printer.currentY = 1;
+ printer.letterSpacing = 0;
+ printer.lineSpacing = 0;
+ printer.fontColor_l = 0;
+ printer.fgColor = fgColor;
+ printer.bgColor = bgColor;
+ printer.shadowColor = shadowColor;
+
+ gTextFlags.flag_1 = 0;
+ return AddTextPrinter(&printer, speed, callback);
+}
+
+void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress)
+{
+ void (*callback)(struct TextSubPrinter *, u16) = NULL;
+ gTextFlags.flag_0 = allowSkippingDelayWithButtonPress;
+ AddTextPrinterParameterized(0, 1, gStringVar4, GetPlayerTextSpeed(), callback, 2, 1, 3);
+}
+
+void AddTextPrinterForMessage_2(bool8 allowSkippingDelayWithButtonPress)
+{
+ gTextFlags.flag_0 = allowSkippingDelayWithButtonPress;
+ AddTextPrinterParameterized(0, 1, gStringVar4, GetPlayerTextSpeed(), NULL, 2, 1, 3);
+}
+
+void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed)
+{
+ gTextFlags.flag_0 = allowSkippingDelayWithButtonPress;
+ AddTextPrinterParameterized(0, 1, gStringVar4, speed, NULL, 2, 1, 3);
+}
+
+void sub_81973A4(void)
+{
+ copy_textbox_border_tile_patterns_to_vram(0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
+ sub_809882C(0, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM * 0x10);
+}
+
+void NewMenuHelpers_DrawDialogueFrame(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, DrawDialogueFrame);
+ FillWindowPixelBuffer(windowId, 0x11);
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, DrawStandardFrame);
+ FillWindowPixelBuffer(windowId, 0x11);
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_8197434(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, sub_8197804);
+ FillWindowPixelBuffer(windowId, 0x11);
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_819746C(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, sub_81977BC);
+ FillWindowPixelBuffer(windowId, 0x11);
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ int i;
+
+ FillBgTilemapBufferRect(bg,
+ STD_WINDOW_BASE_TILE_NUM + 0,
+ tilemapLeft - 1,
+ tilemapTop - 1,
+ 1,
+ 1,
+ STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ STD_WINDOW_BASE_TILE_NUM + 1,
+ tilemapLeft,
+ tilemapTop - 1,
+ width,
+ 1,
+ STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ STD_WINDOW_BASE_TILE_NUM + 2,
+ tilemapLeft + width,
+ tilemapTop - 1,
+ 1,
+ 1,
+ STD_WINDOW_PALETTE_NUM);
+
+ for (i = tilemapTop; i < tilemapTop + height; i++)
+ {
+ FillBgTilemapBufferRect(bg,
+ STD_WINDOW_BASE_TILE_NUM + 3,
+ tilemapLeft - 1,
+ i,
+ 1,
+ 1,
+ STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ STD_WINDOW_BASE_TILE_NUM + 5,
+ tilemapLeft + width,
+ i,
+ 1,
+ 1,
+ STD_WINDOW_PALETTE_NUM);
+ }
+
+ FillBgTilemapBufferRect(bg,
+ STD_WINDOW_BASE_TILE_NUM + 6,
+ tilemapLeft - 1,
+ tilemapTop + height,
+ 1,
+ 1,
+ STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ STD_WINDOW_BASE_TILE_NUM + 7,
+ tilemapLeft,
+ tilemapTop + height,
+ width,
+ 1,
+ STD_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ STD_WINDOW_BASE_TILE_NUM + 8,
+ tilemapLeft + width,
+ tilemapTop + height,
+ 1,
+ 1,
+ STD_WINDOW_PALETTE_NUM);
+}
+
+void DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg,
+ DLG_WINDOW_BASE_TILE_NUM + 1,
+ tilemapLeft - 2,
+ tilemapTop - 1,
+ 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ DLG_WINDOW_BASE_TILE_NUM + 3,
+ tilemapLeft - 1,
+ tilemapTop - 1,
+ 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ DLG_WINDOW_BASE_TILE_NUM + 4,
+ tilemapLeft,
+ tilemapTop - 1,
+ width - 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ DLG_WINDOW_BASE_TILE_NUM + 5,
+ tilemapLeft + width - 1,
+ tilemapTop - 1,
+ 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ DLG_WINDOW_BASE_TILE_NUM + 6,
+ tilemapLeft + width,
+ tilemapTop - 1,
+ 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ DLG_WINDOW_BASE_TILE_NUM + 7,
+ tilemapLeft - 2,
+ tilemapTop,
+ 1,
+ 5,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ DLG_WINDOW_BASE_TILE_NUM + 9,
+ tilemapLeft - 1,
+ tilemapTop,
+ width + 1,
+ 5,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ DLG_WINDOW_BASE_TILE_NUM + 10,
+ tilemapLeft + width,
+ tilemapTop,
+ 1,
+ 5,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 1),
+ tilemapLeft - 2,
+ tilemapTop + height,
+ 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 3),
+ tilemapLeft - 1,
+ tilemapTop + height,
+ 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 4),
+ tilemapLeft,
+ tilemapTop + height,
+ width - 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 5),
+ tilemapLeft + width - 1,
+ tilemapTop + height,
+ 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(DLG_WINDOW_BASE_TILE_NUM + 6),
+ tilemapLeft + width,
+ tilemapTop + height,
+ 1,
+ 1,
+ DLG_WINDOW_PALETTE_NUM);
+}
+
+void sub_81977BC(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, STD_WINDOW_PALETTE_NUM);
+}
+
+void sub_8197804(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 3, tilemapTop - 1, width + 6, height + 2, STD_WINDOW_PALETTE_NUM);
+}
+
+void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram)
+{
+ SetWindowBorderStyle(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
+}
+
+void sub_819786C(u8 windowId, bool8 copyToVram)
+{
+ copy_textbox_border_tile_patterns_to_vram(windowId, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10);
+ sub_8197B1C(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF);
+}
+
+void sub_819789C(void)
+{
+ LoadPalette(gUnknown_0860F074, STD_WINDOW_PALETTE_NUM * 0x10, 0x14);
+}
+
+void sub_81978B0(u16 offset)
+{
+ LoadPalette(gUnknown_0860F074, offset, 0x14);
+}
+
+const u16 *sub_81978C8(void)
+{
+ return gUnknown_0860F074;
+}
+
+u16 sub_81978D0(u8 colorNum)
+{
+ if (colorNum > 15)
+ colorNum = 0;
+ return gUnknown_0860F074[colorNum];
+}
+
+void DisplayItemMessageOnField(u8 taskId, const u8 *string, TaskFunc callback)
+{
+ sub_81973A4();
+ DisplayMessageAndContinueTask(taskId, 0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM, 1, GetPlayerTextSpeed(), string, callback);
+ CopyWindowToVram(0, 3);
+}
+
+void sub_8197930(void)
+{
+ CreateYesNoMenu(&gUnknown_0860F0A8, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 0);
+}
+
+void sub_8197948(u8 initialCursorPos)
+{
+ CreateYesNoMenu(&gUnknown_0860F0A8, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, initialCursorPos);
+}
+
+u32 sub_8197964(void)
+{
+ if (gTextFlags.flag_3)
+ return 1;
+ return gSaveBlock2Ptr->optionsTextSpeed;
+}
+
+u8 GetPlayerTextSpeed(void)
+{
+ u32 speed;
+ if (gSaveBlock2Ptr->optionsTextSpeed > 2)
+ gSaveBlock2Ptr->optionsTextSpeed = 1;
+ speed = sub_8197964();
+ return gUnknown_0860F094[speed];
+}
+
+u8 sub_81979C4(u8 a1)
+{
+ if (gUnknown_0203CD8C == 0xFF)
+ gUnknown_0203CD8C = sub_8198AA4(0, 0x16, 1, 7, (a1 * 2) + 2, 0xF, 0x139);
+ return gUnknown_0203CD8C;
+}
+
+u8 GetStartMenuWindowId(void)
+{
+ return gUnknown_0203CD8C;
+}
+
+void remove_start_menu_window_maybe(void)
+{
+ if (gUnknown_0203CD8C != 0xFF)
+ {
+ RemoveWindow(gUnknown_0203CD8C);
+ gUnknown_0203CD8C = 0xFF;
+ }
+}
+
+u16 sub_8197A30(void)
+{
+ return DLG_WINDOW_BASE_TILE_NUM;
+}
+
+u16 sub_8197A38(void)
+{
+ return STD_WINDOW_BASE_TILE_NUM;
+}
+
+u8 AddMapNamePopUpWindow(void)
+{
+ if (gUnknown_0203CD8D == 0xFF)
+ gUnknown_0203CD8D = sub_8198AA4(0, 1, 1, 10, 3, 14, 0x107);
+ return gUnknown_0203CD8D;
+}
+
+u8 GetMapNamePopUpWindowId(void)
+{
+ return gUnknown_0203CD8D;
+}
+
+void RemoveMapNamePopUpWindow(void)
+{
+ if (gUnknown_0203CD8D != 0xFF)
+ {
+ RemoveWindow(gUnknown_0203CD8D);
+ gUnknown_0203CD8D = 0xFF;
+ }
+}
+
+void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextSubPrinter *, u16))
+{
+ gTextFlags.flag_0 = a1;
+ AddTextPrinterParameterized(0, 1, gStringVar4, GetPlayerTextSpeed(), callback, 2, 1, 3);
+}
+
+void sub_8197AE8(bool8 copyToVram)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x11);
+ if (copyToVram == TRUE)
+ CopyBgTilemapBufferToVram(0);
+}
+
+void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a3, u8 a4)
+{
+ gUnknown_0203CD9C = a3;
+ gUnknown_0203CD9E = a4;
+ CallWindowFunction(windowId, sub_8197BB4);
+ FillWindowPixelBuffer(windowId, 0x11);
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_8197B64(u8 windowId, bool8 copyToVram, u16 a3)
+{
+ gUnknown_0203CD9C = a3;
+ gUnknown_0203CD9E = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
+ CallWindowFunction(windowId, sub_8197BB4);
+ FillWindowPixelBuffer(windowId, 0x11);
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_8197BB4(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 1,
+ tilemapLeft - 2,
+ tilemapTop - 1,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 3,
+ tilemapLeft - 1,
+ tilemapTop - 1,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 4,
+ tilemapLeft,
+ tilemapTop - 1,
+ width - 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 5,
+ tilemapLeft + width - 1,
+ tilemapTop - 1,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 6,
+ tilemapLeft + width,
+ tilemapTop - 1,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 7,
+ tilemapLeft - 2,
+ tilemapTop,
+ 1,
+ 5,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 9,
+ tilemapLeft - 1,
+ tilemapTop,
+ width + 1,
+ 5,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 10,
+ tilemapLeft + width,
+ tilemapTop,
+ 1,
+ 5,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(gUnknown_0203CD9C + 1),
+ tilemapLeft - 2,
+ tilemapTop + height,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(gUnknown_0203CD9C + 3),
+ tilemapLeft - 1,
+ tilemapTop + height,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(gUnknown_0203CD9C + 4),
+ tilemapLeft,
+ tilemapTop + height,
+ width - 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(gUnknown_0203CD9C + 5),
+ tilemapLeft + width - 1,
+ tilemapTop + height,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ BG_TILE_V_FLIP(gUnknown_0203CD9C + 6),
+ tilemapLeft + width,
+ tilemapTop + height,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+}
+
+void sub_8197DF8(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, sub_8197E30);
+ FillWindowPixelBuffer(windowId, 0);
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_8197E30(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 3, tilemapTop - 1, width + 6, height + 2, 0);
+}
+
+void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
+{
+ gUnknown_0203CD9C = baseTileNum;
+ gUnknown_0203CD9E = paletteNum;
+ CallWindowFunction(windowId, DrawWindowBorder);
+ FillWindowPixelBuffer(windowId, 0x11);
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_8197EC8(u8 windowId, bool8 copyToVram, u16 baseTileNum)
+{
+ gUnknown_0203CD9C = baseTileNum;
+ gUnknown_0203CD9E = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
+ CallWindowFunction(windowId, DrawWindowBorder);
+ FillWindowPixelBuffer(windowId, 0x11);
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void DrawWindowBorder(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 0,
+ tilemapLeft - 1,
+ tilemapTop - 1,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 1,
+ tilemapLeft,
+ tilemapTop - 1,
+ width,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 2,
+ tilemapLeft + width,
+ tilemapTop - 1,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 3,
+ tilemapLeft - 1,
+ tilemapTop,
+ 1,
+ height,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 5,
+ tilemapLeft + width,
+ tilemapTop,
+ 1,
+ height,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 6,
+ tilemapLeft - 1,
+ tilemapTop + height,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 7,
+ tilemapLeft,
+ tilemapTop + height,
+ width,
+ 1,
+ gUnknown_0203CD9E);
+ FillBgTilemapBufferRect(bg,
+ gUnknown_0203CD9C + 8,
+ tilemapLeft + width,
+ tilemapTop + height,
+ 1,
+ 1,
+ gUnknown_0203CD9E);
+}
+
+void sub_8198070(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, sub_81980A8);
+ FillWindowPixelBuffer(windowId, 0);
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_81980A8(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0);
+}
+
+u8 sub_81980F0(u8 bg, u8 xPos, u8 yPos, u8 palette, u16 baseTile)
+{
+ struct WindowTemplate window;
+ memset(&window, 0, sizeof(window));
+
+ if (bg > 3)
+ window.priority = 0;
+ else
+ window.priority = bg;
+
+ window.tilemapTop = yPos;
+ window.height = 2;
+ window.tilemapLeft = 0x1E - xPos;
+ window.width = xPos;
+ window.paletteNum = palette;
+ window.baseBlock = baseTile;
+
+ gUnknown_0203CDA0 = AddWindow(&window);
+
+ if (palette > 15)
+ palette = 15 * 16;
+ else
+ palette *= 16;
+
+ LoadPalette(gUnknown_0860F0B0, palette, sizeof(gUnknown_0860F0B0));
+ return gUnknown_0203CDA0;
+}
+
+void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram)
+{
+ u16 width = 0;
+
+ if (gUnknown_0203CDA0 != 0xFF)
+ {
+ PutWindowTilemap(gUnknown_0203CDA0);
+ FillWindowPixelBuffer(gUnknown_0203CDA0, 0xFF);
+ width = GetStringWidth(0, string, 0);
+ box_print(gUnknown_0203CDA0,
+ 0,
+ 0xEC - (GetWindowAttribute(gUnknown_0203CDA0, WINDOW_TILEMAP_LEFT) * 8) - a2 - width,
+ 1,
+ gUnknown_0860F0D0,
+ 0,
+ string);
+ if (copyToVram)
+ CopyWindowToVram(gUnknown_0203CDA0, 3);
+ }
+}
+
+void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyToVram)
+{
+ u8 color[3];
+ u16 width = 0;
+
+ if (gUnknown_0203CDA0 != 0xFF)
+ {
+ if (a3 != 0)
+ {
+ color[0] = 0;
+ color[1] = 1;
+ color[2] = 2;
+ }
+ else
+ {
+ color[0] = 15;
+ color[1] = 1;
+ color[2] = 2;
+ }
+ PutWindowTilemap(gUnknown_0203CDA0);
+ FillWindowPixelBuffer(gUnknown_0203CDA0, 0xFF);
+ if (string2 != NULL)
+ {
+ width = GetStringWidth(0, string2, 0);
+ box_print(gUnknown_0203CDA0,
+ 0,
+ 0xEC - (GetWindowAttribute(gUnknown_0203CDA0, WINDOW_TILEMAP_LEFT) * 8) - a4 - width,
+ 1,
+ color,
+ 0,
+ string2);
+ }
+ AddTextPrinterParameterized2(gUnknown_0203CDA0, 1, 4, 1, 0, 0, color, 0, string);
+ if (copyToVram)
+ CopyWindowToVram(gUnknown_0203CDA0, 3);
+ }
+}
+
+void sub_81982D8(void)
+{
+ if (gUnknown_0203CDA0 != 0xFF)
+ CopyWindowToVram(gUnknown_0203CDA0, 3);
+}
+
+void sub_81982F0(void)
+{
+ if (gUnknown_0203CDA0 != 0xFF)
+ {
+ FillWindowPixelBuffer(gUnknown_0203CDA0, 0xFF);
+ CopyWindowToVram(gUnknown_0203CDA0, 3);
+ }
+}
+
+void sub_8198314(void)
+{
+ if (gUnknown_0203CDA0 != 0xFF)
+ {
+ FillWindowPixelBuffer(gUnknown_0203CDA0, 0);
+ ClearWindowTilemap(gUnknown_0203CDA0);
+ CopyWindowToVram(gUnknown_0203CDA0, 3);
+ RemoveWindow(gUnknown_0203CDA0);
+ gUnknown_0203CDA0 = 0xFF;
+ }
+}
+
+u8 sub_8198348(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, u8 a7)
+{
+ s32 pos;
+
+ gUnknown_0203CD90.left = left;
+ gUnknown_0203CD90.top = top;
+ gUnknown_0203CD90.minCursorPos = 0;
+ gUnknown_0203CD90.maxCursorPos = numChoices - 1;
+ gUnknown_0203CD90.windowId = windowId;
+ gUnknown_0203CD90.fontId = fontId;
+ gUnknown_0203CD90.optionHeight = cursorHeight;
+ gUnknown_0203CD90.APressMuted = a7;
+
+ pos = initialCursorPos;
+
+ if (pos < 0 || pos > gUnknown_0203CD90.maxCursorPos)
+ gUnknown_0203CD90.cursorPos = 0;
+ else
+ gUnknown_0203CD90.cursorPos = pos;
+
+ MoveMenuCursor(0);
+ return gUnknown_0203CD90.cursorPos;
+}
+
+u8 sub_81983AC(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos)
+{
+ return sub_8198348(windowId, fontId, left, top, cursorHeight, numChoices, initialCursorPos, 0);
+}
+
+u8 sub_81983EC(u8 windowId, u8 fontId, u8 left, u8 top, u8 numChoices, u8 initialCursorPos)
+{
+ u8 cursorHeight = GetMenuCursorDimensionByFont(fontId, 1);
+ return sub_81983AC(windowId, fontId, left, top, cursorHeight, numChoices, initialCursorPos);
+}
+
+void RedrawMenuCursor(u8 oldPos, u8 newPos)
+{
+ u8 width, height;
+
+ width = GetMenuCursorDimensionByFont(gUnknown_0203CD90.fontId, 0);
+ height = GetMenuCursorDimensionByFont(gUnknown_0203CD90.fontId, 1);
+ FillWindowPixelRect(gUnknown_0203CD90.windowId, 0x11, gUnknown_0203CD90.left, gUnknown_0203CD90.optionHeight * oldPos + gUnknown_0203CD90.top, width, height);
+ PrintTextOnWindow(gUnknown_0203CD90.windowId, gUnknown_0203CD90.fontId, gText_SelectorArrow3, gUnknown_0203CD90.left, gUnknown_0203CD90.optionHeight * newPos + gUnknown_0203CD90.top, 0, 0);
+}
+
+u8 MoveMenuCursor(s8 cursorDelta)
+{
+ u8 oldPos = gUnknown_0203CD90.cursorPos;
+ int newPos = gUnknown_0203CD90.cursorPos + cursorDelta;
+
+ if (newPos < gUnknown_0203CD90.minCursorPos)
+ gUnknown_0203CD90.cursorPos = gUnknown_0203CD90.maxCursorPos;
+ else if (newPos > gUnknown_0203CD90.maxCursorPos)
+ gUnknown_0203CD90.cursorPos = gUnknown_0203CD90.minCursorPos;
+ else
+ gUnknown_0203CD90.cursorPos += cursorDelta;
+
+ RedrawMenuCursor(oldPos, gUnknown_0203CD90.cursorPos);
+ return gUnknown_0203CD90.cursorPos;
+}
+
+u8 MoveMenuCursorNoWrapAround(s8 cursorDelta)
+{
+ u8 oldPos = gUnknown_0203CD90.cursorPos;
+ int newPos = gUnknown_0203CD90.cursorPos + cursorDelta;
+
+ if (newPos < gUnknown_0203CD90.minCursorPos)
+ gUnknown_0203CD90.cursorPos = gUnknown_0203CD90.minCursorPos;
+ else if (newPos > gUnknown_0203CD90.maxCursorPos)
+ gUnknown_0203CD90.cursorPos = gUnknown_0203CD90.maxCursorPos;
+ else
+ gUnknown_0203CD90.cursorPos += cursorDelta;
+
+ RedrawMenuCursor(oldPos, gUnknown_0203CD90.cursorPos);
+ return gUnknown_0203CD90.cursorPos;
+}
+
+u8 GetMenuCursorPos(void)
+{
+ return gUnknown_0203CD90.cursorPos;
+}
+
+s8 ProcessMenuInput(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (!gUnknown_0203CD90.APressMuted)
+ PlaySE(SE_SELECT);
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(-1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(1);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 ProcessMenuInputNoWrapAround(void)
+{
+ u8 oldPos = gUnknown_0203CD90.cursorPos;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (!gUnknown_0203CD90.APressMuted)
+ PlaySE(SE_SELECT);
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (oldPos != MoveMenuCursorNoWrapAround(-1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (oldPos != MoveMenuCursorNoWrapAround(1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 ProcessMenuInput_other(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (!gUnknown_0203CD90.APressMuted)
+ PlaySE(SE_SELECT);
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return MENU_B_PRESSED;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(-1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(1);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 ProcessMenuInputNoWrapAround_other(void)
+{
+ u8 oldPos = gUnknown_0203CD90.cursorPos;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (!gUnknown_0203CD90.APressMuted)
+ PlaySE(SE_SELECT);
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return MENU_B_PRESSED;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ {
+ if (oldPos != MoveMenuCursorNoWrapAround(-1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ {
+ if (oldPos != MoveMenuCursorNoWrapAround(1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs)
+{
+ u8 i;
+ for (i = 0; i < itemCount; i++)
+ {
+ PrintTextOnWindow(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL);
+ }
+ CopyWindowToVram(windowId, 2);
+}
+
+void sub_81987BC(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 a6, u8 a7)
+{
+ u8 i;
+ for (i = 0; i < itemCount; i++)
+ {
+ sub_8199F74(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL, a6, a7);
+ }
+ CopyWindowToVram(windowId, 2);
+}
+
+void sub_8198854(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs)
+{
+ PrintTextArray(windowId, fontId, GetFontAttribute(fontId, 0), 1, lineHeight, itemCount, strs);
+}
+
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8)
+{
+ u8 i;
+ struct TextSubPrinter printer;
+
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.fgColor = GetFontAttribute(fontId, 5);
+ printer.bgColor = GetFontAttribute(fontId, 6);
+ printer.shadowColor = GetFontAttribute(fontId, 7);
+ printer.fontColor_l = GetFontAttribute(fontId, 4);
+ printer.letterSpacing = letterSpacing;
+ printer.lineSpacing = GetFontAttribute(fontId, 3);
+ printer.x = left;
+ printer.currentX = left;
+
+ for (i = 0; i < itemCount; i++)
+ {
+ printer.current_text_offset = strs[a8[i]].text;
+ printer.y = (lineHeight * i) + top;
+ printer.currentY = printer.y;
+ AddTextPrinter(&printer, 0xFF, NULL);
+ }
+
+ CopyWindowToVram(windowId, 2);
+}
+
+void sub_81989B8(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a5)
+{
+ AddItemMenuActionTextPrinters(windowId, fontId, GetFontAttribute(fontId, 0), 1, GetFontAttribute(fontId, 2), lineHeight, itemCount, strs, a5);
+}
+
+void SetWindowTemplateFields(struct WindowTemplate *template, u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
+{
+ template->priority = bg;
+ template->tilemapLeft = left;
+ template->tilemapTop = top;
+ template->width = width;
+ template->height = height;
+ template->paletteNum = paletteNum;
+ template->baseBlock = baseBlock;
+}
+
+struct WindowTemplate sub_8198A50(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);
+ return template;
+}
+
+u16 sub_8198AA4(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);
+ return AddWindow(&template);
+}
+
+void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos)
+{
+ struct TextSubPrinter printer;
+
+ gUnknown_0203CD9F = AddWindow(window);
+ SetWindowBorderStyle(gUnknown_0203CD9F, TRUE, baseTileNum, paletteNum);
+
+ printer.current_text_offset = gText_YesNo;
+ printer.windowId = gUnknown_0203CD9F;
+ printer.fontId = fontId;
+ printer.x = GetFontAttribute(fontId, 0) + left;
+ printer.y = top;
+ printer.currentX = printer.x;
+ printer.currentY = printer.y;
+ printer.fgColor = GetFontAttribute(fontId, 5);
+ printer.bgColor = GetFontAttribute(fontId, 6);
+ printer.shadowColor = GetFontAttribute(fontId, 7);
+ printer.fontColor_l = GetFontAttribute(fontId, 4);
+ printer.letterSpacing = GetFontAttribute(fontId, 2);
+ printer.lineSpacing = GetFontAttribute(fontId, 3);
+
+ AddTextPrinter(&printer, 0xFF, NULL);
+
+ sub_81983AC(gUnknown_0203CD9F, fontId, left, top, GetFontAttribute(fontId, 1), 2, initialCursorPos);
+}
+
+void sub_8198C34(const struct WindowTemplate *window, u8 fontId, u16 baseTileNum, u8 paletteNum)
+{
+ sub_8198AF8(window, fontId, 0, 1, baseTileNum, paletteNum, 0);
+}
+
+s8 ProcessMenuInputNoWrap_(void)
+{
+ s8 result = ProcessMenuInputNoWrapAround();
+ if (result != MENU_NOTHING_CHOSEN)
+ sub_8198C78();
+ return result;
+}
+
+void sub_8198C78(void)
+{
+ sub_8198070(gUnknown_0203CD9F, TRUE);
+ RemoveWindow(gUnknown_0203CD9F);
+}
+
+void sub_8198C94(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 a5, u8 a6, u8 a7, const struct MenuAction *strs)
+{
+ u8 i;
+ u8 j;
+ for (i = 0; i < a7; i++)
+ {
+ for (j = 0; j < a6; j++)
+ {
+ PrintTextOnWindow(windowId, fontId, strs[(i * a6) + j].text, (a4 * j) + left, (a5 * i) + top, 0xFF, NULL);
+ }
+ }
+ CopyWindowToVram(windowId, 2);
+}
+
+void sub_8198D54(u8 windowId, u8 fontId, u8 a2, u8 a3, u8 a4, u8 a5, const struct MenuAction *strs)
+{
+ sub_8198C94(windowId, fontId, GetFontAttribute(fontId, 0), 0, a2, a3, a4, a5, strs);
+}
+
+void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8)
+{
+ u8 i;
+ u8 j;
+ struct TextSubPrinter printer;
+
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.fgColor = GetFontAttribute(fontId, 5);
+ printer.bgColor = GetFontAttribute(fontId, 6);
+ printer.shadowColor = GetFontAttribute(fontId, 7);
+ printer.fontColor_l = GetFontAttribute(fontId, 4);
+ printer.letterSpacing = GetFontAttribute(fontId, 2);
+ printer.lineSpacing = GetFontAttribute(fontId, 3);
+
+ for (i = 0; i < itemCount2; i++)
+ {
+ for (j = 0; j < itemCount; j++)
+ {
+ printer.current_text_offset = strs[a8[(itemCount * i) + j]].text;
+ printer.x = (a4 * j) + left;
+ printer.y = (GetFontAttribute(fontId, 1) * i) + top;
+ printer.currentX = printer.x;
+ printer.currentY = printer.y;
+ AddTextPrinter(&printer, 0xFF, NULL);
+ }
+ }
+
+ CopyWindowToVram(windowId, 2);
+}
+
+void sub_8198EF8(u8 windowId, u8 fontId, u8 a2, u8 a3, u8 a4, u8 a5, const struct MenuAction *strs, const u8 *a8)
+{
+ sub_8198DBC(windowId, fontId, GetFontAttribute(fontId, 0), 0, a2, a4, a5, strs, a8);
+}
+
+u8 sub_8198F58(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 cursorHeight, u8 a6, u8 a7, u8 numChoices, u8 a9)
+{
+ s32 pos;
+
+ gUnknown_0203CD90.left = left;
+ gUnknown_0203CD90.top = top;
+ gUnknown_0203CD90.minCursorPos = 0;
+ gUnknown_0203CD90.maxCursorPos = numChoices - 1;
+ gUnknown_0203CD90.windowId = windowId;
+ gUnknown_0203CD90.fontId = fontId;
+ gUnknown_0203CD90.optionWidth = a4;
+ gUnknown_0203CD90.optionHeight = cursorHeight;
+ gUnknown_0203CD90.horizontalCount = a6;
+ gUnknown_0203CD90.verticalCount = a7;
+
+ pos = a9;
+
+ if (pos < 0 || pos > gUnknown_0203CD90.maxCursorPos)
+ gUnknown_0203CD90.cursorPos = 0;
+ else
+ gUnknown_0203CD90.cursorPos = pos;
+
+ sub_8199134(0, 0);
+ return gUnknown_0203CD90.cursorPos;
+}
+
+u8 sub_8198FD4(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 a5, u8 a6, u8 a7)
+{
+ u8 cursorHeight = GetMenuCursorDimensionByFont(fontId, 1);
+ u8 numChoices = a5 * a6;
+ return sub_8198F58(windowId, fontId, left, top, a4, cursorHeight, a5, a6, numChoices, a7);
+}
+
+void sub_8199060(u8 oldCursorPos, u8 newCursorPos)
+{
+ u8 cursorWidth = GetMenuCursorDimensionByFont(gUnknown_0203CD90.fontId, 0);
+ u8 cursorHeight = GetMenuCursorDimensionByFont(gUnknown_0203CD90.fontId, 1);
+ u8 xPos = (oldCursorPos % gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.optionWidth + gUnknown_0203CD90.left;
+ u8 yPos = (oldCursorPos / gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.optionHeight + gUnknown_0203CD90.top;
+ FillWindowPixelRect(gUnknown_0203CD90.windowId,
+ 0x11,
+ xPos,
+ yPos,
+ cursorWidth,
+ cursorHeight);
+ xPos = (newCursorPos % gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.optionWidth + gUnknown_0203CD90.left;
+ yPos = (newCursorPos / gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.optionHeight + gUnknown_0203CD90.top;
+ PrintTextOnWindow(gUnknown_0203CD90.windowId,
+ gUnknown_0203CD90.fontId,
+ gText_SelectorArrow3,
+ xPos,
+ yPos,
+ 0,
+ 0);
+}
+
+u8 sub_8199134(s8 deltaX, s8 deltaY)
+{
+ u8 oldPos = gUnknown_0203CD90.cursorPos;
+
+ if (deltaX != 0)
+ {
+ if ((gUnknown_0203CD90.cursorPos % gUnknown_0203CD90.horizontalCount) + deltaX < 0)
+ {
+ gUnknown_0203CD90.cursorPos += gUnknown_0203CD90.horizontalCount - 1;
+ }
+ else if ((gUnknown_0203CD90.cursorPos % gUnknown_0203CD90.horizontalCount) + deltaX >= gUnknown_0203CD90.horizontalCount)
+ {
+ gUnknown_0203CD90.cursorPos = (gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) * gUnknown_0203CD90.horizontalCount;
+ }
+ else
+ {
+ gUnknown_0203CD90.cursorPos += deltaX;
+ }
+ }
+
+ if (deltaY != 0)
+ {
+ if ((gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) + deltaY < 0)
+ {
+ gUnknown_0203CD90.cursorPos += gUnknown_0203CD90.horizontalCount * (gUnknown_0203CD90.verticalCount - 1);
+ }
+ else if ((gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) + deltaY >= gUnknown_0203CD90.verticalCount)
+ {
+ gUnknown_0203CD90.cursorPos -= gUnknown_0203CD90.horizontalCount * (gUnknown_0203CD90.verticalCount - 1);
+ }
+ else
+ {
+ gUnknown_0203CD90.cursorPos += (gUnknown_0203CD90.horizontalCount * deltaY);
+ }
+ }
+
+ if (gUnknown_0203CD90.cursorPos > gUnknown_0203CD90.maxCursorPos)
+ {
+ gUnknown_0203CD90.cursorPos = oldPos;
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else
+ {
+ sub_8199060(oldPos, gUnknown_0203CD90.cursorPos);
+ return gUnknown_0203CD90.cursorPos;
+ }
+}
+
+u8 sub_81991F8(s8 deltaX, s8 deltaY)
+{
+ u8 oldPos = gUnknown_0203CD90.cursorPos;
+
+ if (deltaX != 0)
+ {
+ if (((gUnknown_0203CD90.cursorPos % gUnknown_0203CD90.horizontalCount) + deltaX >= 0) &&
+ ((gUnknown_0203CD90.cursorPos % gUnknown_0203CD90.horizontalCount) + deltaX < gUnknown_0203CD90.horizontalCount))
+ {
+ gUnknown_0203CD90.cursorPos += deltaX;
+ }
+ }
+
+ if (deltaY != 0)
+ {
+ if (((gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) + deltaY >= 0) &&
+ ((gUnknown_0203CD90.cursorPos / gUnknown_0203CD90.horizontalCount) + deltaY < gUnknown_0203CD90.verticalCount))
+ {
+ gUnknown_0203CD90.cursorPos += (gUnknown_0203CD90.horizontalCount * deltaY);
+ }
+ }
+
+ if (gUnknown_0203CD90.cursorPos > gUnknown_0203CD90.maxCursorPos)
+ {
+ gUnknown_0203CD90.cursorPos = oldPos;
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else
+ {
+ sub_8199060(oldPos, gUnknown_0203CD90.cursorPos);
+ return gUnknown_0203CD90.cursorPos;
+ }
+}
+
+s8 sub_8199284(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sub_8199134(0, -1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sub_8199134(0, 1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
+ {
+ PlaySE(SE_SELECT);
+ sub_8199134(-1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
+ {
+ PlaySE(SE_SELECT);
+ sub_8199134(1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 sub_8199334(void)
+{
+ u8 oldPos = gUnknown_0203CD90.cursorPos;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (oldPos != sub_81991F8(0, -1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (oldPos != sub_81991F8(0, 1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
+ {
+ if (oldPos != sub_81991F8(-1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
+ {
+ if (oldPos != sub_81991F8(1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 sub_81993D8(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return MENU_B_PRESSED;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sub_8199134(0, -1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sub_8199134(0, 1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || sub_812210C() == 1)
+ {
+ PlaySE(SE_SELECT);
+ sub_8199134(-1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || sub_812210C() == 2)
+ {
+ PlaySE(SE_SELECT);
+ sub_8199134(1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 sub_8199484(void)
+{
+ u8 oldPos = gUnknown_0203CD90.cursorPos;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return gUnknown_0203CD90.cursorPos;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ return MENU_B_PRESSED;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ {
+ if (oldPos != sub_81991F8(0, -1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ {
+ if (oldPos != sub_81991F8(0, 1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || sub_812210C() == 1)
+ {
+ if (oldPos != sub_81991F8(-1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || sub_812210C() == 2)
+ {
+ if (oldPos != sub_81991F8(1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted)
+{
+ s32 pos;
+
+ gUnknown_0203CD90.left = 0;
+ gUnknown_0203CD90.top = 1;
+ gUnknown_0203CD90.minCursorPos = 0;
+ gUnknown_0203CD90.maxCursorPos = itemCount - 1;
+ gUnknown_0203CD90.windowId = windowId;
+ gUnknown_0203CD90.fontId = 1;
+ gUnknown_0203CD90.optionHeight = 16;
+ gUnknown_0203CD90.APressMuted = APressMuted;
+
+ pos = initialCursorPos;
+
+ if (pos < 0 || pos > gUnknown_0203CD90.maxCursorPos)
+ gUnknown_0203CD90.cursorPos = 0;
+ else
+ gUnknown_0203CD90.cursorPos = pos;
+
+ return MoveMenuCursor(0);
+}
+
+u8 InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 windowId, u8 itemCount, u8 initialCursorPos)
+{
+ return InitMenuInUpperLeftCorner(windowId, itemCount, initialCursorPos, FALSE);
+}
+
+void PrintMenuTable(u8 windowId, u8 itemCount, const struct MenuAction *strs)
+{
+ u32 i;
+
+ for (i = 0; i < itemCount; i++)
+ {
+ PrintTextOnWindow(windowId, 1, strs[i].text, 8, (i * 16) + 1, 0xFF, NULL);
+ }
+
+ CopyWindowToVram(windowId, 2);
+}
+
+void sub_81995E4(u8 windowId, u8 itemCount, const struct MenuAction *strs, const u8 *a8)
+{
+ u8 i;
+ struct TextSubPrinter printer;
+
+ printer.windowId = windowId;
+ printer.fontId = 1;
+ printer.fgColor = GetFontAttribute(1, 5);
+ printer.bgColor = GetFontAttribute(1, 6);
+ printer.shadowColor = GetFontAttribute(1, 7);
+ printer.fontColor_l = GetFontAttribute(1, 4);
+ printer.letterSpacing = 0;
+ printer.lineSpacing = 0;
+ printer.x = 8;
+ printer.currentX = 8;
+
+ for (i = 0; i < itemCount; i++)
+ {
+ printer.current_text_offset = strs[a8[i]].text;
+ printer.y = (i * 16) + 1;
+ printer.currentY = (i * 16) + 1;
+ AddTextPrinter(&printer, 0xFF, NULL);
+ }
+
+ CopyWindowToVram(windowId, 2);
+}
+
+void CreateYesNoMenu(const struct WindowTemplate *window, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos)
+{
+ struct TextSubPrinter printer;
+
+ gUnknown_0203CD9F = AddWindow(window);
+ SetWindowBorderStyle(gUnknown_0203CD9F, TRUE, baseTileNum, paletteNum);
+
+ printer.current_text_offset = gText_YesNo;
+ printer.windowId = gUnknown_0203CD9F;
+ printer.fontId = 1;
+ printer.x = 8;
+ printer.y = 1;
+ printer.currentX = printer.x;
+ printer.currentY = printer.y;
+ printer.fgColor = GetFontAttribute(1, 5);
+ printer.bgColor = GetFontAttribute(1, 6);
+ printer.shadowColor = GetFontAttribute(1, 7);
+ printer.fontColor_l = GetFontAttribute(1, 4);
+ printer.letterSpacing = 0;
+ printer.lineSpacing = 0;
+
+ AddTextPrinter(&printer, 0xFF, NULL);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(gUnknown_0203CD9F, 2, initialCursorPos);
+}
+
+void sub_81997AC(u8 windowId, u8 a4, u8 a6, u8 a7, const struct MenuAction *strs)
+{
+ u32 i;
+ u32 j;
+ for (i = 0; i < a7; i++)
+ {
+ for (j = 0; j < a6; j++)
+ {
+ PrintTextOnWindow(windowId, 1, strs[(i * a6) + j].text, (a4 * j) + 8, (i * 16) + 1, 0xFF, NULL);
+ }
+ }
+ CopyWindowToVram(windowId, 2);
+}
+
+void sub_819983C(u8 windowId, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8)
+{
+ u8 i;
+ u8 j;
+ struct TextSubPrinter printer;
+
+ printer.windowId = windowId;
+ printer.fontId = 1;
+ printer.fgColor = GetFontAttribute(1, 5);
+ printer.bgColor = GetFontAttribute(1, 6);
+ printer.shadowColor = GetFontAttribute(1, 7);
+ printer.fontColor_l = GetFontAttribute(1, 4);
+ printer.letterSpacing = 0;
+ printer.lineSpacing = 0;
+
+ for (i = 0; i < itemCount2; i++)
+ {
+ for (j = 0; j < itemCount; j++)
+ {
+ printer.current_text_offset = strs[a8[(itemCount * i) + j]].text;
+ printer.x = (a4 * j) + 8;
+ printer.y = (16 * i) + 1;
+ printer.currentX = printer.x;
+ printer.currentY = printer.y;
+ AddTextPrinter(&printer, 0xFF, NULL);
+ }
+ }
+
+ CopyWindowToVram(windowId, 2);
+}
+
+u8 sub_8199944(u8 windowId, u8 optionWidth, u8 horizontalCount, u8 verticalCount, u8 initialCursorPos)
+{
+ s32 pos;
+
+ gUnknown_0203CD90.left = 0;
+ gUnknown_0203CD90.top = 1;
+ gUnknown_0203CD90.minCursorPos = 0;
+ gUnknown_0203CD90.maxCursorPos = (horizontalCount * verticalCount) - 1;
+ gUnknown_0203CD90.windowId = windowId;
+ gUnknown_0203CD90.fontId = 1;
+ gUnknown_0203CD90.optionWidth = optionWidth;
+ gUnknown_0203CD90.optionHeight = 16;
+ gUnknown_0203CD90.horizontalCount = horizontalCount;
+ gUnknown_0203CD90.verticalCount = verticalCount;
+
+ pos = initialCursorPos;
+
+ if (pos < 0 || pos > gUnknown_0203CD90.maxCursorPos)
+ gUnknown_0203CD90.cursorPos = 0;
+ else
+ gUnknown_0203CD90.cursorPos = pos;
+
+ sub_8199134(0, 0);
+ return gUnknown_0203CD90.cursorPos;
+}
+
+void clear_scheduled_bg_copies_to_vram(void)
+{
+ memset(gUnknown_0203CDA4, 0, sizeof(gUnknown_0203CDA4));
+}
+
+void schedule_bg_copy_tilemap_to_vram(u8 bgId)
+{
+ gUnknown_0203CDA4[bgId] = TRUE;
+}
+
+void do_scheduled_bg_tilemap_copies_to_vram(void)
+{
+ if (gUnknown_0203CDA4[0] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_0203CDA4[0] = FALSE;
+ }
+ if (gUnknown_0203CDA4[1] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(1);
+ gUnknown_0203CDA4[1] = FALSE;
+ }
+ if (gUnknown_0203CDA4[2] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(2);
+ gUnknown_0203CDA4[2] = FALSE;
+ }
+ if (gUnknown_0203CDA4[3] == TRUE)
+ {
+ CopyBgTilemapBufferToVram(3);
+ gUnknown_0203CDA4[3] = FALSE;
+ }
+}
+
+void reset_temp_tile_data_buffers(void)
+{
+ int i;
+ for (i = 0; i < (s32)ARRAY_COUNT(gUnknown_0203CDAC); i++)
+ {
+ gUnknown_0203CDAC[i] = NULL;
+ }
+ gUnknown_0203CDA8 = 0;
+}
+
+bool8 free_temp_tile_data_buffers_if_possible(void)
+{
+ int i;
+
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ if (gUnknown_0203CDA8)
+ {
+ for (i = 0; i < gUnknown_0203CDA8; i++)
+ {
+ FREE_AND_SET_NULL(gUnknown_0203CDAC[i]);
+ }
+ gUnknown_0203CDA8 = 0;
+ }
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+void *decompress_and_copy_tile_data_to_vram(u8 bgId, const void *src, int size, u16 offset, u8 mode)
+{
+ int sizeOut;
+ if (gUnknown_0203CDA8 < ARRAY_COUNT(gUnknown_0203CDAC))
+ {
+ void *ptr = malloc_and_decompress(src, &sizeOut);
+ if (!size)
+ size = sizeOut;
+ if (ptr)
+ {
+ copy_decompressed_tile_data_to_vram(bgId, ptr, size, offset, mode);
+ gUnknown_0203CDAC[gUnknown_0203CDA8++] = ptr;
+ }
+ return ptr;
+ }
+ return NULL;
+}
+
+void copy_decompressed_tile_data_to_vram_autofree(u8 bgId, const void *src, int size, u16 offset, u8 mode)
+{
+ int sizeOut;
+ void *ptr = malloc_and_decompress(src, &sizeOut);
+ if (!size)
+ size = sizeOut;
+ if (ptr)
+ {
+ u8 taskId = CreateTask(task_free_buf_after_copying_tile_data_to_vram, 0);
+ gTasks[taskId].data[0] = copy_decompressed_tile_data_to_vram(bgId, ptr, size, offset, mode);
+ SetWordTaskArg(taskId, 1, (u32)ptr);
+ }
+}
+
+void task_free_buf_after_copying_tile_data_to_vram(u8 taskId)
+{
+ if (!CheckForSpaceForDma3Request(gTasks[taskId].data[0]))
+ {
+ Free((void *)GetWordTaskArg(taskId, 1));
+ DestroyTask(taskId);
+ }
+}
+
+void *malloc_and_decompress(const void *src, int *size)
+{
+ void *ptr;
+ u8 *sizeAsBytes = (u8 *)size;
+ u8 *srcAsBytes = (u8 *)src;
+
+ sizeAsBytes[0] = srcAsBytes[1];
+ sizeAsBytes[1] = srcAsBytes[2];
+ sizeAsBytes[2] = srcAsBytes[3];
+ sizeAsBytes[3] = 0;
+
+ ptr = Alloc(*size);
+ if (ptr)
+ LZ77UnCompWram(src, ptr);
+ return ptr;
+}
+
+u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode)
+{
+ switch (mode)
+ {
+ case 0:
+ return LoadBgTiles(bgId, src, size, offset);
+ case 1:
+ return LoadBgTilemap(bgId, src, size, offset);
+ default:
+ return -1;
+ }
+}
+
+void sub_8199C30(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette)
+{
+ u8 i;
+ u8 j;
+ u16 *ptr = GetBgTilemapBuffer(bgId);
+
+ for (i = top; i < top + height; i++)
+ {
+ for (j = left; j < left + width; j++)
+ {
+ ptr[(i * 32) + j] = (ptr[(i * 32) + j] & 0xFFF) | (palette << 12);
+ }
+ }
+}
+
+void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height)
+{
+ u8 i;
+ u8 j;
+ const u16 *src = GetBgTilemapBuffer(bgId);
+
+ for (i = 0; i < height; i++)
+ {
+ for (j = 0; j < width; j++)
+ {
+ dest[(i * width) + j] = src[(i + top) * 32 + j + left];
+ }
+ }
+}
+
+void sub_8199D3C(void *ptr, int delta, int width, int height, bool32 is8BPP)
+{
+ int i;
+ int area = width * height;
+ if (is8BPP == TRUE)
+ {
+ u8 *as8BPP = ptr;
+ for (i = 0; i < area; i++)
+ {
+ as8BPP[i] += delta;
+ }
+ }
+ else
+ {
+ u16 *as4BPP = ptr;
+ for (i = 0; i < area; i++)
+ {
+ as4BPP[i] = (as4BPP[i] & 0xFC00) | ((as4BPP[i] + delta) & 0x3FF);
+ }
+ }
+}
+
+void sub_8199D98(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgY(3, 0, 0);
+}
+
+void sub_8199DF0(u32 bg, u8 a1, int a2, int a3)
+{
+ int temp = (!GetBgAttribute(bg, 4)) ? 0x20 : 0x40;
+ void *addr = (void *)((GetBgAttribute(bg, 1) * 0x4000) + (GetBgAttribute(bg, 10) + a2) * temp);
+ RequestDma3Fill(a1 << 24 | a1 << 16 | a1 << 8 | a1, addr + VRAM, a3 * temp, 1);
+}
+
+void box_print(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = left;
+ printer.y = top;
+ printer.currentX = printer.x;
+ printer.currentY = printer.y;
+ printer.letterSpacing = GetFontAttribute(fontId, 2);
+ printer.lineSpacing = GetFontAttribute(fontId, 3);
+ printer.fontColor_l = 0;
+ printer.fgColor = color[1];
+ printer.bgColor = color[0];
+ printer.shadowColor = color[2];
+
+ AddTextPrinter(&printer, speed, NULL);
+}
+
+void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineSpacing, const u8 *color, s8 speed, const u8 *str)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = left;
+ printer.y = top;
+ printer.currentX = printer.x;
+ printer.currentY = printer.y;
+ printer.letterSpacing = letterSpacing;
+ printer.lineSpacing = lineSpacing;
+ printer.fontColor_l = 0;
+ printer.fgColor = color[1];
+ printer.bgColor = color[0];
+ printer.shadowColor = color[2];
+
+ AddTextPrinter(&printer, speed, NULL);
+}
+
+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)
+{
+ struct TextSubPrinter printer;
+
+ printer.current_text_offset = str;
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.x = left;
+ printer.y = top;
+ printer.currentX = left;
+ printer.currentY = top;
+ printer.letterSpacing = letterSpacing;
+ printer.lineSpacing = lineSpacing;
+ printer.fontColor_l = 0;
+
+ printer.fgColor = GetFontAttribute(fontId, 5);
+ printer.bgColor = GetFontAttribute(fontId, 6);
+ printer.shadowColor = GetFontAttribute(fontId, 7);
+
+ AddTextPrinter(&printer, speed, callback);
+}
+
+void sub_819A024(u8 windowId, const u8 *src, u16 a2, u16 a3)
+{
+ int count = 0;
+ while (gSaveBlock2Ptr->playerName[count] != EOS)
+ count++;
+
+ StringExpandPlaceholders(gStringVar4, src);
+
+ PrintTextOnWindow(windowId, 1, gStringVar4, a2, a3, 0xFF, 0);
+}
+
+//Screw this function, it's long and unreferenced and ugh
+
+struct UnkStruct_819A080 {
+ u8 *unk00;
+ u16 unk04;
+ u16 unk06;
+};
+
+#ifdef NONMATCHING
+void sub_819A080(struct UnkStruct_819A080 *a0, struct UnkStruct_819A080 *a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
+{
+ // r3 = a3
+ // r4 = a5
+ // r1 = a6
+ // r5 = a7
+ // sp+00 = a0
+ // sp+04 = a1
+ // sp+08 = a2
+ // sp+0c = a4
+ int sp10 = a1->unk04 - a4 < a6 ? a1->unk04 - a4 + a2 : a6 + a2;
+ int sp14 = a0->unk06 - a5 < a7 ? a3 + a0->unk06 - a5 : a3 + a7;
+ int sp18 = (a0->unk04 + (a0->unk04 & 0x7)) / 8;
+ int sp1c = (a1->unk04 + (a1->unk04 & 0x7)) / 8;
+ int r12; // sp+20
+ int r8; // sp+24
+ int r5;
+ int r6;
+ u16 r2;
+
+ for (r12 = a3, r8 = a5; r12 < sp14; r12++, r8++)
+ {
+ for (r5 = a2, r6 = a4; a5 < sp10; a5++, a6++)
+ {
+ u8 *r3 = a0->unk00 + ((r5 >> 1) & 0x3) + ((r5 >> 3) << 5) + (((r12 >> 3) * sp18) << 5) + ((r12 & 0x7) << 2);
+ u8 *r4 = a1->unk00 + ((r6 >> 1) & 0x3) + ((r6 >> 3) << 5) + (((r8 >> 3) * sp1c) << 5) + ((r8 & 0x7) << 2);
+ if (((uintptr_t)r4) & 0x1)
+ {
+ u16 *r4_2 = (u16 *)(r4 - 1);
+ if (r6 & 0x1)
+ {
+ r2 = *r4_2 & 0x0fff;
+ if (r5 & 0x1)
+ *r4_2 = r2 | ((*r3 & 0xf0) << 8);
+ else
+ *r4_2 = r2 | ((*r3 & 0x0f) << 12);
+ }
+ else
+ {
+ r2 = *r4_2 * 0xf0ff;
+ if (r5 & 0x1)
+ *r4_2 = r2 | ((*r3 & 0xf0) << 4);
+ else
+ *r4_2 = r2 | ((*r3 & 0x0f) << 8);
+ }
+ }
+ else
+ {
+ u16 *r4_2 = (u16 *)r4;
+ if (r6 & 1)
+ {
+ r2 = *r4_2 & 0xff0f;
+ if (r5 & 1)
+ *r4_2 = r2 | ((*r3 & 0xf0) << 0);
+ else
+ *r4_2 = r2 | ((*r3 & 0x0f) << 4);
+ }
+ else
+ {
+ r2 = *r4_2 & 0xfff0;
+ if (r5 & 1)
+ *r4_2 = r2 | ((*r3 & 0xf0) >> 4);
+ else
+ *r4_2 = r2 | ((*r3 & 0x0f) >> 0);
+ }
+ }
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_819A080(struct UnkStruct_819A080 *a0, struct UnkStruct_819A080 *a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
+{
+ asm("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\
+ str r0, [sp]\n\
+ str r1, [sp, #0x4]\n\
+ ldr r0, [sp, #0x48]\n\
+ ldr r4, [sp, #0x4C]\n\
+ ldr r1, [sp, #0x50]\n\
+ ldr r5, [sp, #0x54]\n\
+ lsl r2, #16\n\
+ lsr r2, #16\n\
+ str r2, [sp, #0x8]\n\
+ lsl r3, #16\n\
+ lsr r3, #16\n\
+ lsl r0, #16\n\
+ lsr r0, #16\n\
+ str r0, [sp, #0xC]\n\
+ lsl r4, #16\n\
+ lsr r4, #16\n\
+ lsl r1, #16\n\
+ lsr r1, #16\n\
+ lsl r5, #16\n\
+ lsr r5, #16\n\
+ ldr r2, [sp, #0x4]\n\
+ ldrh r0, [r2, #0x4]\n\
+ ldr r2, [sp, #0xC]\n\
+ sub r0, r2\n\
+ ldr r2, [sp, #0x8]\n\
+ add r2, r1, r2\n\
+ str r2, [sp, #0x10]\n\
+ cmp r0, r1\n\
+ bge _0819A0CC\n\
+ ldr r1, [sp, #0x8]\n\
+ add r0, r1\n\
+ str r0, [sp, #0x10]\n\
+_0819A0CC:\n\
+ ldr r2, [sp, #0x4]\n\
+ ldrh r1, [r2, #0x6]\n\
+ sub r0, r1, r4\n\
+ cmp r0, r5\n\
+ bge _0819A0DE\n\
+ add r0, r3, r1\n\
+ sub r0, r4\n\
+ str r0, [sp, #0x14]\n\
+ b _0819A0E2\n\
+_0819A0DE:\n\
+ add r5, r3, r5\n\
+ str r5, [sp, #0x14]\n\
+_0819A0E2:\n\
+ ldr r0, [sp]\n\
+ ldrh r1, [r0, #0x4]\n\
+ mov r2, #0x7\n\
+ add r0, r1, #0\n\
+ and r0, r2\n\
+ add r1, r0\n\
+ asr r1, #3\n\
+ str r1, [sp, #0x18]\n\
+ ldr r0, [sp, #0x4]\n\
+ ldrh r1, [r0, #0x4]\n\
+ add r0, r1, #0\n\
+ and r0, r2\n\
+ add r1, r0\n\
+ asr r1, #3\n\
+ str r1, [sp, #0x1C]\n\
+ mov r12, r3\n\
+ mov r8, r4\n\
+ ldr r1, [sp, #0x14]\n\
+ cmp r12, r1\n\
+ blt _0819A10C\n\
+ b _0819A24A\n\
+_0819A10C:\n\
+ ldr r5, [sp, #0x8]\n\
+ ldr r6, [sp, #0xC]\n\
+ mov r2, r12\n\
+ add r2, #0x1\n\
+ str r2, [sp, #0x20]\n\
+ mov r0, r8\n\
+ add r0, #0x1\n\
+ str r0, [sp, #0x24]\n\
+ ldr r1, [sp, #0x10]\n\
+ cmp r5, r1\n\
+ blt _0819A124\n\
+ b _0819A23A\n\
+_0819A124:\n\
+ mov r7, #0x1\n\
+ mov r2, #0xF0\n\
+ mov r10, r2\n\
+ mov r0, #0xF\n\
+ mov r9, r0\n\
+_0819A12E:\n\
+ asr r0, r5, #1\n\
+ mov r1, #0x3\n\
+ and r0, r1\n\
+ ldr r2, [sp]\n\
+ ldr r1, [r2]\n\
+ add r1, r0\n\
+ asr r0, r5, #3\n\
+ lsl r0, #5\n\
+ add r1, r0\n\
+ mov r2, r12\n\
+ asr r0, r2, #3\n\
+ ldr r2, [sp, #0x18]\n\
+ mul r0, r2\n\
+ lsl r0, #5\n\
+ add r1, r0\n\
+ mov r2, r12\n\
+ lsl r0, r2, #29\n\
+ lsr r0, #27\n\
+ add r3, r1, r0\n\
+ asr r0, r6, #1\n\
+ mov r1, #0x3\n\
+ and r0, r1\n\
+ ldr r2, [sp, #0x4]\n\
+ ldr r1, [r2]\n\
+ add r1, r0\n\
+ asr r0, r6, #3\n\
+ lsl r0, #5\n\
+ add r1, r0\n\
+ mov r2, r8\n\
+ asr r0, r2, #3\n\
+ ldr r2, [sp, #0x1C]\n\
+ mul r0, r2\n\
+ lsl r0, #5\n\
+ add r1, r0\n\
+ mov r2, r8\n\
+ lsl r0, r2, #29\n\
+ lsr r0, #27\n\
+ add r4, r1, r0\n\
+ add r0, r4, #0\n\
+ and r0, r7\n\
+ cmp r0, #0\n\
+ beq _0819A1DA\n\
+ sub r4, #0x1\n\
+ add r0, r6, #0\n\
+ and r0, r7\n\
+ cmp r0, #0\n\
+ beq _0819A1B2\n\
+ ldrh r0, [r4]\n\
+ ldr r2, =0x00000fff\n\
+ and r2, r0\n\
+ add r0, r5, #0\n\
+ and r0, r7\n\
+ cmp r0, #0\n\
+ beq _0819A1A8\n\
+ ldrb r1, [r3]\n\
+ mov r0, r10\n\
+ and r0, r1\n\
+ lsl r0, #8\n\
+ b _0819A22A\n\
+ .pool\n\
+_0819A1A8:\n\
+ ldrb r1, [r3]\n\
+ mov r0, r9\n\
+ and r0, r1\n\
+ lsl r0, #12\n\
+ b _0819A22A\n\
+_0819A1B2:\n\
+ ldrh r0, [r4]\n\
+ ldr r2, =0x0000f0ff\n\
+ and r2, r0\n\
+ add r0, r5, #0\n\
+ and r0, r7\n\
+ cmp r0, #0\n\
+ beq _0819A1D0\n\
+ ldrb r1, [r3]\n\
+ mov r0, r10\n\
+ and r0, r1\n\
+ lsl r0, #4\n\
+ b _0819A22A\n\
+ .pool\n\
+_0819A1D0:\n\
+ ldrb r1, [r3]\n\
+ mov r0, r9\n\
+ and r0, r1\n\
+ lsl r0, #8\n\
+ b _0819A22A\n\
+_0819A1DA:\n\
+ add r0, r6, #0\n\
+ and r0, r7\n\
+ cmp r0, #0\n\
+ beq _0819A206\n\
+ ldrh r0, [r4]\n\
+ ldr r2, =0x0000ff0f\n\
+ and r2, r0\n\
+ add r0, r5, #0\n\
+ and r0, r7\n\
+ cmp r0, #0\n\
+ beq _0819A1FC\n\
+ ldrb r1, [r3]\n\
+ mov r0, r10\n\
+ b _0819A228\n\
+ .pool\n\
+_0819A1FC:\n\
+ ldrb r1, [r3]\n\
+ mov r0, r9\n\
+ and r0, r1\n\
+ lsl r0, #4\n\
+ b _0819A22A\n\
+_0819A206:\n\
+ ldrh r0, [r4]\n\
+ ldr r2, =0x0000fff0\n\
+ and r2, r0\n\
+ add r0, r5, #0\n\
+ and r0, r7\n\
+ cmp r0, #0\n\
+ beq _0819A224\n\
+ ldrb r1, [r3]\n\
+ mov r0, r10\n\
+ and r0, r1\n\
+ lsr r0, #4\n\
+ b _0819A22A\n\
+ .pool\n\
+_0819A224:\n\
+ ldrb r1, [r3]\n\
+ mov r0, r9\n\
+_0819A228:\n\
+ and r0, r1\n\
+_0819A22A:\n\
+ orr r2, r0\n\
+ strh r2, [r4]\n\
+ add r5, #0x1\n\
+ add r6, #0x1\n\
+ ldr r0, [sp, #0x10]\n\
+ cmp r5, r0\n\
+ bge _0819A23A\n\
+ b _0819A12E\n\
+_0819A23A:\n\
+ ldr r1, [sp, #0x20]\n\
+ mov r12, r1\n\
+ ldr r2, [sp, #0x24]\n\
+ mov r8, r2\n\
+ ldr r0, [sp, #0x14]\n\
+ cmp r12, r0\n\
+ bge _0819A24A\n\
+ b _0819A10C\n\
+_0819A24A:\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");
+}
+#endif
+
+void sub_819A25C(u8 palOffset, u16 speciesId)
+{
+ LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, 0x20);
+}
+
+void sub_819A27C(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y)
+{
+ BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32);
+}
+
+void sub_819A2BC(u8 palOffset, u8 palId)
+{
+ const u16 *palette;
+
+ switch (palId)
+ {
+ case 0:
+ default:
+ palette = gFireRedMenuElements1_Pal;
+ break;
+ case 1:
+ palette = gFireRedMenuElements2_Pal;
+ break;
+ case 2:
+ palette = gFireRedMenuElements3_Pal;
+ break;
+ }
+
+ LoadPalette(palette, palOffset, 0x20);
+}
+
+void blit_move_info_icon(u8 windowId, u8 iconId, u16 x, u16 y)
+{
+ BlitBitmapRectToWindow(windowId, gFireRedMenuElements_Gfx + gUnknown_0860F0D4[iconId].unk3 * 32, 0, 0, 128, 128, x, y, gUnknown_0860F0D4[iconId].unk1, gUnknown_0860F0D4[iconId].unk2);
+}
+
+void sub_819A344(u8 a0, u8 *a1, u8 a2)
+{
+ s32 curFlag;
+ s32 flagCount;
+ u8 *endOfString;
+ u8 *string = a1;
+
+ *(string++) = EXT_CTRL_CODE_BEGIN;
+ *(string++) = EXT_CTRL_CODE_COLOR;
+ *(string++) = a2;
+ *(string++) = EXT_CTRL_CODE_BEGIN;
+ *(string++) = EXT_CTRL_CODE_SHADOW;
+ *(string++) = a2 + 1;
+
+ switch (a0)
+ {
+ case 0:
+ StringCopy(string, gSaveBlock2Ptr->playerName);
+ break;
+ case 1:
+ if (IsNationalPokedexEnabled())
+ string = ConvertIntToDecimalStringN(string, pokedex_count(1), 0, 3);
+ else
+ string = ConvertIntToDecimalStringN(string, sub_80C0844(1), 0, 3);
+ *string = EOS;
+ break;
+ case 2:
+ string = ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->playTimeHours, 0, 3);
+ *(string++) = CHAR_COLON;
+ ConvertIntToDecimalStringN(string, gSaveBlock2Ptr->playTimeMinutes, 2, 2);
+ break;
+ case 3:
+ sub_81245DC(string, gMapHeader.regionMapSectionId);
+ break;
+ case 4:
+ for (curFlag = FLAG_BADGE01_GET, flagCount = 0, endOfString = string + 1; curFlag <= FLAG_BADGE08_GET; curFlag++)
+ {
+ if (FlagGet(curFlag))
+ flagCount++;
+ }
+ *string = flagCount + CHAR_0;
+ *endOfString = EOS;
+ break;
+ }
+}
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 444650be1..22e50f4e7 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -17,7 +17,6 @@
#include "window.h"
#include "gpu_regs.h"
#include "text_window.h"
-#include "new_menu_helpers.h"
#include "decompress.h"
// this file's functions
@@ -291,13 +290,13 @@ static void CB2_MysteryEventMenu(void)
static void PrintMysteryMenuText(u8 windowId, const u8 *text, u8 x, u8 y, s32 speed)
{
- struct TextColor textColor;
+ u8 textColor[3];
u8 letterSpacing = 0;
u8 lineSpacing = 1;
- textColor.fgColor = 1;
- textColor.bgColor = 2;
- textColor.shadowColor = 3;
+ textColor[0] = 1;
+ textColor[1] = 2;
+ textColor[2] = 3;
- FillWindowPixelBuffer(windowId, (textColor.fgColor) | (textColor.fgColor << 4));
- AddTextPrinterParameterized2(windowId, 1, x, y, letterSpacing, lineSpacing, &textColor, speed, text);
+ FillWindowPixelBuffer(windowId, (textColor[0]) | (textColor[0] << 4));
+ AddTextPrinterParameterized2(windowId, 1, x, y, letterSpacing, lineSpacing, textColor, speed, text);
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 7139b5c90..47d8b8ad1 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -5,7 +5,6 @@
#include "task.h"
#include "sprite.h"
#include "string_util.h"
-#include "new_menu_helpers.h"
#include "window.h"
#include "bg.h"
#include "gpu_regs.h"
@@ -530,7 +529,7 @@ static void DisplaySentToPCMessage(void)
stringToDisplay++;
StringExpandPlaceholders(gStringVar4, gUnknown_0858BDB8[stringToDisplay]);
- sub_81973C4(0, 0);
+ NewMenuHelpers_DrawDialogueFrame(0, 0);
gTextFlags.flag_0 = TRUE;
AddTextPrinterParameterized(0, 1, gStringVar4, GetPlayerTextSpeed(), 0, 2, 1, 3);
CopyWindowToVram(0, 3);
@@ -1496,7 +1495,7 @@ static void TaskDummy3(void)
}
-static const struct TextColor sGenderColors[2] =
+static const u8 sGenderColors[2][3] =
{
{0, 9, 8},
{0, 5, 4}
@@ -1516,7 +1515,7 @@ static void sub_80E49BC(void)
StringCopy(genderSymbol, gText_FemaleSymbol);
isFemale = TRUE;
}
- box_print(gNamingScreenData->windows[2], 1, 0x68, 1, &sGenderColors[isFemale], -1, genderSymbol);
+ box_print(gNamingScreenData->windows[2], 1, 0x68, 1, sGenderColors[isFemale], -1, genderSymbol);
}
}
@@ -1661,19 +1660,18 @@ static void sub_80E4D10(void)
PutWindowTilemap(gNamingScreenData->windows[2]);
}
-static const struct AlignedTextColor sUnkColor1 =
+struct TextColorThing // needed because of alignment... it's so stupid
{
- 13, 1, 2
+ u8 colors[3][4];
};
-static const struct AlignedTextColor sUnkColor2 =
+static const struct TextColorThing sUnkColorStruct =
{
- 14, 1, 2
-};
-
-static const struct AlignedTextColor sUnkColor3 =
-{
- 15, 1, 2
+ {
+ {13, 1, 2},
+ {14, 1, 2},
+ {15, 1, 2}
+ }
};
static const u8 sFillValues[3] =
@@ -1681,11 +1679,11 @@ static const u8 sFillValues[3] =
0xEE, 0xDD, 0xFF
};
-static const struct AlignedTextColor *const sUnkColors[3] =
+static const u8 *const sUnkColors[3] =
{
- &sUnkColor2,
- &sUnkColor1,
- &sUnkColor3
+ sUnkColorStruct.colors[1],
+ sUnkColorStruct.colors[0],
+ sUnkColorStruct.colors[2]
};
static void sub_80E4DE4(u8 window, u8 a1)
@@ -1738,7 +1736,7 @@ static void sub_80E4E5C(void)
static void sub_80E4EF0(void)
{
- const struct TextColor color[] = { 15, 1, 2 };
+ const u8 color[3] = { 15, 1, 2 };
FillWindowPixelBuffer(gNamingScreenData->windows[4], 0xFF);
box_print(gNamingScreenData->windows[4], 0, 2, 1, color, 0, gText_MoveOkBack);
diff --git a/src/palette.c b/src/palette.c
index 6d709c19c..fd4ad32ad 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -840,289 +840,94 @@ void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color)
void TintPalette_GrayScale(u16 *palette, u16 count)
{
- int r;
- int g;
- int b;
+ s32 r, g, b, i;
u32 gray;
- int i;
for (i = 0; i < count; i++)
{
- r = *palette & 0x1F;
- g = (*palette >> 5) & 0x1F;
+ r = (*palette >> 0) & 0x1F;
+ g = (*palette >> 5) & 0x1F;
b = (*palette >> 10) & 0x1F;
- r = r * Q_8_8(0.2969);
- r += g * Q_8_8(0.5899);
- r += b * Q_8_8(0.1133);
-
- gray = r >> 8;
+ gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
- *palette++ = gray << 10 | gray << 5 | gray;
+ *palette++ = (gray << 10) | (gray << 5) | (gray << 0);
}
}
void TintPalette_GrayScale2(u16 *palette, u16 count)
{
- int r;
- int g;
- int b;
+ s32 r, g, b, i;
u32 gray;
- int i;
for (i = 0; i < count; i++)
{
- r = *palette & 0x1F;
- g = (*palette >> 5) & 0x1F;
+ r = (*palette >> 0) & 0x1F;
+ g = (*palette >> 5) & 0x1F;
b = (*palette >> 10) & 0x1F;
- r = r * Q_8_8(0.2969);
- r += g * Q_8_8(0.5899);
- r += b * Q_8_8(0.1133);
-
- gray = r >> 8;
+ gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
if (gray > 0x1F)
gray = 0x1F;
gray = sRoundedDownGrayscaleMap[gray];
- *palette++ = gray << 10 | gray << 5 | gray;
+ *palette++ = (gray << 10) | (gray << 5) | (gray << 0);
}
}
-#ifdef NONMATCHING
void TintPalette_SepiaTone(u16 *palette, u16 count)
{
- int red;
- int green;
- int blue;
+ s32 r, g, b, i;
u32 gray;
- u32 sepia;
- s8 r2;
- s8 g2;
- s8 b2;
-
- int i;
+
for (i = 0; i < count; i++)
{
- r = *palette & 0x1F;
- g = (*palette >> 5) & 0x1F;
+ r = (*palette >> 0) & 0x1F;
+ g = (*palette >> 5) & 0x1F;
b = (*palette >> 10) & 0x1F;
- r *= 0x4C;
- r += g * 0x97;
- r += b * 0x1D;
+ gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
- gray = (s32)(r >> 8);
+ r = (u16)((Q_8_8(1.2) * gray)) >> 8;
+ g = (u16)((Q_8_8(1.0) * gray)) >> 8;
+ b = (u16)((Q_8_8(0.94) * gray)) >> 8;
- sepia = (gray * 0x133);
+ if (r > 31)
+ r = 31;
- r2 = (u16)sepia >> 8;
-
- g2 = gray;
-
- b2 = (gray * 15);
-
- if (r2 > 0x1F)
- r2 = 0x1F;
-
- *palette++ = b2 << 10 | g2 << 5 | r2;
+ *palette++ = (b << 10) | (g << 5) | (r << 0);
}
}
-#else
-ASM_DIRECT
-void TintPalette_SepiaTone(u16 *palette, u16 count)
-{
- asm("push {r4-r7,lr}\n\
- add r5, r0, #0\n\
- lsl r1, #16\n\
- lsr r1, #16\n\
- cmp r1, #0\n\
- beq _080A2BA2\n\
- mov r7, #0x1F\n\
- add r6, r1, #0\n\
-_080A2B50:\n\
- ldrh r0, [r5]\n\
- mov r1, #0x1F\n\
- and r1, r0\n\
- lsl r0, #16\n\
- lsr r2, r0, #21\n\
- and r2, r7\n\
- lsr r3, r0, #26\n\
- and r3, r7\n\
- mov r0, #0x4C\n\
- mul r1, r0\n\
- mov r0, #0x97\n\
- mul r0, r2\n\
- add r1, r0\n\
- lsl r0, r3, #3\n\
- sub r0, r3\n\
- lsl r0, #2\n\
- add r0, r3\n\
- add r1, r0\n\
- asr r1, #8\n\
- ldr r0, =0x00000133\n\
- mul r0, r1\n\
- lsl r0, #16\n\
- lsr r2, r0, #24\n\
- lsl r0, r1, #24\n\
- lsr r4, r0, #24\n\
- lsl r0, r1, #4\n\
- sub r0, r1\n\
- lsl r0, #20\n\
- lsr r3, r0, #24\n\
- cmp r2, #0x1F\n\
- ble _080A2B90\n\
- mov r2, #0x1F\n\
-_080A2B90:\n\
- lsl r0, r3, #10\n\
- lsl r1, r4, #5\n\
- orr r0, r1\n\
- orr r0, r2\n\
- strh r0, [r5]\n\
- add r5, #0x2\n\
- sub r6, #0x1\n\
- cmp r6, #0\n\
- bne _080A2B50\n\
-_080A2BA2:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool");
-}
-#endif // NONMATCHING
-#ifdef NONMATCHING
-void TintPalette_CustomTone(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5)
+void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 bTone)
{
- s32 r;
- s32 g;
- s32 b;
- s32 gray;
- u8 r2;
- u8 g2;
- u8 b2;
+ s32 r, g, b, i;
+ u32 gray;
- int i;
for (i = 0; i < count; i++)
{
- r = *palette & 0x1F;
- g = (*palette >> 5) & 0x1F;
+ r = (*palette >> 0) & 0x1F;
+ g = (*palette >> 5) & 0x1F;
b = (*palette >> 10) & 0x1F;
- r *= 0x4C;
- r += g * 0x97;
- r += b * 0x1D;
-
- gray = r >> 8;
-
- r2 = (u16)(gray * a3) >> 8;
+ gray = (r * Q_8_8(0.3) + g * Q_8_8(0.59) + b * Q_8_8(0.1133)) >> 8;
- g2 = (u16)(gray * a4) >> 8;
+ r = (u16)((rTone * gray)) >> 8;
+ g = (u16)((gTone * gray)) >> 8;
+ b = (u16)((bTone * gray)) >> 8;
- b2 = (u16)(gray * a5) >> 8;
+ if (r > 31)
+ r = 31;
+ if (g > 31)
+ g = 31;
+ if (b > 31)
+ b = 31;
- if (r2 > 0x1F)
- r2 = 0x1F;
-
- if (g2 > 0x1F)
- g2 = 0x1F;
-
- if (b2 > 0x1F)
- b2 = 0x1F;
-
- *palette++ = b2 << 10 | g2 << 5 | r2;
+ *palette++ = (b << 10) | (g << 5) | (r << 0);
}
- return;
-}
-#else
-ASM_DIRECT
-void TintPalette_CustomTone(u16 *palette, u16 count, u16 a3, u16 a4, u16 a5)
-{
- asm("push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- add r5, r0, #0\n\
- ldr r0, [sp, #0x1C]\n\
- lsl r1, #16\n\
- lsr r1, #16\n\
- lsl r2, #16\n\
- lsr r2, #16\n\
- mov r9, r2\n\
- lsl r3, #16\n\
- lsr r3, #16\n\
- mov r8, r3\n\
- lsl r0, #16\n\
- lsr r0, #16\n\
- mov r12, r0\n\
- cmp r1, #0\n\
- beq _080A2C38\n\
- mov r7, #0x1F\n\
- add r6, r1, #0\n\
-_080A2BD6:\n\
- ldrh r0, [r5]\n\
- mov r1, #0x1F\n\
- and r1, r0\n\
- lsl r0, #16\n\
- lsr r2, r0, #21\n\
- and r2, r7\n\
- lsr r3, r0, #26\n\
- and r3, r7\n\
- mov r0, #0x4C\n\
- mul r1, r0\n\
- mov r0, #0x97\n\
- mul r0, r2\n\
- add r1, r0\n\
- lsl r0, r3, #3\n\
- sub r0, r3\n\
- lsl r0, #2\n\
- add r0, r3\n\
- add r1, r0\n\
- asr r1, #8\n\
- mov r0, r9\n\
- mul r0, r1\n\
- lsl r0, #16\n\
- lsr r4, r0, #24\n\
- mov r0, r8\n\
- mul r0, r1\n\
- lsl r0, #16\n\
- lsr r2, r0, #24\n\
- mov r0, r12\n\
- mul r0, r1\n\
- lsl r0, #16\n\
- lsr r3, r0, #24\n\
- cmp r4, #0x1F\n\
- ble _080A2C1A\n\
- mov r4, #0x1F\n\
-_080A2C1A:\n\
- cmp r2, #0x1F\n\
- ble _080A2C20\n\
- mov r2, #0x1F\n\
-_080A2C20:\n\
- cmp r3, #0x1F\n\
- ble _080A2C26\n\
- mov r3, #0x1F\n\
-_080A2C26:\n\
- lsl r0, r3, #10\n\
- lsl r1, r2, #5\n\
- orr r0, r1\n\
- orr r0, r4\n\
- strh r0, [r5]\n\
- add r5, #0x2\n\
- sub r6, #0x1\n\
- cmp r6, #0\n\
- bne _080A2BD6\n\
-_080A2C38:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0");
}
-#endif
void sub_80A2C44(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7)
{
diff --git a/src/pokeball.c b/src/pokeball.c
index b48e55135..795a33827 100644
--- a/src/pokeball.c
+++ b/src/pokeball.c
@@ -15,12 +15,6 @@
#include "util.h"
#include "graphics.h"
-extern bool8 gDoingBattleAnim;
-extern u8 gActiveBank;
-extern u8 gBankTarget;
-extern u16 gBattlePartyID[];
-extern u8 gBankSpriteIds[];
-extern u8 gHealthBoxesIds[];
extern struct MusicPlayerInfo gMPlayInfo_BGM;
// this file's functions
@@ -334,12 +328,12 @@ u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow)
u8 taskId;
gDoingBattleAnim = TRUE;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive = 1;
taskId = CreateTask(Task_DoPokeballSendOutAnim, 5);
gTasks[taskId].tPan = pan;
gTasks[taskId].tThrowId = kindOfThrow;
- gTasks[taskId].tBank = gActiveBank;
+ gTasks[taskId].tBank = gActiveBattler;
return 0;
}
@@ -363,10 +357,10 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
throwCaseId = gTasks[taskId].tThrowId;
bank = gTasks[taskId].tBank;
- if (GetBankSide(bank) != SIDE_PLAYER)
- itemId = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_POKEBALL);
+ if (GetBattlerSide(bank) != B_SIDE_PLAYER)
+ itemId = GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_POKEBALL);
else
- itemId = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_POKEBALL);
+ itemId = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_POKEBALL);
ballId = ItemIdToBallId(itemId);
LoadBallGfx(ballId);
@@ -378,25 +372,25 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
switch (throwCaseId)
{
case POKEBALL_PLAYER_SENDOUT:
- gBankTarget = bank;
+ gBattlerTarget = bank;
gSprites[ballSpriteId].pos1.x = 24;
gSprites[ballSpriteId].pos1.y = 68;
gSprites[ballSpriteId].callback = SpriteCB_PlayerMonSendOut_1;
break;
case POKEBALL_OPPONENT_SENDOUT:
- gSprites[ballSpriteId].pos1.x = GetBankPosition(bank, BANK_X_POS);
- gSprites[ballSpriteId].pos1.y = GetBankPosition(bank, BANK_Y_POS) + 24;
- gBankTarget = bank;
+ gSprites[ballSpriteId].pos1.x = GetBattlerSpriteCoord(bank, BANK_X_POS);
+ gSprites[ballSpriteId].pos1.y = GetBattlerSpriteCoord(bank, BANK_Y_POS) + 24;
+ gBattlerTarget = bank;
gSprites[ballSpriteId].data[0] = 0;
gSprites[ballSpriteId].callback = SpriteCB_OpponentMonSendOut;
break;
default:
- gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
notSendOut = TRUE;
break;
}
- gSprites[ballSpriteId].sBank = gBankTarget;
+ gSprites[ballSpriteId].sBank = gBattlerTarget;
if (!notSendOut)
{
DestroyTask(taskId);
@@ -405,12 +399,12 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
// this will perform an unused ball throw animation
gSprites[ballSpriteId].data[0] = 0x22;
- gSprites[ballSpriteId].data[2] = GetBankPosition(gBankTarget, BANK_X_POS);
- gSprites[ballSpriteId].data[4] = GetBankPosition(gBankTarget, BANK_Y_POS) - 16;
+ gSprites[ballSpriteId].data[2] = GetBattlerSpriteCoord(gBattlerTarget, BANK_X_POS);
+ gSprites[ballSpriteId].data[4] = GetBattlerSpriteCoord(gBattlerTarget, BANK_Y_POS) - 16;
gSprites[ballSpriteId].data[5] = -40;
sub_80A68D4(&gSprites[ballSpriteId]);
gSprites[ballSpriteId].oam.affineParam = taskId;
- gTasks[taskId].tOpponentBank = gBankTarget;
+ gTasks[taskId].tOpponentBank = gBattlerTarget;
gTasks[taskId].func = TaskDummy;
PlaySE(SE_NAGERU);
}
@@ -458,9 +452,9 @@ static void sub_80756E0(struct Sprite *sprite)
{
sprite->data[5] = 0;
sprite->callback = sub_807574C;
- StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->sBank]], 2);
- AnimateSprite(&gSprites[gBankSpriteIds[sprite->sBank]]);
- gSprites[gBankSpriteIds[sprite->sBank]].data[1] = 0;
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBank]], 2);
+ AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBank]]);
+ gSprites[gBattlerSpriteIds[sprite->sBank]].data[1] = 0;
}
}
@@ -469,17 +463,17 @@ static void sub_807574C(struct Sprite *sprite)
sprite->data[5]++;
if (sprite->data[5] == 11)
PlaySE(SE_SUIKOMU);
- if (gSprites[gBankSpriteIds[sprite->sBank]].affineAnimEnded)
+ if (gSprites[gBattlerSpriteIds[sprite->sBank]].affineAnimEnded)
{
StartSpriteAnim(sprite, 2);
- gSprites[gBankSpriteIds[sprite->sBank]].invisible = TRUE;
+ gSprites[gBattlerSpriteIds[sprite->sBank]].invisible = TRUE;
sprite->data[5] = 0;
sprite->callback = sub_80757E4;
}
else
{
- gSprites[gBankSpriteIds[sprite->sBank]].data[1] += 0x60;
- gSprites[gBankSpriteIds[sprite->sBank]].pos2.y = -gSprites[gBankSpriteIds[sprite->sBank]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[sprite->sBank]].data[1] += 0x60;
+ gSprites[gBattlerSpriteIds[sprite->sBank]].pos2.y = -gSprites[gBattlerSpriteIds[sprite->sBank]].data[1] >> 8;
}
}
@@ -755,19 +749,19 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
u16 wantedCryCase;
u8 taskId;
- if (GetBankSide(bank) != SIDE_PLAYER)
+ if (GetBattlerSide(bank) != B_SIDE_PLAYER)
{
- mon = &gEnemyParty[gBattlePartyID[bank]];
+ mon = &gEnemyParty[gBattlerPartyIndexes[bank]];
pan = 25;
}
else
{
- mon = &gPlayerParty[gBattlePartyID[bank]];
+ mon = &gPlayerParty[gBattlerPartyIndexes[bank]];
pan = -25;
}
species = GetMonData(mon, MON_DATA_SPECIES);
- if ((bank == GetBankByIdentity(IDENTITY_PLAYER_MON1) || bank == GetBankByIdentity(IDENTITY_OPPONENT_MON1))
+ if ((bank == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || bank == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
&& IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -783,7 +777,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
if (!IsDoubleBattle() || !gBattleSpritesDataPtr->animationData->field_9_x1)
wantedCryCase = 0;
- else if (bank == GetBankByIdentity(IDENTITY_PLAYER_MON1) || bank == GetBankByIdentity(IDENTITY_OPPONENT_MON1))
+ else if (bank == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || bank == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
wantedCryCase = 1;
else
wantedCryCase = 2;
@@ -795,21 +789,21 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
gTasks[taskId].tCryTaskPan = pan;
gTasks[taskId].tCryTaskWantedCry = wantedCryCase;
gTasks[taskId].tCryTaskBank = bank;
- gTasks[taskId].tCryTaskMonSpriteId = gBankSpriteIds[sprite->sBank];
+ gTasks[taskId].tCryTaskMonSpriteId = gBattlerSpriteIds[sprite->sBank];
gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 0x10;
gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon);
gTasks[taskId].tCryTaskState = 0;
}
- StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->sBank]], 1);
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBank]], 1);
- if (GetBankSide(sprite->sBank) == SIDE_OPPONENT)
- gSprites[gBankSpriteIds[sprite->sBank]].callback = sub_8039B58;
+ if (GetBattlerSide(sprite->sBank) == B_SIDE_OPPONENT)
+ gSprites[gBattlerSpriteIds[sprite->sBank]].callback = sub_8039B58;
else
- gSprites[gBankSpriteIds[sprite->sBank]].callback = sub_8039E44;
+ gSprites[gBattlerSpriteIds[sprite->sBank]].callback = sub_8039E44;
- AnimateSprite(&gSprites[gBankSpriteIds[sprite->sBank]]);
- gSprites[gBankSpriteIds[sprite->sBank]].data[1] = 0x1000;
+ AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBank]]);
+ gSprites[gBattlerSpriteIds[sprite->sBank]].data[1] = 0x1000;
}
#undef tCryTaskSpecies
@@ -836,35 +830,35 @@ static void HandleBallAnimEnd(struct Sprite *sprite)
bool8 affineAnimEnded = FALSE;
u8 bank = sprite->sBank;
- gSprites[gBankSpriteIds[bank]].invisible = FALSE;
+ gSprites[gBattlerSpriteIds[bank]].invisible = FALSE;
if (sprite->animEnded)
sprite->invisible = TRUE;
- if (gSprites[gBankSpriteIds[bank]].affineAnimEnded)
+ if (gSprites[gBattlerSpriteIds[bank]].affineAnimEnded)
{
- StartSpriteAffineAnim(&gSprites[gBankSpriteIds[bank]], 0);
+ StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[bank]], 0);
affineAnimEnded = TRUE;
}
else
{
- gSprites[gBankSpriteIds[bank]].data[1] -= 288;
- gSprites[gBankSpriteIds[bank]].pos2.y = gSprites[gBankSpriteIds[bank]].data[1] >> 8;
+ gSprites[gBattlerSpriteIds[bank]].data[1] -= 288;
+ gSprites[gBattlerSpriteIds[bank]].pos2.y = gSprites[gBattlerSpriteIds[bank]].data[1] >> 8;
}
if (sprite->animEnded && affineAnimEnded)
{
s32 i, doneBanks;
- gSprites[gBankSpriteIds[bank]].pos2.y = 0;
+ gSprites[gBattlerSpriteIds[bank]].pos2.y = 0;
gDoingBattleAnim = FALSE;
gBattleSpritesDataPtr->healthBoxesData[bank].ballAnimActive = 0;
FreeSpriteOamMatrix(sprite);
DestroySprite(sprite);
- for (doneBanks = 0, i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (doneBanks = 0, i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (gBattleSpritesDataPtr->healthBoxesData[i].ballAnimActive == 0)
doneBanks++;
}
- if (doneBanks == BATTLE_BANKS_COUNT)
+ if (doneBanks == MAX_BATTLERS_COUNT)
{
for (i = 0; i < POKEBALL_COUNT; i++)
FreeBallGfx(i);
@@ -889,8 +883,8 @@ static void sub_80760F8(struct Sprite *sprite)
}
else if (sprite->data[4] == 315)
{
- FreeOamMatrix(gSprites[gBankSpriteIds[sprite->sBank]].oam.matrixNum);
- DestroySprite(&gSprites[gBankSpriteIds[sprite->sBank]]);
+ FreeOamMatrix(gSprites[gBattlerSpriteIds[sprite->sBank]].oam.matrixNum);
+ DestroySprite(&gSprites[gBattlerSpriteIds[sprite->sBank]]);
DestroySpriteAndFreeResources(sprite);
if (gMain.inBattle)
gBattleSpritesDataPtr->healthBoxesData[bank].ballAnimActive = 0;
@@ -900,8 +894,8 @@ static void sub_80760F8(struct Sprite *sprite)
static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite)
{
sprite->data[0] = 25;
- sprite->data[2] = GetBankPosition(sprite->sBank, 2);
- sprite->data[4] = GetBankPosition(sprite->sBank, 3) + 24;
+ sprite->data[2] = GetBattlerSpriteCoord(sprite->sBank, 2);
+ sprite->data[4] = GetBattlerSpriteCoord(sprite->sBank, 3) + 24;
sprite->data[5] = -30;
sprite->oam.affineParam = sprite->sBank;
sub_80A68D4(sprite);
@@ -956,7 +950,7 @@ static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite)
sprite->data[0] = 0;
if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1
- && sprite->sBank == GetBankByIdentity(IDENTITY_PLAYER_MON2))
+ && sprite->sBank == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT))
sprite->callback = SpriteCB_ReleaseMon2FromBall;
else
sprite->callback = SpriteCB_ReleaseMonFromBall;
@@ -982,7 +976,7 @@ static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite)
{
sprite->data[0] = 0;
if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1
- && sprite->sBank == GetBankByIdentity(IDENTITY_OPPONENT_MON2))
+ && sprite->sBank == GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))
sprite->callback = SpriteCB_ReleaseMon2FromBall;
else
sprite->callback = SpriteCB_ReleaseMonFromBall;
@@ -1183,14 +1177,14 @@ static void DestroySpriteAndFreeResources_(struct Sprite *sprite)
void sub_8076918(u8 bank)
{
- struct Sprite *healthboxSprite = &gSprites[gHealthBoxesIds[bank]];
+ struct Sprite *healthboxSprite = &gSprites[gHealthboxSpriteIds[bank]];
healthboxSprite->data[0] = 5;
healthboxSprite->data[1] = 0;
healthboxSprite->pos2.x = 0x73;
healthboxSprite->pos2.y = 0;
healthboxSprite->callback = sub_80769CC;
- if (GetBankSide(bank) != SIDE_PLAYER)
+ if (GetBattlerSide(bank) != B_SIDE_PLAYER)
{
healthboxSprite->data[0] = -healthboxSprite->data[0];
healthboxSprite->data[1] = -healthboxSprite->data[1];
@@ -1198,7 +1192,7 @@ void sub_8076918(u8 bank)
healthboxSprite->pos2.y = -healthboxSprite->pos2.y;
}
gSprites[healthboxSprite->data[5]].callback(&gSprites[healthboxSprite->data[5]]);
- if (GetBankIdentity(bank) == IDENTITY_PLAYER_MON2)
+ if (GetBattlerPosition(bank) == B_POSITION_PLAYER_RIGHT)
healthboxSprite->callback = sub_80769A8;
}
@@ -1226,7 +1220,7 @@ void DoHitAnimHealthboxEffect(u8 bank)
spriteId = CreateInvisibleSpriteWithCallback(SpriteCB_HitAnimHealthoxEffect);
gSprites[spriteId].data[0] = 1;
- gSprites[spriteId].data[1] = gHealthBoxesIds[bank];
+ gSprites[spriteId].data[1] = gHealthboxSpriteIds[bank];
gSprites[spriteId].callback = SpriteCB_HitAnimHealthoxEffect;
}
@@ -1275,8 +1269,8 @@ void FreeBallGfx(u8 ballId)
static u16 GetBankPokeballItemId(u8 bank)
{
- if (GetBankSide(bank) == SIDE_PLAYER)
- return GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_POKEBALL);
+ if (GetBattlerSide(bank) == B_SIDE_PLAYER)
+ return GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_POKEBALL);
else
- return GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_POKEBALL);
+ return GetMonData(&gEnemyParty[gBattlerPartyIndexes[bank]], MON_DATA_POKEBALL);
}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 472b030e0..b9d1d94c6 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -6,7 +6,6 @@
#include "menu.h"
#include "task.h"
#include "menu_helpers.h"
-#include "new_menu_helpers.h"
#include "pokemon.h"
#include "graphics.h"
#include "malloc.h"
@@ -284,7 +283,7 @@ static const struct SpriteTemplate sSpriteTemplate_PokeblockCase =
SpriteCallbackDummy
};
-static const struct TextColor sTextColorInPokeblockMenu = {0, 2, 3};
+static const u8 sTextColorInPokeblockMenu[3] = {0, 2, 3};
static const struct Pokeblock sFavoritePokeblocksTable[] =
{
@@ -583,7 +582,7 @@ static void HandleInitWindows(void)
static void PrintOnPokeblockWindow(u8 windowId, const u8 *string, s32 x)
{
- AddTextPrinterParameterized2(windowId, 1, x, 1, 0, 0, &sTextColorInPokeblockMenu, 0, string);
+ AddTextPrinterParameterized2(windowId, 1, x, 1, 0, 0, sTextColorInPokeblockMenu, 0, string);
}
static void PutPokeblockInfoText(void)
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
index d899e54f1..2039808cb 100644
--- a/src/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
@@ -16,7 +16,6 @@
#include "event_data.h"
#include "strings.h"
#include "string_util.h"
-#include "new_menu_helpers.h"
#include "party_menu.h"
#include "m4a.h"
#include "sound.h"
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index 98a35454f..cafd86c07 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -2,7 +2,11 @@
#include "pokemon.h"
#include "random.h"
#include "main.h"
+#include "constants/species.h"
+#include "constants/abilities.h"
#include "constants/items.h"
+#include "constants/trainers.h"
+#include "constants/moves.h"
#include "string_util.h"
#include "text.h"
@@ -14,6 +18,68 @@
extern u8 sav1_map_get_name(void);
+// EWRAM vars
+EWRAM_DATA u8 sLearningMoveTableID = 0;
+EWRAM_DATA u8 gPlayerPartyCount = 0;
+EWRAM_DATA u8 gEnemyPartyCount = 0;
+EWRAM_DATA struct Pokemon gPlayerParty[PARTY_SIZE] = {0};
+EWRAM_DATA struct Pokemon gEnemyParty[PARTY_SIZE] = {0};
+
+// const rom data
+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 struct SpindaSpot gSpindaSpotGraphics[] =
+{
+ {16, 7, INCBIN_U16("graphics/spinda_spots/spot_0.bin")},
+ {40, 8, INCBIN_U16("graphics/spinda_spots/spot_1.bin")},
+ {22, 25, INCBIN_U16("graphics/spinda_spots/spot_2.bin")},
+ {34, 26, INCBIN_U16("graphics/spinda_spots/spot_3.bin")}
+};
+
+#include "data/pokemon/item_effects.h"
+
+const s8 gNatureStatTable[][5] =
+{
+ // Atk Def Spd Sp.Atk Sp.Def
+ { 0, 0, 0, 0, 0}, // Hardy
+ { +1, -1, 0, 0, 0}, // Lonely
+ { +1, 0, -1, 0, 0}, // Brave
+ { +1, 0, 0, -1, 0}, // Adamant
+ { +1, 0, 0, 0, -1}, // Naughty
+ { -1, +1, 0, 0, 0}, // Bold
+ { 0, 0, 0, 0, 0}, // Docile
+ { 0, +1, -1, 0, 0}, // Relaxed
+ { 0, +1, 0, -1, 0}, // Impish
+ { 0, +1, 0, 0, -1}, // Lax
+ { -1, 0, +1, 0, 0}, // Timid
+ { 0, -1, +1, 0, 0}, // Hasty
+ { 0, 0, 0, 0, 0}, // Serious
+ { 0, 0, +1, -1, 0}, // Jolly
+ { 0, 0, +1, 0, -1}, // Naive
+ { -1, 0, 0, +1, 0}, // Modest
+ { 0, -1, 0, +1, 0}, // Mild
+ { 0, 0, -1, +1, 0}, // Quiet
+ { 0, 0, 0, 0, 0}, // Bashful
+ { 0, 0, 0, +1, -1}, // Rash
+ { -1, 0, 0, 0, +1}, // Calm
+ { 0, -1, 0, 0, +1}, // Gentle
+ { 0, 0, -1, 0, +1}, // Sassy
+ { 0, 0, 0, -1, +1}, // Careful
+ { 0, 0, 0, 0, 0}, // Quirky
+};
+
+#include "data/pokemon/tmhm_learnsets.h"
+#include "data/pokemon/trainer_class_lookups.h"
+#include "data/pokemon/cry_ids.h"
+#include "data/pokemon/experience_tables.h"
+#include "data/pokemon/base_stats.h"
+#include "data/pokemon/level_up_learnsets.h"
+#include "data/pokemon/evolution.h"
+#include "data/pokemon/level_up_learnset_pointers.h"
+
+// code
void ZeroBoxMonData(struct BoxPokemon *boxMon)
{
u8 *raw = (u8 *)boxMon;
@@ -43,14 +109,14 @@ void ZeroMonData(struct Pokemon *mon)
void ZeroPlayerPartyMons(void)
{
s32 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
ZeroMonData(&gPlayerParty[i]);
}
void ZeroEnemyPartyMons(void)
{
s32 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
ZeroMonData(&gEnemyParty[i]);
}
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index db176e025..3f37381c3 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -14,10 +14,10 @@ struct Unknown_020249B4
struct SpriteTemplate* templates;
};
-extern u8 gAbsentBankFlags;
-extern u8 gActiveBank;
-extern u8 gBankAttacker;
-extern u8 gBankTarget;
+extern u8 gAbsentBattlerFlags;
+extern u8 gActiveBattler;
+extern u8 gBattlerAttacker;
+extern u8 gBattlerTarget;
extern u8 gLastUsedAbility;
extern u16 gTrainerBattleOpponent_A;
extern u32 gBattleTypeFlags;
@@ -34,9 +34,9 @@ extern const union AnimCmd* const * const gUnknown_0830536C[];
extern const u8 gText_BadEgg[];
extern const u8 gText_EggNickname[];
-extern u8 GetBankSide(u8 bank);
-extern u8 GetBankByIdentity(u8 bank);
-extern u8 GetBankIdentity(u8 bank);
+extern u8 GetBattlerSide(u8 bank);
+extern u8 GetBattlerAtPosition(u8 bank);
+extern u8 GetBattlerPosition(u8 bank);
u8 CountAliveMonsInBattle(u8 caseId)
{
@@ -48,21 +48,21 @@ u8 CountAliveMonsInBattle(u8 caseId)
case BATTLE_ALIVE_EXCEPT_ACTIVE:
for (i = 0; i < 4; i++)
{
- if (i != gActiveBank && !(gAbsentBankFlags & gBitTable[i]))
+ if (i != gActiveBattler && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case BATTLE_ALIVE_ATK_SIDE:
for (i = 0; i < 4; i++)
{
- if (GetBankSide(i) == GetBankSide(gBankAttacker) && !(gAbsentBankFlags & gBitTable[i]))
+ if (GetBattlerSide(i) == GetBattlerSide(gBattlerAttacker) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
case BATTLE_ALIVE_DEF_SIDE:
for (i = 0; i < 4; i++)
{
- if (GetBankSide(i) == GetBankSide(gBankTarget) && !(gAbsentBankFlags & gBitTable[i]))
+ if (GetBattlerSide(i) == GetBattlerSide(gBattlerTarget) && !(gAbsentBattlerFlags & gBitTable[i]))
retVal++;
}
break;
@@ -75,7 +75,7 @@ bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 bank)
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
return FALSE;
- if (GetBankSide(bank) != SIDE_PLAYER)
+ if (GetBattlerSide(bank) != B_SIDE_PLAYER)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
return FALSE;
@@ -86,11 +86,11 @@ bool8 ShouldGetStatBadgeBoost(u16 badgeFlag, u8 bank)
u8 GetDefaultMoveTarget(u8 bank)
{
- u8 status = GetBankIdentity(bank) & 1;
+ u8 status = GetBattlerPosition(bank) & 1;
status ^= 1;
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- return GetBankByIdentity(status);
+ return GetBattlerAtPosition(status);
if (CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) > 1)
{
u8 val;
@@ -99,14 +99,14 @@ u8 GetDefaultMoveTarget(u8 bank)
val = status ^ 2;
else
val = status;
- return GetBankByIdentity(val);
+ return GetBattlerAtPosition(val);
}
else
{
- if ((gAbsentBankFlags & gBitTable[status]))
- return GetBankByIdentity(status ^ 2);
+ if ((gAbsentBattlerFlags & gBitTable[status]))
+ return GetBattlerAtPosition(status ^ 2);
else
- return GetBankByIdentity(status);
+ return GetBattlerAtPosition(status);
}
}
@@ -332,7 +332,7 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8* data)
ret = mon->defense;
break;
case MON_DATA_SPEED:
- ret = GetDeoxysStat(mon, STAT_SPD);
+ ret = GetDeoxysStat(mon, STAT_SPEED);
if (!ret)
ret = mon->speed;
break;
@@ -1197,45 +1197,45 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord)
for (i = 0; i < PARTY_SIZE; i++)
{
- if (gBattleResources->secretBase->partySpecies[i])
+ if (gBattleResources->secretBase->party.species[i])
{
CreateMon(&gEnemyParty[i],
- gBattleResources->secretBase->partySpecies[i],
- gBattleResources->secretBase->partyLevels[i],
+ gBattleResources->secretBase->party.species[i],
+ gBattleResources->secretBase->party.levels[i],
15,
1,
- gBattleResources->secretBase->partyPersonality[i],
+ gBattleResources->secretBase->party.personality[i],
2,
0);
- SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleResources->secretBase->partyHeldItems[i]);
+ SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBattleResources->secretBase->party.heldItems[i]);
for (j = 0; j < 6; j++)
- SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &gBattleResources->secretBase->partyEVs[i]);
+ SetMonData(&gEnemyParty[i], MON_DATA_HP_EV + j, &gBattleResources->secretBase->party.EVs[i]);
for (j = 0; j < 4; j++)
{
- SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, &gBattleResources->secretBase->partyMoves[i * 4 + j]);
- SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[gBattleResources->secretBase->partyMoves[i * 4 + j]].pp);
+ SetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j, &gBattleResources->secretBase->party.moves[i * 4 + j]);
+ SetMonData(&gEnemyParty[i], MON_DATA_PP1 + j, &gBattleMoves[gBattleResources->secretBase->party.moves[i * 4 + j]].pp);
}
}
}
}
-extern const u8 gUnknown_0831F578[];
-extern const u8 gTrainerClassToNameIndex[];
+extern const u8 gFacilityClassToPicIndex[];
+extern const u8 gFacilityClassToTrainerClass[];
extern const u8 gSecretBaseTrainerClasses[][5];
u8 GetSecretBaseTrainerPicIndex(void)
{
u8 trainerClass = gSecretBaseTrainerClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
- return gUnknown_0831F578[trainerClass];
+ return gFacilityClassToPicIndex[trainerClass];
}
u8 GetSecretBaseTrainerNameIndex(void)
{
u8 trainerClass = gSecretBaseTrainerClasses[gBattleResources->secretBase->gender][gBattleResources->secretBase->trainerId[0] % 5];
- return gTrainerClassToNameIndex[trainerClass];
+ return gFacilityClassToTrainerClass[trainerClass];
}
bool8 IsPlayerPartyAndPokemonStorageFull(void)
@@ -1353,7 +1353,7 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex)
StringCopy10(gBattleMons[bank].nickname, nickname);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[bank].otName);
- hpSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(bank)];
+ hpSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(bank)];
*hpSwitchout = gBattleMons[bank].hp;
for (i = 0; i < 8; i++)
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 7ffb2f36a..0dd1131de 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -25,15 +25,15 @@
extern struct BattlePokemon gBattleMons[4];
extern struct BattleEnigmaBerry gEnigmaBerries[4];
-extern u8 gActiveBank;
-extern u8 gBankInMenu;
-extern u8 gBankTarget;
-extern u8 gBankAttacker;
-extern u8 gStringBank;
+extern u8 gActiveBattler;
+extern u8 gBattlerInMenuId;
+extern u8 gBattlerTarget;
+extern u8 gBattlerAttacker;
+extern u8 gPotentialItemEffectBattler;
extern u16 gTrainerBattleOpponent_A;
extern u32 gBattleTypeFlags;
extern u8 gBattleMonForms[4];
-extern u16 gBattlePartyID[4];
+extern u16 gBattlerPartyIndexes[4];
extern u8 gLastUsedAbility;
extern u16 gPartnerTrainerId;
extern u32 gHitMarker;
@@ -113,7 +113,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
if (itemId == ITEM_ENIGMA_BERRY)
{
- temp = gEnigmaBerries[gActiveBank].itemEffect;
+ temp = gEnigmaBerries[gActiveBattler].itemEffect;
}
itemEffect = temp;
@@ -210,7 +210,7 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
void sub_806CF24(s32 stat)
{
- gBankTarget = gBankInMenu;
+ gBattlerTarget = gBattlerInMenuId;
StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[stat]]);
StringCopy(gBattleTextBuff2, gText_StatRose);
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2);
@@ -224,7 +224,7 @@ u8 *sub_806CF78(u16 itemId)
if (itemId == ITEM_ENIGMA_BERRY)
{
if (gMain.inBattle)
- itemEffect = gEnigmaBerries[gBankInMenu].itemEffect;
+ itemEffect = gEnigmaBerries[gBattlerInMenuId].itemEffect;
else
itemEffect = gSaveBlock1Ptr->enigmaBerry.itemEffect;
}
@@ -233,7 +233,7 @@ u8 *sub_806CF78(u16 itemId)
itemEffect = gItemEffectTable[itemId - 13];
}
- gStringBank = gBankInMenu;
+ gPotentialItemEffectBattler = gBattlerInMenuId;
for (i = 0; i < 3; i++)
{
@@ -247,7 +247,7 @@ u8 *sub_806CF78(u16 itemId)
}
else
{
- gBankAttacker = gBankInMenu;
+ gBattlerAttacker = gBattlerInMenuId;
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnGettingPumped);
}
}
@@ -255,7 +255,7 @@ u8 *sub_806CF78(u16 itemId)
if (itemEffect[3] & 0x80)
{
- gBankAttacker = gBankInMenu;
+ gBattlerAttacker = gBattlerInMenuId;
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist);
}
@@ -301,56 +301,56 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
for (i = 0; i < 5; i++)
{
- switch (gEvolutionTable[species].evolutions[i].method)
+ switch (gEvolutionTable[species][i].method)
{
case EVO_FRIENDSHIP:
if (friendship >= 220)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_FRIENDSHIP_DAY:
RtcCalcLocalTime();
if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && friendship >= 220)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_FRIENDSHIP_NIGHT:
RtcCalcLocalTime();
if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && friendship >= 220)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL:
- if (gEvolutionTable[species].evolutions[i].param <= level)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= level)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_ATK_GT_DEF:
- if (gEvolutionTable[species].evolutions[i].param <= level)
+ if (gEvolutionTable[species][i].param <= level)
if (GetMonData(mon, MON_DATA_ATK, 0) > GetMonData(mon, MON_DATA_DEF, 0))
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_ATK_EQ_DEF:
- if (gEvolutionTable[species].evolutions[i].param <= level)
+ if (gEvolutionTable[species][i].param <= level)
if (GetMonData(mon, MON_DATA_ATK, 0) == GetMonData(mon, MON_DATA_DEF, 0))
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_ATK_LT_DEF:
- if (gEvolutionTable[species].evolutions[i].param <= level)
+ if (gEvolutionTable[species][i].param <= level)
if (GetMonData(mon, MON_DATA_ATK, 0) < GetMonData(mon, MON_DATA_DEF, 0))
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_SILCOON:
- if (gEvolutionTable[species].evolutions[i].param <= level && (upperPersonality % 10) <= 4)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) <= 4)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_CASCOON:
- if (gEvolutionTable[species].evolutions[i].param <= level && (upperPersonality % 10) > 4)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) > 4)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_LEVEL_NINJASK:
- if (gEvolutionTable[species].evolutions[i].param <= level)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= level)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_BEAUTY:
- if (gEvolutionTable[species].evolutions[i].param <= beauty)
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ if (gEvolutionTable[species][i].param <= beauty)
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
}
}
@@ -358,17 +358,17 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
case 1:
for (i = 0; i < 5; i++)
{
- switch (gEvolutionTable[species].evolutions[i].method)
+ switch (gEvolutionTable[species][i].method)
{
case EVO_TRADE:
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
case EVO_TRADE_ITEM:
- if (gEvolutionTable[species].evolutions[i].param == heldItem)
+ if (gEvolutionTable[species][i].param == heldItem)
{
heldItem = 0;
SetMonData(mon, MON_DATA_HELD_ITEM, (u8 *)&heldItem);
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
}
break;
}
@@ -378,10 +378,10 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem)
case 3:
for (i = 0; i < 5; i++)
{
- if (gEvolutionTable[species].evolutions[i].method == EVO_ITEM
- && gEvolutionTable[species].evolutions[i].param == evolutionItem)
+ if (gEvolutionTable[species][i].method == EVO_ITEM
+ && gEvolutionTable[species][i].param == evolutionItem)
{
- targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies;
+ targetSpecies = gEvolutionTable[species][i].targetSpecies;
break;
}
}
@@ -615,7 +615,7 @@ bool16 sub_806D82C(u8 id)
return retVal;
}
-s32 GetBankMultiplayerId(u16 a1)
+s32 GetBattlerMultiplayerId(u16 a1)
{
s32 id;
for (id = 0; id < MAX_LINK_PLAYERS; id++)
@@ -1366,12 +1366,12 @@ void sub_806E994(void)
gBattleTextBuff1[2] = gBattleStruct->field_49;
gBattleTextBuff1[4] = B_BUFF_EOS;
- if (!GetBankSide(gBattleStruct->field_49))
- gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[gBattleStruct->field_49]);
+ if (!GetBattlerSide(gBattleStruct->field_49))
+ gBattleTextBuff1[3] = pokemon_order_func(gBattlerPartyIndexes[gBattleStruct->field_49]);
else
- gBattleTextBuff1[3] = gBattlePartyID[gBattleStruct->field_49];
+ gBattleTextBuff1[3] = gBattlerPartyIndexes[gBattleStruct->field_49];
- PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBankInMenu, pokemon_order_func(gBattlePartyID[gBankInMenu]))
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, pokemon_order_func(gBattlerPartyIndexes[gBattlerInMenuId]))
BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4);
}
@@ -1478,7 +1478,7 @@ const u8 *GetTrainerPartnerName(void)
else
{
u8 id = GetMultiplayerId();
- return gLinkPlayers[GetBankMultiplayerId(gLinkPlayers[id].lp_field_18 ^ 2)].name;
+ return gLinkPlayers[GetBattlerMultiplayerId(gLinkPlayers[id].lp_field_18 ^ 2)].name;
}
}
@@ -1652,11 +1652,11 @@ u8 sub_806EF84(u8 arg0, u8 arg1)
return i;
}
-extern const u8 gUnknown_0831F578[];
+extern const u8 gFacilityClassToPicIndex[];
u16 sub_806EFF0(u16 arg0)
{
- return gUnknown_0831F578[arg0];
+ return gFacilityClassToPicIndex[arg0];
}
u16 PlayerGenderToFrontTrainerPicId(u8 playerGender)
diff --git a/src/pokemon_animation.c b/src/pokemon_animation.c
index 2bd4e3ef9..02755fe40 100644
--- a/src/pokemon_animation.c
+++ b/src/pokemon_animation.c
@@ -16,7 +16,7 @@ struct UnkAnimStruct
s16 field_8;
};
-extern u16 gBattlePartyID[];
+extern u16 gBattlerPartyIndexes[];
// this file's functions
static void pokemonanimfunc_00(struct Sprite *sprite);
@@ -945,7 +945,7 @@ void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet)
gTasks[taskId].tPtrHI = (u32)(sprite);
bank = sprite->data[0];
- nature = GetNature(&gPlayerParty[gBattlePartyID[bank]]);
+ nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[bank]]);
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 bb196dd27..7f8c24ab7 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -71,7 +71,7 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_8571730[] =
sSpriteAffineAnim_8571720
};
-const struct TextColor gUnknown_08571734[] = {4, 0xF, 0xE};
+const u8 gUnknown_08571734[] = {4, 0xF, 0xE};
const u8 gUnknown_08571737[] = _("/30");
// code
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 4e5c9dca9..523ee1a1f 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -20,6 +20,7 @@
#include "task.h"
#include "text.h"
#include "window.h"
+#include "event_data.h"
struct ContestMove
{
@@ -36,8 +37,6 @@ struct ContestEffect
u8 jam;
};
-
-
extern struct UnkSummaryStruct* gUnknown_0203CF1C;
extern struct BgTemplate gUnknown_0861CBB4;
extern u8 gUnknown_0203CF20;
@@ -45,7 +44,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM;
extern s8 gUnknown_0861CC1C[];
extern u8 gUnknown_08329D22[];
extern u8 gUnknown_0203CF21;
-extern u16 gSpecialVar_0x8005;
extern struct UnkStruct_61CC04 gUnknown_0861CC04;
extern struct UnkStruct_61CC04 gUnknown_0861CC10;
extern struct UnkStruct_61CC04 gUnknown_0861CBEC;
@@ -54,7 +52,7 @@ extern u16 gSummaryScreenWindow_Tilemap[];
extern struct ContestMove gContestMoves[];
extern struct ContestEffect gContestEffects[];
extern struct WindowTemplate gUnknown_0861CC24;
-extern struct TextColor gUnknown_0861CD2C[];
+extern u8 gUnknown_0861CD2C[][3];
extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
extern u8 gText_MaleSymbol[];
extern u8 gText_FemaleSymbol[];
@@ -162,7 +160,7 @@ extern struct BattleMove gBattleMoves[];
extern u32 ChangeBgX(u8 bg, u32 value, u8 op);
extern void sub_8199C30(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f);
-extern void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor* colors, s8 speed, u8 *str);
+extern void AddTextPrinterParameterized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const u8* colors, s8 speed, u8 *str);
extern s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
extern bool8 sub_81A6BF4();
@@ -2557,7 +2555,7 @@ void sub_81C2554()
void sub_81C25A4(u8 a, u8 *b, u8 c, u8 d, u8 e, u8 f)
{
- AddTextPrinterParameterized2(a, 1, c, d, 0, e, &gUnknown_0861CD2C[f], 0, b);
+ AddTextPrinterParameterized2(a, 1, c, d, 0, e, gUnknown_0861CD2C[f], 0, b);
}
void sub_81C25E8()
diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c
index ce8747395..25b9ccd53 100644
--- a/src/rayquaza_scene.c
+++ b/src/rayquaza_scene.c
@@ -1,37 +1,101 @@
#include "global.h"
+#include "rayquaza_scene.h"
#include "sprite.h"
#include "task.h"
#include "graphics.h"
#include "bg.h"
-
-struct UnkRayquazaStruct
-{
- u32 field_0;
- u32 field_4;
- u32 field_8;
-};
+#include "main.h"
+#include "malloc.h"
+#include "palette.h"
+#include "scanline_effect.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "gpu_regs.h"
+#include "decompress.h"
+#include "sound.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/rgb.h"
+#include "random.h"
+
+struct RaySceneStruct
+{
+ MainCallback callback;
+ u8 tilemapBuffers[4][0x800];
+ u16 field_2004; // set but unused
+ u8 animId;
+ bool8 onlyOneAnim;
+ s16 field_2008;
+ s16 field_200A;
+ u8 unusedFields[12]; // completely unused
+};
+
+// EWRAM vars
+static EWRAM_DATA struct RaySceneStruct *sRayScene = NULL;
// this file's functions
-void sub_81D7134(u8 taskId);
-void sub_81D7F4C(u8 taskId);
-void sub_81D84EC(u8 taskId);
-void sub_81D8980(u8 taskId);
-void sub_81D8DB4(u8 taskId);
-void sub_81D6800(u8 taskId);
-
-void sub_81D8260(struct Sprite *sprite);
-void sub_81D961C(struct Sprite *sprite);
+static void Task_DuoFightAnim(u8 taskId);
+static void Task_RayTakesFlightAnim(u8 taskId);
+static void Task_RayDescendsAnim(u8 taskId);
+static void Task_RayChargesAnim(u8 taskId);
+static void Task_RayChasesAwayAnim(u8 taskId);
+static void Task_HandleRayDescends(u8 taskId);
+static void Task_RayDescendsEnd(u8 taskId);
+static void Task_HandleRayCharges(u8 taskId);
+static void sub_81D8AD8(u8 taskId);
+static void sub_81D8B2C(u8 taskId);
+static void Task_RayChargesEnd(u8 taskId);
+static void Task_HandleRayChasesAway(u8 taskId);
+static void sub_81D8FB0(u8 taskId);
+static void sub_81D7228(u8 taskId);
+static void Task_HandleDuoFight(u8 taskId);
+static void sub_81D752C(u8 taskId);
+static void Task_DuoFightEnd(u8 taskId);
+static void Task_HandleRayTakesFlight(u8 taskId);
+static void sub_81D81A4(u8 taskId);
+static void Task_RayTakesFlightEnd(u8 taskId);
+static void sub_81D94D4(u8 taskId);
+static void sub_81D93D8(u8 taskId);
+static void Task_RayChasesAwayEnd(u8 taskId);
+static void sub_81D90A8(u8 taskId);
+static void sub_81D98B4(u8 taskId);
+static void Task_EndAfterFadeScreen(u8 taskId);
+static void CB2_InitRayquazaScene(void);
+static void CB2_RayquazaScene(void);
+static void sub_81D750C(void);
+static void sub_81D7438(void);
+static void sub_81D7480(void);
+static void sub_81D74C8(void);
+static void sub_81D8BB4(void);
+static void sub_81D6A20(struct Sprite *sprite);
+static void sub_81D6D20(struct Sprite *sprite);
+static void sub_81D7860(struct Sprite *sprite);
+static void sub_81D7D14(struct Sprite *sprite);
+static void sub_81D7700(struct Sprite *sprite);
+static void sub_81D7A60(struct Sprite *sprite);
+static void sub_81D874C(struct Sprite *sprite);
+static void sub_81D9338(struct Sprite *sprite);
+static void sub_81D9420(struct Sprite *sprite);
+static void sub_81D8260(struct Sprite *sprite);
+static void sub_81D961C(struct Sprite *sprite);
+static void sub_81D97E0(struct Sprite *sprite);
+static void sub_81D9528(struct Sprite *sprite);
+static u8 sub_81D7664(void);
+static u8 sub_81D78BC(void);
+static u8 sub_81D86CC(void);
+static void DuoFightEnd(u8 taskId, s8 palDelay);
+static void sub_81D9868(struct Sprite *sprite, u8 animNum, s16 x, s16 y);
// const rom data
-const TaskFunc gUnknown_0862A6A0[] =
+static const TaskFunc sTasksForAnimations[] =
{
- sub_81D7134,
- sub_81D7134,
- sub_81D7F4C,
- sub_81D84EC,
- sub_81D8980,
- sub_81D8DB4,
- sub_81D6800
+ Task_DuoFightAnim, // RAY_ANIM_DUO_FIGHT_PRE
+ Task_DuoFightAnim, // RAY_ANIM_DUO_FIGHT
+ Task_RayTakesFlightAnim, // RAY_ANIM_TAKES_FLIGHT
+ Task_RayDescendsAnim, // RAY_ANIM_DESCENDS
+ Task_RayChargesAnim, // RAY_ANIM_CHARGES
+ Task_RayChasesAwayAnim, // RAY_ANIM_CHACES_AWAY
+ Task_EndAfterFadeScreen // RAY_ANIM_END
};
static const struct OamData sOamData_862A6BC =
@@ -194,7 +258,7 @@ static const union AnimCmd *const sSpriteAnimTable_862A724[] =
sSpriteAnim_862A710
};
-const struct SpriteTemplate gUnknown_0862A72C =
+static const struct SpriteTemplate sUnknown_0862A72C =
{
.tileTag = 30505,
.paletteTag = 30505,
@@ -216,7 +280,7 @@ static const union AnimCmd *const sSpriteAnimTable_862A74C[] =
sSpriteAnim_862A744
};
-const struct SpriteTemplate gUnknown_0862A750 =
+static const struct SpriteTemplate sUnknown_0862A750 =
{
.tileTag = 30506,
.paletteTag = 30505,
@@ -238,7 +302,7 @@ static const union AnimCmd *const sSpriteAnimTable_862A770[] =
sSpriteAnim_862A768
};
-const struct SpriteTemplate gUnknown_0862A774 =
+static const struct SpriteTemplate sUnknown_0862A774 =
{
.tileTag = 30507,
.paletteTag = 30505,
@@ -325,7 +389,7 @@ static const union AnimCmd *const sSpriteAnimTable_862A7F8[] =
sSpriteAnim_862A7E4
};
-const struct SpriteTemplate gUnknown_0862A81C =
+static const struct SpriteTemplate sUnknown_0862A81C =
{
.tileTag = 30508,
.paletteTag = 30508,
@@ -350,7 +414,7 @@ static const union AnimCmd *const sSpriteAnimTable_862A848[] =
sSpriteAnim_862A834
};
-const struct SpriteTemplate gUnknown_0862A84C =
+static const struct SpriteTemplate sUnknown_0862A84C =
{
.tileTag = 30509,
.paletteTag = 30508,
@@ -361,7 +425,7 @@ const struct SpriteTemplate gUnknown_0862A84C =
.callback = SpriteCallbackDummy,
};
-const struct SpriteTemplate gUnknown_0862A864 =
+static const struct SpriteTemplate sUnknown_0862A864 =
{
.tileTag = 30510,
.paletteTag = 30508,
@@ -372,9 +436,14 @@ const struct SpriteTemplate gUnknown_0862A864 =
.callback = SpriteCallbackDummy,
};
-const struct UnkRayquazaStruct gUnknown_0862A87C = {0x4000014, 0xA2600001, 1};
+static const struct ScanlineEffectParams sUnknown_0862A87C =
+{
+ .dmaDest = (vu16 *)REG_ADDR_BG1HOFS,
+ .dmaControl = 0xA2600001,
+ .initState = 1
+};
-const struct BgTemplate gUnknown_0862A888[] =
+static const struct BgTemplate sUnknown_0862A888[] =
{
{
.bg = 0,
@@ -429,17 +498,17 @@ static const union AnimCmd *const sSpriteAnimTable_862A8BC[] =
sSpriteAnim_862A8A8
};
-const struct CompressedSpriteSheet gUnknown_0862A8C4 =
+static const struct CompressedSpriteSheet sUnknown_0862A8C4 =
{
gRaySceneGroudon_Gfx, 0x3000, 30505
};
-const struct CompressedSpritePalette gUnknown_0862A8CC =
+static const struct CompressedSpritePalette sUnknown_0862A8CC =
{
gRaySceneGroudon_Pal, 30505
};
-const struct SpriteTemplate gUnknown_0862A8D4 =
+static const struct SpriteTemplate sUnknown_0862A8D4 =
{
.tileTag = 30505,
.paletteTag = 30505,
@@ -461,12 +530,12 @@ static const union AnimCmd *const sSpriteAnimTable_862A8F4[] =
sSpriteAnim_862A8EC
};
-const struct CompressedSpriteSheet gUnknown_0862A8F8 =
+static const struct CompressedSpriteSheet sUnknown_0862A8F8 =
{
gRaySceneGroudon2_Gfx, 0x200, 30506
};
-const struct SpriteTemplate gUnknown_0862A900 =
+static const struct SpriteTemplate sUnknown_0862A900 =
{
.tileTag = 30506,
.paletteTag = 30505,
@@ -488,12 +557,12 @@ static const union AnimCmd *const sSpriteAnimTable_862A920[] =
sSpriteAnim_862A918
};
-const struct CompressedSpriteSheet gUnknown_0862A924 =
+static const struct CompressedSpriteSheet sUnknown_0862A924 =
{
gRaySceneGroudon3_Gfx, 0x400, 30507
};
-const struct SpriteTemplate gUnknown_0862A92C =
+static const struct SpriteTemplate sUnknown_0862A92C =
{
.tileTag = 30507,
.paletteTag = 30505,
@@ -580,17 +649,17 @@ static const union AnimCmd *const sSpriteAnimTable_862A9B0[] =
sSpriteAnim_862A99C
};
-const struct CompressedSpriteSheet gUnknown_0862A9D4 =
+static const struct CompressedSpriteSheet sUnknown_0862A9D4 =
{
gRaySceneKyogre_Gfx, 0xF00, 30508
};
-const struct CompressedSpritePalette gUnknown_0862A9DC =
+static const struct CompressedSpritePalette sUnknown_0862A9DC =
{
gRaySceneKyogre_Pal, 30508
};
-const struct SpriteTemplate gUnknown_0862A9E4 =
+static const struct SpriteTemplate sUnknown_0862A9E4 =
{
.tileTag = 30508,
.paletteTag = 30508,
@@ -615,12 +684,12 @@ static const union AnimCmd *const sSpriteAnimTable_862AA10[] =
sSpriteAnim_862A9FC
};
-const struct CompressedSpriteSheet gUnknown_0862AA14 =
+static const struct CompressedSpriteSheet sUnknown_0862AA14 =
{
gRaySceneKyogre2_Gfx, 0xC0, 30509
};
-const struct SpriteTemplate gUnknown_0862AA1C =
+static const struct SpriteTemplate sUnknown_0862AA1C =
{
.tileTag = 30509,
.paletteTag = 30508,
@@ -631,12 +700,12 @@ const struct SpriteTemplate gUnknown_0862AA1C =
.callback = SpriteCallbackDummy,
};
-const struct CompressedSpriteSheet gUnknown_0862AA34 =
+static const struct CompressedSpriteSheet sUnknown_0862AA34 =
{
gRaySceneKyogre3_Gfx, 0x200, 30510
};
-const struct SpriteTemplate gUnknown_0862AA3C =
+static const struct SpriteTemplate sUnknown_0862AA3C =
{
.tileTag = 30510,
.paletteTag = 30508,
@@ -647,7 +716,7 @@ const struct SpriteTemplate gUnknown_0862AA3C =
.callback = SpriteCallbackDummy,
};
-const struct BgTemplate gUnknown_0862AA54[] =
+static const struct BgTemplate sUnknown_0862AA54[] =
{
{
.bg = 0,
@@ -702,17 +771,17 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_862AA8C[] =
sSpriteAffineAnim_862AA6C
};
-const struct CompressedSpriteSheet gUnknown_0862AA90 =
+static const struct CompressedSpriteSheet sUnknown_0862AA90 =
{
gRaySceneSmoke_Gfx, 0x100, 30555
};
-const struct CompressedSpritePalette gUnknown_0862AA98 =
+static const struct CompressedSpritePalette sUnknown_0862AA98 =
{
gRaySceneSmoke_Pal, 30555
};
-const struct SpriteTemplate gUnknown_0862AAA0 =
+static const struct SpriteTemplate sUnknown_0862AAA0 =
{
.tileTag = 30555,
.paletteTag = 30555,
@@ -723,7 +792,7 @@ const struct SpriteTemplate gUnknown_0862AAA0 =
.callback = sub_81D8260,
};
-const s8 gUnknown_0862AAB8[][2] =
+static const s8 sUnknown_0862AAB8[][2] =
{
{-1, 5},
{-3, -4},
@@ -737,7 +806,7 @@ const s8 gUnknown_0862AAB8[][2] =
{9, 1}
};
-const struct BgTemplate gUnknown_0862AACC[] =
+static const struct BgTemplate sUnknown_0862AACC[] =
{
{
.bg = 0,
@@ -801,22 +870,22 @@ static const union AnimCmd *const sSpriteAnimTable_862AAF8[] =
sSpriteAnim_862AAEC
};
-const struct CompressedSpriteSheet gUnknown_0862AAFC =
+static const struct CompressedSpriteSheet sUnknown_0862AAFC =
{
gRaySceneRayquazaFly1_Gfx, 0x1000, 30556
};
-const struct CompressedSpriteSheet gUnknown_0862AB04 =
+static const struct CompressedSpriteSheet sUnknown_0862AB04 =
{
gRaySceneRayquazaTail_Gfx, 0x200, 30557
};
-const struct CompressedSpritePalette gUnknown_0862AB0C =
+static const struct CompressedSpritePalette sUnknown_0862AB0C =
{
gRaySceneRayquaza_Pal, 30556
};
-const struct SpriteTemplate gUnknown_0862AB14 =
+static const struct SpriteTemplate sUnknown_0862AB14 =
{
.tileTag = 30556,
.paletteTag = 30556,
@@ -827,7 +896,7 @@ const struct SpriteTemplate gUnknown_0862AB14 =
.callback = SpriteCallbackDummy,
};
-const struct SpriteTemplate gUnknown_0862AB2C =
+static const struct SpriteTemplate sUnknown_0862AB2C =
{
.tileTag = 30557,
.paletteTag = 30556,
@@ -838,7 +907,7 @@ const struct SpriteTemplate gUnknown_0862AB2C =
.callback = SpriteCallbackDummy,
};
-const struct BgTemplate gUnknown_0862AB44[] =
+static const struct BgTemplate sUnknown_0862AB44[] =
{
{
.bg = 0,
@@ -1015,57 +1084,57 @@ static const union AnimCmd *const sSpriteAnimTable_862AC24[] =
sSpriteAnim_862AC08
};
-const struct CompressedSpriteSheet gUnknown_0862AC28 =
+static const struct CompressedSpriteSheet sUnknown_0862AC28 =
{
gRaySceneGroudonLeft_Gfx, 0x1800, 30565
};
-const struct CompressedSpriteSheet gUnknown_0862AC30 =
+static const struct CompressedSpriteSheet sUnknown_0862AC30 =
{
gRaySceneGroudonTail_Gfx, 0x80, 30566
};
-const struct CompressedSpriteSheet gUnknown_0862AC38 =
+static const struct CompressedSpriteSheet sUnknown_0862AC38 =
{
gRaySceneKyogreRight_Gfx, 0x600, 30568
};
-const struct CompressedSpriteSheet gUnknown_0862AC40 =
+static const struct CompressedSpriteSheet sUnknown_0862AC40 =
{
gRaySceneRayquazaHover_Gfx, 0x2000, 30569
};
-const struct CompressedSpriteSheet gUnknown_0862AC48 =
+static const struct CompressedSpriteSheet sUnknown_0862AC48 =
{
gRaySceneRayquazaFlyIn_Gfx, 0x800, 30570
};
-const struct CompressedSpriteSheet gUnknown_0862AC50 =
+static const struct CompressedSpriteSheet sUnknown_0862AC50 =
{
gRaySceneSplash_Gfx, 0x300, 30571
};
-const struct CompressedSpritePalette gUnknown_0862AC58 =
+static const struct CompressedSpritePalette sUnknown_0862AC58 =
{
gRaySceneGroudonLeft_Pal, 30565
};
-const struct CompressedSpritePalette gUnknown_0862AC60 =
+static const struct CompressedSpritePalette sUnknown_0862AC60 =
{
gRaySceneKyogreRight_Pal, 30568
};
-const struct CompressedSpritePalette gUnknown_0862AC68 =
+static const struct CompressedSpritePalette sUnknown_0862AC68 =
{
gRaySceneRayquazaHover_Pal, 30569
};
-const struct CompressedSpritePalette gUnknown_0862AC70 =
+static const struct CompressedSpritePalette sUnknown_0862AC70 =
{
gRaySceneSplash_Pal, 30571
};
-const struct SpriteTemplate gUnknown_0862AC78 =
+static const struct SpriteTemplate sUnknown_0862AC78 =
{
.tileTag = 30565,
.paletteTag = 30565,
@@ -1076,7 +1145,7 @@ const struct SpriteTemplate gUnknown_0862AC78 =
.callback = SpriteCallbackDummy,
};
-const struct SpriteTemplate gUnknown_0862AC90 =
+static const struct SpriteTemplate sUnknown_0862AC90 =
{
.tileTag = 30566,
.paletteTag = 30565,
@@ -1087,7 +1156,7 @@ const struct SpriteTemplate gUnknown_0862AC90 =
.callback = SpriteCallbackDummy,
};
-const struct SpriteTemplate gUnknown_0862ACA8 =
+static const struct SpriteTemplate sUnknown_0862ACA8 =
{
.tileTag = 30568,
.paletteTag = 30568,
@@ -1098,7 +1167,7 @@ const struct SpriteTemplate gUnknown_0862ACA8 =
.callback = SpriteCallbackDummy,
};
-const struct SpriteTemplate gUnknown_0862ACC0 =
+static const struct SpriteTemplate sUnknown_0862ACC0 =
{
.tileTag = 30569,
.paletteTag = 30569,
@@ -1109,7 +1178,7 @@ const struct SpriteTemplate gUnknown_0862ACC0 =
.callback = sub_81D961C,
};
-const struct SpriteTemplate gUnknown_0862ACD8 =
+static const struct SpriteTemplate sUnknown_0862ACD8 =
{
.tileTag = 30570,
.paletteTag = 30569,
@@ -1120,7 +1189,7 @@ const struct SpriteTemplate gUnknown_0862ACD8 =
.callback = SpriteCallbackDummy,
};
-const struct SpriteTemplate gUnknown_0862ACF0 =
+static const struct SpriteTemplate sUnknown_0862ACF0 =
{
.tileTag = 30571,
.paletteTag = 30571,
@@ -1131,7 +1200,7 @@ const struct SpriteTemplate gUnknown_0862ACF0 =
.callback = SpriteCallbackDummy,
};
-const struct BgTemplate gUnknown_0862AD08[] =
+static const struct BgTemplate sUnknown_0862AD08[] =
{
{
.bg = 0,
@@ -1162,3 +1231,1702 @@ const struct BgTemplate gUnknown_0862AD08[] =
}
};
+// code
+void DoRayquazaScene(u8 animId, bool8 onlyOneAnim, void (*callback)(void))
+{
+ sRayScene = AllocZeroed(sizeof(*sRayScene));
+ sRayScene->animId = animId;
+ sRayScene->callback = callback;
+ sRayScene->onlyOneAnim = onlyOneAnim;
+ SetMainCallback2(CB2_InitRayquazaScene);
+}
+
+static void CB2_InitRayquazaScene(void)
+{
+ SetVBlankHBlankCallbacksToNull();
+ clear_scheduled_bg_copies_to_vram();
+ ScanlineEffect_Stop();
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ FillPalette(0, 0xF0, 0x20);
+ CreateTask(sTasksForAnimations[sRayScene->animId], 0);
+ SetMainCallback2(CB2_RayquazaScene);
+}
+
+static void CB2_RayquazaScene(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB_RayquazaScene(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void Task_EndAfterFadeScreen(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetMainCallback2(sRayScene->callback);
+ Free(sRayScene);
+ DestroyTask(taskId);
+ }
+}
+
+static void Task_SetNextAnim(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ if (sRayScene->onlyOneAnim == TRUE)
+ {
+ gTasks[taskId].func = Task_EndAfterFadeScreen;
+ }
+ else
+ {
+ sRayScene->animId++;
+ sRayScene->field_2004 = 0;
+ gTasks[taskId].func = sTasksForAnimations[sRayScene->animId];
+ }
+ }
+}
+
+static void sub_81D68C8(void)
+{
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x1888);
+ gPlttBufferUnfaded[0] = 0;
+ gPlttBufferFaded[0] = 0;
+}
+
+static void sub_81D6904(void)
+{
+ SetGpuReg(REG_OFFSET_WININ, 0x3F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x3F);
+}
+
+static void Task_HandleDuoFightPre(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_81D750C();
+ if (!gPaletteFade.active)
+ {
+ s16 counter = data[0];
+ if (counter == 64)
+ {
+ sub_81D7438();
+ }
+ else if (counter == 144)
+ {
+ sub_81D7480();
+ }
+ else
+ {
+ switch (counter)
+ {
+ case 328:
+ DuoFightEnd(taskId, 0);
+ return;
+ case 148:
+ sub_81D74C8();
+ break;
+ }
+ }
+
+ data[0]++;
+ }
+}
+
+static u8 sub_81D6984(void)
+{
+ u8 spriteId;
+ s16 *data;
+
+ spriteId = CreateSprite(&sUnknown_0862A72C, 88, 72, 3);
+ gSprites[spriteId].callback = sub_81D6A20;
+ data = gSprites[spriteId].data;
+ data[0] = CreateSprite(&sUnknown_0862A72C, 56, 104, 3);
+ data[1] = CreateSprite(&sUnknown_0862A750, 75, 101, 0);
+ data[2] = CreateSprite(&sUnknown_0862A774, 109, 114, 1);
+ StartSpriteAnim(&gSprites[data[0]], 1);
+ return spriteId;
+}
+
+static void sub_81D6A20(struct Sprite *sprite)
+{
+ s16 *data = sprite->data;
+ data[5]++;
+ data[5] &= 0x1F;
+ if (data[5] == 0 && sprite->pos1.x != 72)
+ {
+ sprite->pos1.x--;
+ gSprites[sprite->data[0]].pos1.x--;
+ gSprites[data[1]].pos1.x--;
+ gSprites[data[2]].pos1.x--;
+ }
+
+ switch (sprite->animCmdIndex)
+ {
+ case 0:
+ gSprites[data[1]].pos2.x = 0;
+ gSprites[data[1]].pos2.y = 0;
+ gSprites[data[2]].pos2.x = 0;
+ gSprites[data[2]].pos2.y = 0;
+ break;
+ case 1:
+ case 3:
+ gSprites[data[1]].pos2.x = -1;
+ gSprites[data[1]].pos2.y = 0;
+ gSprites[data[2]].pos2.x = -1;
+ gSprites[data[2]].pos2.y = 0;
+ break;
+ case 2:
+ gSprites[data[1]].pos2.x = -1;
+ gSprites[data[1]].pos2.y = 1;
+ gSprites[data[2]].pos2.x = -2;
+ gSprites[data[2]].pos2.y = 1;
+ break;
+ }
+}
+
+static u8 sub_81D6B7C(void)
+{
+ u8 spriteId;
+ s16 *data;
+
+ spriteId = CreateSprite(&sUnknown_0862A81C, 136, 96, 1);
+ gSprites[spriteId].callback = sub_81D6D20;
+ data = gSprites[spriteId].data;
+
+ data[0] = CreateSprite(&sUnknown_0862A81C, 168, 96, 1) << 8;
+ data[0] |= CreateSprite(&sUnknown_0862A81C, 136, 112, 1);
+ data[1] = CreateSprite(&sUnknown_0862A81C, 168, 112, 1) << 8;
+ data[1] |= CreateSprite(&sUnknown_0862A81C, 136, 128, 1);
+ data[2] = CreateSprite(&sUnknown_0862A81C, 168, 128, 1) << 8;
+ data[2] |= CreateSprite(&sUnknown_0862A81C, 104, 128, 2);
+ data[3] = CreateSprite(&sUnknown_0862A81C, 136, 128, 2) << 8;
+ data[3] |= CreateSprite(&sUnknown_0862A81C, 184, 128, 0);
+ data[4] = CreateSprite(&sUnknown_0862A84C, 208, 132, 0) << 8;
+ data[4] |= CreateSprite(&sUnknown_0862A864, 200, 120, 1);
+
+ StartSpriteAnim(&gSprites[data[0] >> 8], 1);
+ StartSpriteAnim(&gSprites[data[0] & 0xFF], 2);
+ StartSpriteAnim(&gSprites[data[1] >> 8], 3);
+ StartSpriteAnim(&gSprites[data[1] & 0xFF], 4);
+ StartSpriteAnim(&gSprites[data[2] >> 8], 5);
+ StartSpriteAnim(&gSprites[data[2] & 0xFF], 6);
+ StartSpriteAnim(&gSprites[data[3] >> 8], 7);
+ StartSpriteAnim(&gSprites[data[3] & 0xFF], 8);
+
+ return spriteId;
+}
+
+static void sub_81D6D20(struct Sprite *sprite)
+{
+ s16 *data = sprite->data;
+ data[5]++;
+ data[5] &= 0x1F;
+ if (data[5] == 0 && sprite->pos1.x != 152)
+ {
+ sprite->pos1.x++;
+ gSprites[sprite->data[0] >> 8].pos1.x++;
+ gSprites[sprite->data[0] & 0xFF].pos1.x++;
+ gSprites[data[1] >> 8].pos1.x++;
+ gSprites[data[1] & 0xFF].pos1.x++;
+ gSprites[data[2] >> 8].pos1.x++;
+ gSprites[data[2] & 0xFF].pos1.x++;
+ gSprites[data[3] >> 8].pos1.x++;
+ gSprites[data[3] & 0xFF].pos1.x++;
+ gSprites[data[4] >> 8].pos1.x++;
+ gSprites[data[4] & 0xFF].pos1.x++;
+ }
+
+ switch (gSprites[data[2] & 0xFF].animCmdIndex)
+ {
+ case 0:
+ sprite->pos2.y = 0;
+ gSprites[data[0] >> 8].pos2.y = 0;
+ gSprites[data[0] & 0xFF].pos2.y = 0;
+ gSprites[data[1] >> 8].pos2.y = 0;
+ gSprites[data[1] & 0xFF].pos2.y = 0;
+ gSprites[data[2] >> 8].pos2.y = 0;
+ gSprites[data[2] & 0xFF].pos2.y = 0;
+ gSprites[data[3] >> 8].pos2.y = 0;
+ gSprites[data[3] & 0xFF].pos2.y = 0;
+ gSprites[data[4] >> 8].pos2.y = 0;
+ gSprites[data[4] & 0xFF].pos2.y = 0;
+ break;
+ case 1:
+ case 3:
+ sprite->pos2.y = 1;
+ gSprites[data[0] >> 8].pos2.y = 1;
+ gSprites[data[0] & 0xFF].pos2.y = 1;
+ gSprites[data[1] >> 8].pos2.y = 1;
+ gSprites[data[1] & 0xFF].pos2.y = 1;
+ gSprites[data[2] >> 8].pos2.y = 1;
+ gSprites[data[2] & 0xFF].pos2.y = 1;
+ gSprites[data[3] >> 8].pos2.y = 1;
+ gSprites[data[3] & 0xFF].pos2.y = 1;
+ gSprites[data[4] >> 8].pos2.y = 1;
+ gSprites[data[4] & 0xFF].pos2.y = 1;
+ break;
+ case 2:
+ sprite->pos2.y = 2;
+ gSprites[data[0] >> 8].pos2.y = 2;
+ gSprites[data[0] & 0xFF].pos2.y = 2;
+ gSprites[data[1] >> 8].pos2.y = 2;
+ gSprites[data[1] & 0xFF].pos2.y = 2;
+ gSprites[data[2] >> 8].pos2.y = 2;
+ gSprites[data[4] & 0xFF].pos2.y = 2;
+ break;
+ }
+}
+
+static void VBlankCB_DuoFight(void)
+{
+ VBlankCB_RayquazaScene();
+ ScanlineEffect_InitHBlankDmaTransfer();
+}
+
+static void sub_81D6FE0(void)
+{
+ ResetVramOamAndBgCntRegs();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sUnknown_0862A888, ARRAY_COUNT(sUnknown_0862A888));
+ SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
+ SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
+ ResetAllBgsCoordinates();
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+}
+
+static void sub_81D706C(void)
+{
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(0, gRaySceneClouds_Gfx, 0, 0, 0);
+ while (free_temp_tile_data_buffers_if_possible());
+
+ LZDecompressWram(gRaySceneClouds2_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneClouds1_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneClouds3_Tilemap, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneClouds_Pal, 0, 0x40);
+ LoadCompressedObjectPic(&sUnknown_0862A8C4);
+ LoadCompressedObjectPic(&sUnknown_0862A8F8);
+ LoadCompressedObjectPic(&sUnknown_0862A924);
+ LoadCompressedObjectPic(&sUnknown_0862A9D4);
+ LoadCompressedObjectPic(&sUnknown_0862AA14);
+ LoadCompressedObjectPic(&sUnknown_0862AA34);
+ LoadCompressedObjectPalette(&sUnknown_0862A8CC);
+ LoadCompressedObjectPalette(&sUnknown_0862A9DC);
+}
+
+static void Task_DuoFightAnim(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ ScanlineEffect_Clear();
+ sub_81D6FE0();
+ sub_81D706C();
+ CpuFastFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers));
+ ScanlineEffect_SetParams(sUnknown_0862A87C);
+ data[0] = 0;
+ data[1] = CreateTask(sub_81D7228, 0);
+ if (sRayScene->animId == RAY_ANIM_DUO_FIGHT_PRE)
+ {
+ data[2] = sub_81D6984();
+ data[3] = sub_81D6B7C();
+ gTasks[taskId].func = Task_HandleDuoFightPre;
+ }
+ else
+ {
+ data[2] = sub_81D7664();
+ data[3] = sub_81D78BC();
+ gTasks[taskId].func = Task_HandleDuoFight;
+ StopMapMusic();
+ }
+
+ BlendPalettes(-1, 0x10, 0);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetVBlankCallback(VBlankCB_DuoFight);
+ PlaySE(SE_T_OOAME);
+}
+
+static void sub_81D7228(u8 taskId)
+{
+ s16 i;
+ u16 *data = gTasks[taskId].data;
+
+ for (i = 24; i < 92; i++)
+ {
+ if (i <= 47)
+ {
+ gScanlineEffectRegBuffers[0][i] = data[0] >> 8;
+ gScanlineEffectRegBuffers[1][i] = data[0] >> 8;
+ }
+ else if (i <= 63)
+ {
+ gScanlineEffectRegBuffers[0][i] = data[1] >> 8;
+ gScanlineEffectRegBuffers[1][i] = data[1] >> 8;
+ }
+ else if (i <= 75)
+ {
+ gScanlineEffectRegBuffers[0][i] = data[2] >> 8;
+ gScanlineEffectRegBuffers[1][i] = data[2] >> 8;
+ }
+ else if (i <= 83)
+ {
+ gScanlineEffectRegBuffers[0][i] = data[3] >> 8;
+ gScanlineEffectRegBuffers[1][i] = data[3] >> 8;
+ }
+ else if (i <= 87)
+ {
+ gScanlineEffectRegBuffers[0][i] = data[4] >> 8;
+ gScanlineEffectRegBuffers[1][i] = data[4] >> 8;
+ }
+ else
+ {
+ gScanlineEffectRegBuffers[0][i] = data[5] >> 8;
+ gScanlineEffectRegBuffers[1][i] = data[5] >> 8;
+ }
+ }
+
+ if (sRayScene->animId == RAY_ANIM_DUO_FIGHT_PRE)
+ {
+ data[0] += 448;
+ data[1] += 384;
+ data[2] += 320;
+ data[3] += 256;
+ data[4] += 192;
+ data[5] += 128;
+ }
+ else
+ {
+ data[0] += 768;
+ data[1] += 640;
+ data[2] += 512;
+ data[3] += 384;
+ data[4] += 256;
+ data[5] += 128;
+ }
+}
+
+static void Task_HandleDuoFight(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_81D750C();
+ if (!gPaletteFade.active)
+ {
+ s16 counter = data[0];
+ if (counter == 32 || counter == 112)
+ {
+ sub_81D7438();
+ }
+ else if (counter == 216)
+ {
+ sub_81D7480();
+ }
+ else if (counter == 220)
+ {
+ sub_81D74C8();
+ }
+ else
+ {
+ switch (counter)
+ {
+ case 412:
+ DuoFightEnd(taskId, 2);
+ return;
+ case 380:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
+ gTasks[data[1]].func = sub_81D752C;
+ gTasks[data[1]].data[0] = 0;
+ gTasks[data[1]].data[2] = data[2];
+ gTasks[data[1]].data[3] = data[3];
+ ScanlineEffect_Stop();
+ break;
+ }
+ }
+
+ data[0]++;
+ }
+}
+
+static void sub_81D7438(void)
+{
+ PlaySE(SE_T_KAMI);
+ sub_80A2C44(0x7FFF, 0, 0x10, 0, -1, 0, 0);
+ sub_80A2C44(0xFFFF0000, 0, 0x10, 0, 0, 0, 1);
+}
+
+static void sub_81D7480(void)
+{
+ PlaySE(SE_T_KAMI);
+ sub_80A2C44(0x7FFF, 0, 0x10, 0x10, -1, 0, 0);
+ sub_80A2C44(0xFFFF0000, 0, 0x10, 0x10, 0, 0, 1);
+}
+
+static void sub_81D74C8(void)
+{
+ sub_80A2C44(0x7FFF, 4, 0x10, 0, -1, 0, 0);
+ sub_80A2C44(0xFFFF0000, 4, 0x10, 0, 0, 0, 1);
+}
+
+static void sub_81D750C(void)
+{
+ ChangeBgX(2, 0x400, 1);
+ ChangeBgY(2, 0x800, 2);
+}
+
+static void sub_81D752C(u8 taskId)
+{
+ u16 bgY;
+ s16 *data = gTasks[taskId].data;
+ sub_81D7860(&gSprites[data[2]]);
+ sub_81D7D14(&gSprites[data[3]]);
+
+ bgY = GetBgY(1);
+ if (GetBgY(1) == 0 || bgY > 0x8000)
+ ChangeBgY(1, 0x400, 2);
+
+ if (data[0] != 16)
+ {
+ data[0]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, (data[0] << 8) | (16 - data[0]));
+ }
+}
+
+static void DuoFightEnd(u8 taskId, s8 palDelay)
+{
+ PlaySE(SE_T_OOAME_E);
+ BeginNormalPaletteFade(-1, palDelay, 0, 0x10, 0);
+ gTasks[taskId].func = Task_DuoFightEnd;
+}
+
+static void Task_DuoFightEnd(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_81D750C();
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(data[1]);
+ ChangeBgY(1, 0, 0);
+ SetVBlankCallback(NULL);
+ ScanlineEffect_Stop();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ data[0] = 0;
+ gTasks[taskId].func = Task_SetNextAnim;
+ }
+}
+
+static u8 sub_81D7664(void)
+{
+ u8 spriteId;
+ s16 *data;
+
+ spriteId = CreateSprite(&sUnknown_0862A8D4, 98, 72, 3);
+ gSprites[spriteId].callback = sub_81D7700;
+ data = gSprites[spriteId].data;
+ data[0] = CreateSprite(&sUnknown_0862A8D4, 66, 104, 3);
+ data[1] = CreateSprite(&sUnknown_0862A900, 85, 101, 0);
+ data[2] = CreateSprite(&sUnknown_0862A92C, 119, 114, 1);
+ StartSpriteAnim(&gSprites[data[0]], 1);
+ return spriteId;
+}
+
+static void sub_81D7700(struct Sprite *sprite)
+{
+ s16 *data = sprite->data;
+ data[5]++;
+ data[5] &= 0xF;
+ if (!(data[5] & 7) && sprite->pos1.x != 72)
+ {
+ sprite->pos1.x--;
+ gSprites[sprite->data[0]].pos1.x--;
+ gSprites[data[1]].pos1.x--;
+ gSprites[data[2]].pos1.x--;
+ }
+
+ switch (sprite->animCmdIndex)
+ {
+ case 0:
+ gSprites[data[1]].pos2.x = 0;
+ gSprites[data[1]].pos2.y = 0;
+ gSprites[data[2]].pos2.x = 0;
+ gSprites[data[2]].pos2.y = 0;
+ break;
+ case 1:
+ case 3:
+ gSprites[data[1]].pos2.x = -1;
+ gSprites[data[1]].pos2.y = 0;
+ gSprites[data[2]].pos2.x = -1;
+ gSprites[data[2]].pos2.y = 0;
+ break;
+ case 2:
+ gSprites[data[1]].pos2.x = -1;
+ gSprites[data[1]].pos2.y = 1;
+ gSprites[data[2]].pos2.x = -2;
+ gSprites[data[2]].pos2.y = 1;
+ break;
+ }
+}
+
+static void sub_81D7860(struct Sprite *sprite)
+{
+ s16 *data = sprite->data;
+ if (sprite->pos1.y <= 160)
+ {
+ sprite->pos1.y += 8;
+ gSprites[sprite->data[0]].pos1.y += 8;
+ gSprites[data[1]].pos1.y += 8;
+ gSprites[data[2]].pos1.y += 8;
+ }
+}
+
+static u8 sub_81D78BC(void)
+{
+ u8 spriteId;
+ s16 *data;
+
+ spriteId = CreateSprite(&sUnknown_0862A9E4, 126, 96, 1);
+ gSprites[spriteId].callback = sub_81D7A60;
+ data = gSprites[spriteId].data;
+
+ data[0] = CreateSprite(&sUnknown_0862A9E4, 158, 96, 1) << 8;
+ data[0] |= CreateSprite(&sUnknown_0862A9E4, 126, 112, 1);
+ data[1] = CreateSprite(&sUnknown_0862A9E4, 158, 112, 1) << 8;
+ data[1] |= CreateSprite(&sUnknown_0862A9E4, 126, 128, 1);
+ data[2] = CreateSprite(&sUnknown_0862A9E4, 158, 128, 1) << 8;
+ data[2] |= CreateSprite(&sUnknown_0862A9E4, 94, 128, 2);
+ data[3] = CreateSprite(&sUnknown_0862A9E4, 126, 128, 2) << 8;
+ data[3] |= CreateSprite(&sUnknown_0862A9E4, 174, 128, 0);
+ data[4] = CreateSprite(&sUnknown_0862AA1C, 198, 132, 0) << 8;
+ data[4] |= CreateSprite(&sUnknown_0862AA3C, 190, 120, 1);
+
+ StartSpriteAnim(&gSprites[data[0] >> 8], 1);
+ StartSpriteAnim(&gSprites[data[0] & 0xFF], 2);
+ StartSpriteAnim(&gSprites[data[1] >> 8], 3);
+ StartSpriteAnim(&gSprites[data[1] & 0xFF], 4);
+ StartSpriteAnim(&gSprites[data[2] >> 8], 5);
+ StartSpriteAnim(&gSprites[data[2] & 0xFF], 6);
+ StartSpriteAnim(&gSprites[data[3] >> 8], 7);
+ StartSpriteAnim(&gSprites[data[3] & 0xFF], 8);
+
+ return spriteId;
+}
+
+static void sub_81D7A60(struct Sprite *sprite)
+{
+ s16 *data = sprite->data;
+ data[5]++;
+ data[5] &= 0xF;
+ if (!(data[5] & 7) && sprite->pos1.x != 152)
+ {
+ sprite->pos1.x++;
+ gSprites[sprite->data[0] >> 8].pos1.x++;
+ gSprites[sprite->data[0] & 0xFF].pos1.x++;
+ gSprites[data[1] >> 8].pos1.x++;
+ gSprites[data[1] & 0xFF].pos1.x++;
+ gSprites[data[2] >> 8].pos1.x++;
+ gSprites[data[2] & 0xFF].pos1.x++;
+ gSprites[data[3] >> 8].pos1.x++;
+ gSprites[data[3] & 0xFF].pos1.x++;
+ gSprites[data[4] >> 8].pos1.x++;
+ gSprites[data[4] & 0xFF].pos1.x++;
+ }
+
+ switch (gSprites[data[2] & 0xFF].animCmdIndex)
+ {
+ case 0:
+ sprite->pos2.y = 0;
+ gSprites[data[0] >> 8].pos2.y = 0;
+ gSprites[data[0] & 0xFF].pos2.y = 0;
+ gSprites[data[1] >> 8].pos2.y = 0;
+ gSprites[data[1] & 0xFF].pos2.y = 0;
+ gSprites[data[2] >> 8].pos2.y = 0;
+ gSprites[data[2] & 0xFF].pos2.y = 0;
+ gSprites[data[3] >> 8].pos2.y = 0;
+ gSprites[data[3] & 0xFF].pos2.y = 0;
+ gSprites[data[4] >> 8].pos2.y = 0;
+ gSprites[data[4] & 0xFF].pos2.y = 0;
+ break;
+ case 1:
+ case 3:
+ sprite->pos2.y = 1;
+ gSprites[data[0] >> 8].pos2.y = 1;
+ gSprites[data[0] & 0xFF].pos2.y = 1;
+ gSprites[data[1] >> 8].pos2.y = 1;
+ gSprites[data[1] & 0xFF].pos2.y = 1;
+ gSprites[data[2] >> 8].pos2.y = 1;
+ gSprites[data[2] & 0xFF].pos2.y = 1;
+ gSprites[data[3] >> 8].pos2.y = 1;
+ gSprites[data[3] & 0xFF].pos2.y = 1;
+ gSprites[data[4] >> 8].pos2.y = 1;
+ gSprites[data[4] & 0xFF].pos2.y = 1;
+ break;
+ case 2:
+ sprite->pos2.y = 2;
+ gSprites[data[0] >> 8].pos2.y = 2;
+ gSprites[data[0] & 0xFF].pos2.y = 2;
+ gSprites[data[1] >> 8].pos2.y = 2;
+ gSprites[data[1] & 0xFF].pos2.y = 2;
+ gSprites[data[2] >> 8].pos2.y = 2;
+ gSprites[data[4] & 0xFF].pos2.y = 2;
+ break;
+ }
+}
+
+static void sub_81D7D14(struct Sprite *sprite)
+{
+ s16 *data = sprite->data;
+ if (sprite->pos1.y <= 160)
+ {
+ sprite->pos1.y += 8;
+ gSprites[sprite->data[0] >> 8].pos1.y += 8;
+ gSprites[sprite->data[0] & 0xFF].pos1.y += 8;
+ gSprites[data[1] >> 8].pos1.y += 8;
+ gSprites[data[1] & 0xFF].pos1.y += 8;
+ gSprites[data[2] >> 8].pos1.y += 8;
+ gSprites[data[2] & 0xFF].pos1.y += 8;
+ gSprites[data[3] >> 8].pos1.y += 8;
+ gSprites[data[3] & 0xFF].pos1.y += 8;
+ gSprites[data[4] >> 8].pos1.y += 8;
+ gSprites[data[4] & 0xFF].pos1.y += 8;
+ }
+}
+
+static void sub_81D7E10(void)
+{
+ ResetVramOamAndBgCntRegs();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, sUnknown_0862AA54, ARRAY_COUNT(sUnknown_0862AA54));
+ SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
+ SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
+ ResetAllBgsCoordinates();
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+}
+
+static void sub_81D7E9C(void)
+{
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(0, gRaySceneClouds_Gfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(1, gRaySceneOvercast_Gfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(2, gRaySceneRayquaza_Gfx, 0, 0, 0);
+ while (free_temp_tile_data_buffers_if_possible());
+
+ LZDecompressWram(gRaySceneClouds2_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneOvercast_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneRayquaza_Tilemap, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneRayquaza_Pal, 0, 0x40);
+ LoadCompressedObjectPic(&sUnknown_0862AA90);
+ LoadCompressedObjectPalette(&sUnknown_0862AA98);
+}
+
+static void Task_RayTakesFlightAnim(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ PlayNewMapMusic(MUS_REKKUU_KOURIN);
+ sub_81D7E10();
+ sub_81D7E9C();
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x808);
+ BlendPalettes(-1, 0x10, 0);
+ SetVBlankCallback(VBlankCB_RayquazaScene);
+ CreateTask(sub_81D81A4, 0);
+ data[0] = 0;
+ data[1] = 0;
+ gTasks[taskId].func = Task_HandleRayTakesFlight;
+}
+
+static void Task_HandleRayTakesFlight(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ if (data[1] == 8)
+ {
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ data[2] = 0;
+ data[3] = 30;
+ data[4] = 0;
+ data[5] = 7;
+ data[1] = 0;
+ data[0]++;
+ }
+ else
+ {
+ data[1]++;
+ }
+ break;
+ case 1:
+ data[2] += data[3];
+ data[4] += data[5];
+ if (data[3] > 3)
+ data[3] -= 3;
+ if (data[5] != 0)
+ data[5]--;
+ if (data[2] > 255)
+ {
+ data[2] = 256;
+ data[3] = 0;
+ data[6] = 12;
+ data[7] = -1;
+ data[1] = 0;
+ data[0]++;
+ }
+ SetBgAffine(2, 0x7800, 0x1800, 0x78, data[4] + 32, data[2], data[2], 0);
+ break;
+ case 2:
+ data[1]++;
+ SetBgAffine(2, 0x7800, 0x1800, 0x78, data[4] + 32 + (data[6] >> 2), data[2], data[2], 0);
+ data[6] += data[7];
+ if (data[6] == 12 || data[6] == -12)
+ {
+ data[7] *= -1;
+ if (data[1] > 295)
+ {
+ data[0]++;
+ BeginNormalPaletteFade(-1, 6, 0, 0x10, 0);
+ }
+ }
+ break;
+ case 3:
+ data[2] += 16;
+ SetBgAffine(2, 0x7800, 0x1800, 0x78, data[4] + 32, data[2], data[2], 0);
+ Task_RayTakesFlightEnd(taskId);
+ break;
+ }
+}
+
+static void Task_RayTakesFlightEnd(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gTasks[taskId].func = Task_SetNextAnim;
+ }
+}
+
+static void sub_81D81A4(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if ((data[1] & 3) == 0)
+ {
+ u8 spriteId = CreateSprite(&sUnknown_0862AAA0,
+ (sUnknown_0862AAB8[data[0]][0] * 4) + 120,
+ (sUnknown_0862AAB8[data[0]][1] * 4) + 80,
+ 0);
+ gSprites[spriteId].data[0] = (s8)(data[0]);
+ gSprites[spriteId].oam.objMode = 1;
+ gSprites[spriteId].oam.affineMode = 3;
+ gSprites[spriteId].oam.priority = 2;
+ InitSpriteAffineAnim(&gSprites[spriteId]);
+ if (data[0] == 9)
+ {
+ DestroyTask(taskId);
+ return;
+ }
+ else
+ {
+ data[0]++;
+ }
+ }
+
+ data[1]++;
+}
+
+static void sub_81D8260(struct Sprite *sprite)
+{
+ if (sprite->data[1] == 0)
+ {
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ }
+ else
+ {
+ sprite->pos2.x += sUnknown_0862AAB8[sprite->data[0]][0];
+ sprite->pos2.y += sUnknown_0862AAB8[sprite->data[0]][1];
+ }
+
+ sprite->data[1]++;
+ sprite->data[1] &= 0xF;
+}
+
+static void sub_81D82B0(void)
+{
+ ResetVramOamAndBgCntRegs();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sUnknown_0862AACC, ARRAY_COUNT(sUnknown_0862AACC));
+ SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
+ SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
+ SetBgTilemapBuffer(3, sRayScene->tilemapBuffers[3]);
+ ResetAllBgsCoordinates();
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ schedule_bg_copy_tilemap_to_vram(3);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+}
+
+static void sub_81D8358(void)
+{
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(0, gRaySceneRayquazaLight_Gfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(1, gRaySceneOvercast2_Gfx, 0, 0, 0);
+ while (free_temp_tile_data_buffers_if_possible());
+
+ LZDecompressWram(gRaySceneRayquazaLight_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneOvercast2_Tilemap, sRayScene->tilemapBuffers[3]);
+ CpuFastFill16(0, sRayScene->tilemapBuffers[2], 0x800);
+ CpuFastCopy(sRayScene->tilemapBuffers[3], sRayScene->tilemapBuffers[1], 0x800);
+ CpuFastFill16(0, &sRayScene->tilemapBuffers[1][0x100], 0x340);
+
+ LoadCompressedPalette(gRaySceneOvercast2_Pal, 0, 0x40);
+ gPlttBufferUnfaded[0] = RGB_WHITE;
+ gPlttBufferFaded[0] = RGB_WHITE;
+ LoadCompressedObjectPic(&sUnknown_0862AAFC);
+ LoadCompressedObjectPic(&sUnknown_0862AB04);
+ LoadCompressedObjectPalette(&sUnknown_0862AB0C);
+}
+
+static void sub_81D844C(void)
+{
+ u16 VCOUNT = GetGpuReg(REG_OFFSET_VCOUNT);
+ if (VCOUNT >= 24 && VCOUNT <= 135 && VCOUNT - 24 <= sRayScene->field_2008)
+ REG_BLDALPHA = 0xD08;
+ else
+ REG_BLDALPHA = 0x1000;
+
+ if (VCOUNT == 0)
+ {
+ if (sRayScene->field_2008 <= 0x1FFF)
+ {
+ if (sRayScene->field_2008 <= 39)
+ sRayScene->field_2008 += 4;
+ else if (sRayScene->field_2008 <= 79)
+ sRayScene->field_2008 += 2;
+ else
+ sRayScene->field_2008 += 1;
+ }
+
+ sRayScene->field_200A++;
+ }
+}
+
+static void Task_RayDescendsAnim(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_81D82B0();
+ sub_81D8358();
+ SetGpuRegBits(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x1000);
+ BlendPalettes(-1, 0x10, 0);
+ SetVBlankCallback(VBlankCB_RayquazaScene);
+ sRayScene->field_2008 = 0;
+ sRayScene->field_200A = 0;
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = 0;
+ data[3] = 0;
+ data[4] = 0x1000;
+ gTasks[taskId].func = Task_HandleRayDescends;
+}
+
+static void Task_HandleRayDescends(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ if (data[1] == 8)
+ {
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ data[1] = 0;
+ data[0]++;
+ }
+ else
+ {
+ data[1]++;
+ }
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ if (data[1] == 10)
+ {
+ data[1] = 0;
+ data[0]++;
+ SetHBlankCallback(sub_81D844C);
+ EnableInterrupts(INTR_FLAG_HBLANK | INTR_FLAG_VBLANK);
+ }
+ else
+ {
+ data[1]++;
+ }
+ }
+ break;
+ case 2:
+ if (data[1] == 80)
+ {
+ data[1] = 0;
+ data[0]++;
+ sub_81D86CC();
+ }
+ else
+ {
+ data[1]++;
+ }
+ break;
+ case 3:
+ if (++data[1] == 368)
+ {
+ data[1] = 0;
+ data[0]++;
+ }
+ break;
+ case 4:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_RayDescendsEnd;
+ break;
+ }
+}
+
+static void Task_RayDescendsEnd(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gTasks[taskId].func = Task_SetNextAnim;
+ }
+}
+
+static u8 sub_81D86CC(void)
+{
+ u8 spriteId = CreateSprite(&sUnknown_0862AB14, 160, 0, 0);
+ s16 *data = gSprites[spriteId].data;
+ data[0] = CreateSprite(&sUnknown_0862AB2C, 184, -48, 0);
+ gSprites[spriteId].callback = sub_81D874C;
+ gSprites[spriteId].oam.priority = 3;
+ gSprites[data[0]].oam.priority = 3;
+ return spriteId;
+}
+
+static void sub_81D874C(struct Sprite *sprite)
+{
+ s16 *data = sprite->data;
+ s16 counter = data[2];
+ if (counter == 0)
+ {
+ data[3] = 12;
+ data[4] = 8;
+ }
+ else if (counter == 256)
+ {
+ data[3] = 9;
+ data[4] = 7;
+ }
+ else if (counter == 268)
+ {
+ data[3] = 8;
+ data[4] = 6;
+ }
+ else if (counter == 280)
+ {
+ data[3] = 7;
+ data[4] = 5;
+ }
+ else if (counter == 292)
+ {
+ data[3] = 6;
+ data[4] = 4;
+ }
+ else if (counter == 304)
+ {
+ data[3] = 5;
+ data[4] = 3;
+ }
+ else if (counter == 320)
+ {
+ data[3] = 4;
+ data[4] = 2;
+ }
+
+ if (data[2] % data[3] == 0)
+ {
+ sprite->pos2.x--;
+ gSprites[data[0]].pos2.x--;
+ }
+ if (data[2] % data[4] == 0)
+ {
+ sprite->pos2.y++;
+ gSprites[data[0]].pos2.y++;
+ }
+
+ data[2]++;
+}
+
+static void sub_81D8828(void)
+{
+ ResetVramOamAndBgCntRegs();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sUnknown_0862AB44, ARRAY_COUNT(sUnknown_0862AB44));
+ SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
+ SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
+ SetBgTilemapBuffer(3, sRayScene->tilemapBuffers[3]);
+ ResetAllBgsCoordinates();
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ schedule_bg_copy_tilemap_to_vram(3);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_WIN0_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+}
+
+static void sub_81D88D0(void)
+{
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(1, gRaySceneRayquazaChase_Gfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(2, gRaySceneChaseStreaks_Gfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(3, gRaySceneChaseBg_Gfx, 0, 0, 0);
+ while (free_temp_tile_data_buffers_if_possible());
+
+ LZDecompressWram(gRayChaseRayquazaChase2_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRayChaseRayquazaChase_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneChaseStreaks_Tilemap, sRayScene->tilemapBuffers[2]);
+ LZDecompressWram(gRaySceneChaseBg_Tilemap, sRayScene->tilemapBuffers[3]);
+ LoadCompressedPalette(gRaySceneChase_Pal, 0, 0x80);
+}
+
+static void Task_RayChargesAnim(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_81D8828();
+ sub_81D88D0();
+ sub_81D68C8();
+ BlendPalettes(-1, 0x10, 0);
+ SetVBlankCallback(VBlankCB_RayquazaScene);
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = CreateTask(sub_81D8AD8, 0);
+ gTasks[taskId].func = Task_HandleRayCharges;
+}
+
+static void Task_HandleRayCharges(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_81D8BB4();
+ if ((data[3] & 7) == 0 && data[0] <= 1 && data[1] <= 89)
+ PlaySE(SE_OP_BASYU);
+
+ data[3]++;
+ switch (data[0])
+ {
+ case 0:
+ if (data[1] == 8)
+ {
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ data[1] = 0;
+ data[0]++;
+ }
+ else
+ {
+ data[1]++;
+ }
+ break;
+ case 1:
+ if (data[1] == 127)
+ {
+ data[1] = 0;
+ data[0]++;
+ gTasks[data[2]].func = sub_81D8B2C;
+ }
+ else
+ {
+ data[1]++;
+ }
+ break;
+ case 2:
+ if (data[1] == 12)
+ {
+ data[1] = 0;
+ data[0]++;
+ }
+ else
+ {
+ data[1]++;
+ }
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_RayChargesEnd;
+ break;
+ }
+}
+
+static void sub_81D8AD8(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if ((data[15] & 3) == 0)
+ {
+ ChangeBgX(1, (Random() % 8 - 4) << 8, 0);
+ ChangeBgY(1, (Random() % 8 - 4) << 8, 0);
+ }
+
+ data[15]++;
+}
+
+static void sub_81D8B2C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (data[0] == 0)
+ {
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ data[0]++;
+ data[1] = 10;
+ data[2] = -1;
+ }
+ else if (data[0] == 1)
+ {
+ ChangeBgX(1, data[1] << 8, 2);
+ ChangeBgY(1, data[1] << 8, 1);
+ data[1] += data[2];
+ if (data[1] == -10)
+ data[2] *= -1;
+ }
+}
+
+static void sub_81D8BB4(void)
+{
+ ChangeBgX(2, 0x400, 2);
+ ChangeBgY(2, 0x400, 1);
+ ChangeBgX(0, 0x800, 2);
+ ChangeBgY(0, 0x800, 1);
+}
+
+static void Task_RayChargesEnd(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_81D8BB4();
+ if (!gPaletteFade.active)
+ {
+ SetVBlankCallback(NULL);
+ sub_81D6904();
+ DestroyTask(data[2]);
+ gTasks[taskId].func = Task_SetNextAnim;
+ }
+}
+
+static void sub_81D8C38(void)
+{
+ ResetVramOamAndBgCntRegs();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, sUnknown_0862AD08, ARRAY_COUNT(sUnknown_0862AD08));
+ SetBgTilemapBuffer(0, sRayScene->tilemapBuffers[0]);
+ SetBgTilemapBuffer(1, sRayScene->tilemapBuffers[1]);
+ SetBgTilemapBuffer(2, sRayScene->tilemapBuffers[2]);
+ ResetAllBgsCoordinates();
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_WIN0_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+}
+
+static void sub_81D8CC4(void)
+{
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(2, gRaySceneHushRing_Gfx, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(0, gRaySceneHushBg_Gfx, 0, 0, 0);
+ while (free_temp_tile_data_buffers_if_possible());
+
+ LZDecompressWram(gRaySceneHushRing_Tilemap, sRayScene->tilemapBuffers[1]);
+ LZDecompressWram(gRaySceneHushBg_Tilemap, sRayScene->tilemapBuffers[0]);
+ LZDecompressWram(gRaySceneHushRing_Map, sRayScene->tilemapBuffers[2]);
+ LoadCompressedPalette(gRaySceneHushBg_Pal, 0, 0x60);
+ LoadCompressedObjectPic(&sUnknown_0862AC28);
+ LoadCompressedObjectPic(&sUnknown_0862AC30);
+ LoadCompressedObjectPic(&sUnknown_0862AC38);
+ LoadCompressedObjectPic(&sUnknown_0862AC40);
+ LoadCompressedObjectPic(&sUnknown_0862AC48);
+ LoadCompressedObjectPic(&sUnknown_0862AC50);
+ LoadCompressedObjectPalette(&sUnknown_0862AC58);
+ LoadCompressedObjectPalette(&sUnknown_0862AC60);
+ LoadCompressedObjectPalette(&sUnknown_0862AC68);
+ LoadCompressedObjectPalette(&sUnknown_0862AC70);
+}
+
+static void Task_RayChasesAwayAnim(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ sub_81D8C38();
+ sub_81D8CC4();
+ sub_81D68C8();
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0xE09);
+ BlendPalettes(-1, 0x10, 0);
+ SetVBlankCallback(VBlankCB_RayquazaScene);
+ data[0] = 0;
+ data[1] = 0;
+ gTasks[taskId].func = Task_HandleRayChasesAway;
+ data[2] = CreateTask(sub_81D8FB0, 0);
+ gTasks[data[2]].data[0] = 0;
+ gTasks[data[2]].data[1] = 0;
+ gTasks[data[2]].data[2] = 0;
+ gTasks[data[2]].data[3] = 1;
+ gTasks[data[2]].data[4] = 1;
+}
+
+static void Task_HandleRayChasesAway(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ if (data[1] == 8)
+ {
+ sub_81D90A8(taskId);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ data[1] = 0;
+ data[0]++;
+ }
+ else
+ {
+ data[1]++;
+ }
+ break;
+ case 1:
+ if (gSprites[data[5]].callback == sub_81D97E0)
+ {
+ if (data[1] == 64)
+ {
+ sub_81D94D4(taskId);
+ sub_81D93D8(taskId);
+ data[1] = 0;
+ data[0]++;
+ }
+ else
+ {
+ data[1]++;
+ }
+ }
+ break;
+ case 2:
+ if (data[1] == 448)
+ {
+ data[1] = 0;
+ data[0]++;
+ }
+ else
+ {
+ data[1]++;
+ if (data[1] % 144 == 0)
+ {
+ sub_80A2C44(0xFFFE, 0, 0x10, 0, -1, 0, 0);
+ sub_80A2C44(0xFFFF0000, 0, 0x10, 0, 0, 0, 1);
+ }
+ }
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ gTasks[taskId].func = Task_RayChasesAwayEnd;
+ break;
+ }
+}
+
+static void sub_81D8FB0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if ((data[0] & 0xF) == 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDALPHA, ((data[1] + 14) << 8 & 0x1F00) | ((data[2] + 9) & 0xF));
+ data[1] -= data[3];
+ data[2] += data[4];
+ if (data[1] == -3 || data[1] == 0)
+ data[3] *= -1;
+ if (data[2] == 3 || data[2] == 0)
+ data[4] *= -1;
+ }
+
+ data[0]++;
+}
+
+static void Task_RayChasesAwayEnd(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ StopMapMusic();
+ if (data[1] == 0)
+ {
+ SetVBlankCallback(NULL);
+ sub_81D6904();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ DestroyTask(data[2]);
+ }
+
+ if (data[1] == 32)
+ {
+ data[1] = 0;
+ gTasks[taskId].func = Task_SetNextAnim;
+ }
+ else
+ {
+ data[1]++;
+ }
+ }
+}
+
+static void sub_81D90A8(u8 taskId)
+{
+ s16 *taskData, *spriteData;
+
+ taskData = gTasks[taskId].data;
+
+ taskData[3] = CreateSprite(&sUnknown_0862AC78, 64, 120, 0);
+ spriteData = gSprites[taskData[3]].data;
+ spriteData[0] = CreateSprite(&sUnknown_0862AC90, 16, 130, 0);
+ gSprites[taskData[3]].oam.priority = 1;
+ gSprites[spriteData[0]].oam.priority = 1;
+
+ taskData[4] = CreateSprite(&sUnknown_0862ACA8, 160, 128, 1);
+ spriteData = gSprites[taskData[4]].data;
+ spriteData[0] = CreateSprite(&sUnknown_0862ACA8, 192, 128, 1);
+ spriteData[1] = CreateSprite(&sUnknown_0862ACA8, 224, 128, 1);
+ gSprites[taskData[4]].oam.priority = 1;
+ gSprites[spriteData[0]].oam.priority = 1;
+ gSprites[spriteData[1]].oam.priority = 1;
+ StartSpriteAnim(&gSprites[spriteData[0]], 1);
+ StartSpriteAnim(&gSprites[spriteData[1]], 2);
+
+ taskData[5] = CreateSprite(&sUnknown_0862ACC0, 120, -65, 0);
+ spriteData = gSprites[taskData[5]].data;
+ spriteData[0] = CreateSprite(&sUnknown_0862ACD8, 120, -113, 0);
+ gSprites[taskData[5]].oam.priority = 1;
+ gSprites[spriteData[0]].oam.priority = 1;
+}
+
+static void sub_81D9274(u8 taskId)
+{
+ s16 *taskData = gTasks[taskId].data;
+
+ gSprites[taskData[3]].callback = sub_81D9338;
+ gSprites[taskData[3]].data[4] = 0;
+ gSprites[taskData[3]].data[5] = 0;
+ gSprites[taskData[3]].data[6] = 4;
+ gSprites[taskData[3]].data[7] = 0;
+
+ gSprites[taskData[4]].callback = sub_81D9338;
+ gSprites[taskData[4]].data[4] = 0;
+ gSprites[taskData[4]].data[5] = 0;
+ gSprites[taskData[4]].data[6] = 4;
+ gSprites[taskData[4]].data[7] = 1;
+}
+
+static void sub_81D9338(struct Sprite *sprite)
+{
+ if ((sprite->data[4] & 7) == 0)
+ {
+ if (sprite->data[7] == 0)
+ {
+ sprite->pos1.x -= sprite->data[6];
+ gSprites[sprite->data[0]].pos1.x -= sprite->data[6];
+ }
+ else
+ {
+ sprite->pos1.x += sprite->data[6];
+ gSprites[sprite->data[0]].pos1.x += sprite->data[6];
+ gSprites[sprite->data[1]].pos1.x += sprite->data[6];
+ }
+
+ sprite->data[5]++;
+ sprite->data[6] -= sprite->data[5];
+ if (sprite->data[5] == 3)
+ {
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+ sprite->data[6] = 0;
+ sprite->callback = SpriteCallbackDummy;
+ return;
+ }
+ }
+
+ sprite->data[4]++;
+}
+
+static void sub_81D93D8(u8 taskId)
+{
+ s16 *taskData = gTasks[taskId].data;
+ gSprites[taskData[3]].callback = sub_81D9420;
+ StartSpriteAnim(&gSprites[taskData[3]], 1);
+}
+
+static void sub_81D9420(struct Sprite *sprite)
+{
+ switch (sprite->animCmdIndex)
+ {
+ case 0:
+ case 2:
+ if (sprite->animDelayCounter % 12 == 0)
+ {
+ sprite->pos1.x -= 2;
+ gSprites[sprite->data[0]].pos1.x -=2;
+ }
+ gSprites[sprite->data[0]].pos2.y = 0;
+ break;
+ case 1:
+ case 3:
+ gSprites[sprite->data[0]].pos2.y = -2;
+ if ((sprite->animDelayCounter & 15) == 0)
+ {
+ sprite->pos1.y++;
+ gSprites[sprite->data[0]].pos1.y++;
+ }
+ break;
+ }
+}
+
+static void sub_81D94D4(u8 taskId)
+{
+ s16 *taskData, *spriteData;
+
+ taskData = gTasks[taskId].data;
+ spriteData = gSprites[taskData[4]].data;
+
+ gSprites[taskData[4]].callback = sub_81D9528;
+ gSprites[spriteData[0]].callback = sub_81D9528;
+ gSprites[spriteData[1]].callback = sub_81D9528;
+}
+
+static void sub_81D9528(struct Sprite *sprite)
+{
+ if ((sprite->data[4] & 3) == 0)
+ {
+ if (sprite->pos2.x == 1)
+ sprite->pos2.x = -1;
+ else
+ sprite->pos2.x = 1;
+ }
+ if (sprite->data[5] == 128)
+ {
+ sprite->data[7] = CreateSprite(&sUnknown_0862ACF0, 152, 132, 0);
+ gSprites[sprite->data[7]].oam.priority = 1;
+ sprite->data[7] = CreateSprite(&sUnknown_0862ACF0, 224, 132, 0);
+ gSprites[sprite->data[7]].oam.priority = 1;
+ gSprites[sprite->data[7]].hFlip = 1;
+ sprite->data[5]++;
+ }
+ if (sprite->data[5] > 127)
+ {
+ if (sprite->pos2.y != 32)
+ {
+ sprite->data[6]++;
+ sprite->pos2.y = sprite->data[6] >> 4;
+ }
+ }
+ else
+ {
+ sprite->data[5]++;
+ }
+
+ if (sprite->data[4] % 64 == 0)
+ PlaySE(SE_W250);
+
+ sprite->data[4]++;
+}
+
+static void sub_81D961C(struct Sprite *sprite)
+{
+ s16 counter = sprite->data[7];
+ if (counter <= 64)
+ {
+ sprite->pos2.y += 2;
+ gSprites[sprite->data[0]].pos2.y += 2;
+ if (sprite->data[7] == 64)
+ {
+ sub_81D9868(sprite, 1, 0, -48);
+ sprite->data[4] = 5;
+ sprite->data[5] = -1;
+ gSprites[sprite->data[0]].data[4] = 3;
+ gSprites[sprite->data[0]].data[5] = 5;
+ }
+ }
+ else if (counter <= 111)
+ {
+ sub_81D97E0(sprite);
+ if (sprite->data[4] == 0)
+ PlaySE(SE_BT_START);
+ if (sprite->data[4] == -3)
+ sub_81D9868(sprite, 2, 48, 16);
+ }
+ else if (counter == 112)
+ {
+ gSprites[sprite->data[0]].data[4] = 7;
+ gSprites[sprite->data[0]].data[5] = 3;
+ sub_81D97E0(sprite);
+ }
+ else if (counter <= 327)
+ {
+ sub_81D97E0(sprite);
+ }
+ else if (counter == 328)
+ {
+ sub_81D97E0(sprite);
+ sub_81D9868(sprite, 3, 48, 16);
+ sprite->pos2.x = 1;
+ gSprites[sprite->data[0]].pos2.x = 1;
+ PlayCry1(SPECIES_RAYQUAZA, 0);
+ CreateTask(sub_81D98B4, 0);
+ }
+ else
+ {
+ switch (counter)
+ {
+ case 376:
+ sprite->pos2.x = 0;
+ gSprites[sprite->data[0]].pos2.x = 0;
+ sub_81D97E0(sprite);
+ sub_81D9868(sprite, 2, 48, 16);
+ sprite->callback = sub_81D97E0;
+ return;
+ case 352:
+ sub_81D9274(FindTaskIdByFunc(Task_HandleRayChasesAway));
+ break;
+ }
+ }
+
+ if (sprite->data[7] > 328 && (sprite->data[7] & 1) == 0)
+ {
+ sprite->pos2.x *= -1;
+ gSprites[sprite->data[0]].pos2.x = sprite->pos2.x;
+ }
+
+ sprite->data[7]++;
+}
+
+static void sub_81D97E0(struct Sprite *sprite)
+{
+ struct Sprite *sprite2 = &gSprites[sprite->data[0]];
+ if (!(sprite->data[6] & sprite2->data[4]))
+ {
+ sprite->pos2.y += sprite->data[4];
+ gSprites[sprite->data[0]].pos2.y += sprite->data[4];
+ sprite->data[4] += sprite->data[5];
+ if (sprite->data[4] >= sprite2->data[5] || sprite->data[4] <= -sprite2->data[5])
+ {
+ if (sprite->data[4] > sprite2->data[5])
+ sprite->data[4] = sprite2->data[5];
+ else if (sprite->data[4] < -sprite2->data[5])
+ sprite->data[4] = -sprite2->data[5];
+
+ sprite->data[5] *= -1;
+ }
+ }
+
+ sprite->data[6]++;
+}
+
+static void sub_81D9868(struct Sprite *sprite, u8 animNum, s16 x, s16 y)
+{
+ struct Sprite *sprite2 = &gSprites[sprite->data[0]];
+
+ sprite2->pos1.x = sprite->pos1.x + x;
+ sprite2->pos1.y = sprite->pos1.y + y;
+
+ sprite2->pos2.x = sprite->pos2.x;
+ sprite2->pos2.y = sprite->pos2.y;
+
+ StartSpriteAnim(sprite, animNum);
+ StartSpriteAnim(sprite2, animNum);
+}
+
+static void sub_81D98B4(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ SetBgAffine(2, 0x4000, 0x4000, 0x78, 0x40, 0x100, 0x100, 0);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ data[4] = 16;
+ data[0]++;
+ break;
+ case 1:
+ if (data[5] == 8)
+ PlaySE(SE_JIDO_DOA);
+ if (data[2] == 2)
+ {
+ data[0]++;
+ }
+ else
+ {
+ data[1] += data[4];
+ data[5]++;
+ if (data[3] % 3 == 0 && data[4] != 4)
+ data[4] -= 2;
+
+ data[3]++;
+ SetBgAffine(2, 0x4000, 0x4000, 0x78, 0x40, 0x100 - data[1], 0x100 - data[1], 0);
+ if (data[1] > 255)
+ {
+ data[1] = 0;
+ data[3] = 0;
+ data[5] = 0;
+ data[4] = 16;
+ data[2]++;
+ }
+ }
+ break;
+ case 2:
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ DestroyTask(taskId);
+ break;
+ }
+}
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index db8e2816d..4ace5b3e5 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -13,23 +13,15 @@
#include "util.h"
#include "task.h"
#include "text.h"
+#include "battle_setup.h"
-#define BANK_RECORD_SIZE 664
+#define BATTLER_RECORD_SIZE 664
#define ILLEGAL_BATTLE_TYPES ((BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE \
| BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
| BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \
| BATTLE_TYPE_RECORDED | BATTLE_TYPE_x4000000 | BATTLE_TYPE_SECRET_BASE \
| BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA))
-extern u32 gBattleTypeFlags;
-extern u16 gTrainerBattleOpponent_A;
-extern u16 gTrainerBattleOpponent_B;
-extern u16 gPartnerTrainerId;
-extern u8 gActiveBank;
-extern u8 gNoOfAllBanks;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
-extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
extern u8 gUnknown_03001278;
extern u8 gUnknown_03001279;
@@ -38,7 +30,7 @@ struct PlayerInfo
u32 trainerId;
u8 name[PLAYER_NAME_LENGTH];
u8 gender;
- u16 bank;
+ u16 battlerId;
u16 language;
};
@@ -52,13 +44,13 @@ struct RecordedBattleSave
{
struct Pokemon playerParty[PARTY_SIZE];
struct Pokemon opponentParty[PARTY_SIZE];
- u8 playersName[BATTLE_BANKS_COUNT][PLAYER_NAME_LENGTH];
- u8 playersGender[BATTLE_BANKS_COUNT];
- u32 playersTrainerId[BATTLE_BANKS_COUNT];
- u8 playersLanguage[BATTLE_BANKS_COUNT];
+ u8 playersName[MAX_BATTLERS_COUNT][PLAYER_NAME_LENGTH];
+ u8 playersGender[MAX_BATTLERS_COUNT];
+ u32 playersTrainerId[MAX_BATTLERS_COUNT];
+ u8 playersLanguage[MAX_BATTLERS_COUNT];
u32 rngSeed;
u32 battleFlags;
- u8 playersBank[BATTLE_BANKS_COUNT];
+ u8 playersBattlers[MAX_BATTLERS_COUNT];
u16 opponentA;
u16 opponentB;
u16 partnerId;
@@ -75,14 +67,14 @@ struct RecordedBattleSave
u16 field_50E[6];
u8 field_51A;
u8 field_51B;
- u8 battleRecord[BATTLE_BANKS_COUNT][BANK_RECORD_SIZE];
+ u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE];
u32 checksum;
};
EWRAM_DATA u32 gRecordedBattleRngSeed = 0;
EWRAM_DATA u32 gBattlePalaceMoveSelectionRngValue = 0;
-EWRAM_DATA static u8 sBattleRecords[BATTLE_BANKS_COUNT][BANK_RECORD_SIZE] = {0};
-EWRAM_DATA static u16 sRecordedBytesNo[BATTLE_BANKS_COUNT] = {0};
+EWRAM_DATA static u8 sBattleRecords[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE] = {0};
+EWRAM_DATA static u16 sRecordedBytesNo[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u16 sUnknown_0203C79C[4] = {0};
EWRAM_DATA static u16 sUnknown_0203C7A4[4] = {0};
EWRAM_DATA static u8 sUnknown_0203C7AC = 0;
@@ -99,7 +91,7 @@ EWRAM_DATA static u32 sRecordedBattle_AI_Scripts = 0;
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
EWRAM_DATA static u16 sRecordedBattle_PlayerMonMoves[2][4] = {0};
-EWRAM_DATA static struct PlayerInfo sRecordedBattle_Players[BATTLE_BANKS_COUNT] = {0};
+EWRAM_DATA static struct PlayerInfo sRecordedBattle_Players[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA static u8 sUnknown_0203CCD0 = 0;
EWRAM_DATA static u8 sUnknown_0203CCD1[8] = {0};
EWRAM_DATA static u8 sUnknown_0203CCD9 = 0;
@@ -123,7 +115,7 @@ void sub_8184DA4(u8 arg0)
sUnknown_0203C7AC = arg0;
sUnknown_0203CCD0 = 0;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
sRecordedBytesNo[i] = 0;
sUnknown_0203C79C[i] = 0;
@@ -131,7 +123,7 @@ void sub_8184DA4(u8 arg0)
if (arg0 == 1)
{
- for (j = 0; j < BANK_RECORD_SIZE; j++)
+ for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] |= 0xFF;
}
@@ -164,11 +156,11 @@ void sub_8184E58(void)
gUnknown_0203C7B4 = GetMultiplayerId();
linkPlayersCount = GetLinkPlayerCount();
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
sRecordedBattle_Players[i].trainerId = gLinkPlayers[i].trainerId;
sRecordedBattle_Players[i].gender = gLinkPlayers[i].gender;
- sRecordedBattle_Players[i].bank = gLinkPlayers[i].lp_field_18;
+ sRecordedBattle_Players[i].battlerId = gLinkPlayers[i].lp_field_18;
sRecordedBattle_Players[i].language = gLinkPlayers[i].language;
if (i < linkPlayersCount)
@@ -192,7 +184,7 @@ void sub_8184E58(void)
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
sRecordedBattle_Players[0].gender = gSaveBlock2Ptr->playerGender;
- sRecordedBattle_Players[0].bank = 0;
+ sRecordedBattle_Players[0].battlerId = 0;
sRecordedBattle_Players[0].language = gGameLanguage;
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
@@ -200,33 +192,33 @@ void sub_8184E58(void)
}
}
-void RecordedBattle_SetBankAction(u8 bank, u8 action)
+void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action)
{
- if (sRecordedBytesNo[bank] < BANK_RECORD_SIZE && sUnknown_0203C7AC != 2)
+ if (sRecordedBytesNo[battlerId] < BATTLER_RECORD_SIZE && sUnknown_0203C7AC != 2)
{
- sBattleRecords[bank][sRecordedBytesNo[bank]++] = action;
+ sBattleRecords[battlerId][sRecordedBytesNo[battlerId]++] = action;
}
}
-void RecordedBattle_ClearBankAction(u8 bank, u8 bytesToClear)
+void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
{
s32 i;
for (i = 0; i < bytesToClear; i++)
{
- sRecordedBytesNo[bank]--;
- sBattleRecords[bank][sRecordedBytesNo[bank]] |= 0xFF;
- if (sRecordedBytesNo[bank] == 0)
+ sRecordedBytesNo[battlerId]--;
+ sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] |= 0xFF;
+ if (sRecordedBytesNo[battlerId] == 0)
break;
}
}
-u8 RecordedBattle_ReadBankAction(u8 bank)
+u8 RecordedBattle_GetBattlerAction(u8 battlerId)
{
// trying to read past array or invalid action byte, battle is over
- if (sRecordedBytesNo[bank] >= BANK_RECORD_SIZE || sBattleRecords[bank][sRecordedBytesNo[bank]] == 0xFF)
+ if (sRecordedBytesNo[battlerId] >= BATTLER_RECORD_SIZE || sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == 0xFF)
{
- gSpecialVar_Result = gBattleOutcome = BATTLE_PLAYER_TELEPORTED; // hah
+ gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
ResetPaletteFadeControl();
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
SetMainCallback2(CB2_QuitRecordedBattle);
@@ -234,7 +226,7 @@ u8 RecordedBattle_ReadBankAction(u8 bank)
}
else
{
- return sBattleRecords[bank][sRecordedBytesNo[bank]++];
+ return sBattleRecords[battlerId][sRecordedBytesNo[battlerId]++];
}
}
@@ -248,7 +240,7 @@ u8 sub_81850DC(u8 *arg0)
u8 i, j;
u8 ret = 0;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
if (sRecordedBytesNo[i] != sUnknown_0203C79C[i])
{
@@ -350,7 +342,7 @@ u32 MoveRecordedBattleToSaveData(void)
battleSave->opponentParty[i] = sSavedOpponentParty[i];
}
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
for (j = 0; j < PLAYER_NAME_LENGTH; j++)
{
@@ -358,7 +350,7 @@ u32 MoveRecordedBattleToSaveData(void)
}
battleSave->playersGender[i] = sRecordedBattle_Players[i].gender;
battleSave->playersLanguage[i] = sRecordedBattle_Players[i].language;
- battleSave->playersBank[i] = sRecordedBattle_Players[i].bank;
+ battleSave->playersBattlers[i] = sRecordedBattle_Players[i].battlerId;
battleSave->playersTrainerId[i] = sRecordedBattle_Players[i].trainerId;
}
@@ -375,16 +367,16 @@ u32 MoveRecordedBattleToSaveData(void)
}
else if (sRecordedBattle_BattleFlags & BATTLE_TYPE_MULTI)
{
- switch (sRecordedBattle_Players[0].bank)
+ switch (sRecordedBattle_Players[0].battlerId)
{
case 0:
case 2:
- if (!(sRecordedBattle_Players[gUnknown_0203C7B4].bank & 1))
+ if (!(sRecordedBattle_Players[gUnknown_0203C7B4].battlerId & 1))
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
break;
case 1:
case 3:
- if ((sRecordedBattle_Players[gUnknown_0203C7B4].bank & 1))
+ if ((sRecordedBattle_Players[gUnknown_0203C7B4].battlerId & 1))
battleSave->battleFlags |= BATTLE_TYPE_x80000000;
break;
}
@@ -1339,7 +1331,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
gEnemyParty[i] = src->opponentParty[i];
}
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
for (var = FALSE, j = 0; j < PLAYER_NAME_LENGTH; j++)
{
@@ -1349,7 +1341,7 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
}
gLinkPlayers[i].gender = src->playersGender[i];
gLinkPlayers[i].language = src->playersLanguage[i];
- gLinkPlayers[i].lp_field_18 = src->playersBank[i];
+ gLinkPlayers[i].lp_field_18 = src->playersBattlers[i];
gLinkPlayers[i].trainerId = src->playersTrainerId[i];
if (var)
@@ -1386,9 +1378,9 @@ static void SetRecordedBattleVarsFromSave(struct RecordedBattleSave *src)
gSaveBlock2Ptr->frontierChosenLvl = src->field_4FC;
- for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
- for (j = 0; j < BANK_RECORD_SIZE; j++)
+ for (j = 0; j < BATTLER_RECORD_SIZE; j++)
{
sBattleRecords[i][j] = src->battleRecord[i][j];
}
@@ -1456,13 +1448,13 @@ static void RecordedBattle_RestoreSavedParties(void)
}
}
-u8 GetActiveBankLinkPlayerGender(void)
+u8 GetActiveBattlerLinkPlayerGender(void)
{
s32 i;
for (i = 0; i < MAX_LINK_PLAYERS; i++)
{
- if (gLinkPlayers[i].lp_field_18 == gActiveBank)
+ if (gLinkPlayers[i].lp_field_18 == gActiveBattler)
break;
}
@@ -1497,11 +1489,11 @@ u8 GetTextSpeedInRecordedBattle(void)
return sRecordedBattle_TextSpeed;
}
-void RecordedBattle_CopyBankMoves(void)
+void RecordedBattle_CopyBattlerMoves(void)
{
s32 i;
- if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
return;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
return;
@@ -1510,7 +1502,7 @@ void RecordedBattle_CopyBankMoves(void)
for (i = 0; i < 4; i++)
{
- sRecordedBattle_PlayerMonMoves[gActiveBank / 2][i] = gBattleMons[gActiveBank].moves[i];
+ sRecordedBattle_PlayerMonMoves[gActiveBattler / 2][i] = gBattleMons[gActiveBattler].moves[i];
}
}
@@ -1518,32 +1510,32 @@ void RecordedBattle_CopyBankMoves(void)
void sub_818603C(u8 arg0)
{
- s32 bank, j, k;
+ s32 battlerId, j, k;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
return;
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
{
- if (GetBankSide(bank) != SIDE_OPPONENT) // player's side only
+ if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT) // player's side only
{
if (arg0 == 1)
{
for (j = 0; j < 4; j++)
{
- if (gBattleMons[bank].moves[j] != sRecordedBattle_PlayerMonMoves[bank / 2][j])
+ if (gBattleMons[battlerId].moves[j] != sRecordedBattle_PlayerMonMoves[battlerId / 2][j])
break;
}
if (j != 4) // player's mon's move has been changed
{
- RecordedBattle_SetBankAction(bank, ACTION_MOVE_CHANGE);
+ RecordedBattle_SetBattlerAction(battlerId, ACTION_MOVE_CHANGE);
for (j = 0; j < 4; j++)
{
for (k = 0; k < 4; k++)
{
- if (gBattleMons[bank].moves[j] == sRecordedBattle_PlayerMonMoves[bank / 2][k])
+ if (gBattleMons[battlerId].moves[j] == sRecordedBattle_PlayerMonMoves[battlerId / 2][k])
{
- RecordedBattle_SetBankAction(bank, k);
+ RecordedBattle_SetBattlerAction(battlerId, k);
break;
}
}
@@ -1552,7 +1544,7 @@ void sub_818603C(u8 arg0)
}
else
{
- if (sBattleRecords[bank][sRecordedBytesNo[bank]] == ACTION_MOVE_CHANGE)
+ if (sBattleRecords[battlerId][sRecordedBytesNo[battlerId]] == ACTION_MOVE_CHANGE)
{
u8 ppBonuses[4];
u8 array1[4];
@@ -1561,58 +1553,58 @@ void sub_818603C(u8 arg0)
u8 array3[8];
u8 var;
- RecordedBattle_ReadBankAction(bank);
+ RecordedBattle_GetBattlerAction(battlerId);
for (j = 0; j < 4; j++)
{
- ppBonuses[j] = ((gBattleMons[bank].ppBonuses & ((3 << (j << 1)))) >> (j << 1));
+ ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & ((3 << (j << 1)))) >> (j << 1));
}
for (j = 0; j < 4; j++)
{
- array1[j] = RecordedBattle_ReadBankAction(bank);
- movePp.moves[j] = gBattleMons[bank].moves[array1[j]];
- movePp.pp[j] = gBattleMons[bank].pp[array1[j]];
+ array1[j] = RecordedBattle_GetBattlerAction(battlerId);
+ movePp.moves[j] = gBattleMons[battlerId].moves[array1[j]];
+ movePp.pp[j] = gBattleMons[battlerId].pp[array1[j]];
array3[j] = ppBonuses[array1[j]];
- array2[j] = (gDisableStructs[bank].unk18_b & gBitTable[j]) >> j;
+ array2[j] = (gDisableStructs[battlerId].unk18_b & gBitTable[j]) >> j;
}
for (j = 0; j < 4; j++)
{
- gBattleMons[bank].moves[j] = movePp.moves[j];
- gBattleMons[bank].pp[j] = movePp.pp[j];
+ gBattleMons[battlerId].moves[j] = movePp.moves[j];
+ gBattleMons[battlerId].pp[j] = movePp.pp[j];
}
- gBattleMons[bank].ppBonuses = 0;
- gDisableStructs[bank].unk18_b = 0;
+ gBattleMons[battlerId].ppBonuses = 0;
+ gDisableStructs[battlerId].unk18_b = 0;
for (j = 0; j < 4; j++)
{
- gBattleMons[bank].ppBonuses |= (array3[j]) << (j << 1);
- gDisableStructs[bank].unk18_b |= (array2[j]) << (j);
+ gBattleMons[battlerId].ppBonuses |= (array3[j]) << (j << 1);
+ gDisableStructs[battlerId].unk18_b |= (array2[j]) << (j);
}
- if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED))
+ if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
{
for (j = 0; j < 4; j++)
{
- ppBonuses[j] = ((GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1));
+ ppBonuses[j] = ((GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1));
}
for (j = 0; j < 4; j++)
{
- movePp.moves[j] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_MOVE1 + array1[j], NULL);
- movePp.pp[j] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_PP1 + array1[j], NULL);
+ movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + array1[j], NULL);
+ movePp.pp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + array1[j], NULL);
array3[j] = ppBonuses[array1[j]];
}
for (j = 0; j < 4; j++)
{
- SetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
- SetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_PP1 + j, &movePp.pp[j]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + j, &movePp.pp[j]);
}
var = 0;
for (j = 0; j < 4; j++)
{
var |= (array3[j]) << (j << 1);
}
- SetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_PP_BONUSES, &var);
+ SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &var);
}
- gChosenMovesByBanks[bank] = gBattleMons[bank].moves[*(gBattleStruct->chosenMovePositions + bank)];
+ gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)];
}
}
}
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
new file mode 100644
index 000000000..9bd462b60
--- /dev/null
+++ b/src/reset_rtc_screen.c
@@ -0,0 +1,639 @@
+#include "global.h"
+#include "reset_rtc_screen.h"
+#include "event_data.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "rtc.h"
+#include "save.h"
+#include "sprite.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text.h"
+#include "scanline_effect.h"
+#include "bg.h"
+#include "window.h"
+#include "gpu_regs.h"
+
+struct ResetRtcStruct
+{
+ /*0x0*/ u8 dataIndex;
+ /*0x2*/ u16 minVal;
+ /*0x4*/ u16 maxVal;
+ /*0x6*/ u8 left;
+ /*0x7*/ u8 right;
+ /*0x8*/ u8 unk8;
+};
+
+// this file's functions
+static void CB2_ResetRtcScreen(void);
+static void VBlankCB(void);
+static void Task_ResetRtcScreen(u8 taskId);
+static void sub_809F048(void);
+
+// const rom data
+static const struct BgTemplate sBackgroundTemplates[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ }
+};
+
+static const struct WindowTemplate sUnknown_08510408[] =
+{
+ {0x00, 0x01, 0x01, 0x13, 0x09, 0x0f, 0x0155},
+ {0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x00e9},
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sUnknown_08510420 = {0x00, 0x04, 0x09, 0x15, 0x02, 0x0f, 0x00bf};
+
+static const struct ResetRtcStruct sUnknown_08510428[5] =
+{
+ {
+ .dataIndex = 3,
+ .minVal = 1,
+ .maxVal = 9999,
+ .left = 0,
+ .right = 2,
+ .unk8 = 0,
+ },
+ {
+ .dataIndex = 4,
+ .minVal = 0,
+ .maxVal = 23,
+ .left = 1,
+ .right = 3,
+ .unk8 = 0,
+ },
+ {
+ .dataIndex = 5,
+ .minVal = 0,
+ .maxVal = 59,
+ .left = 2,
+ .right = 4,
+ .unk8 = 0,
+ },
+ {
+ .dataIndex = 6,
+ .minVal = 0,
+ .maxVal = 59,
+ .left = 3,
+ .right = 5,
+ .unk8 = 0,
+ },
+ {
+ .dataIndex = 7,
+ .minVal = 0,
+ .maxVal = 0,
+ .left = 4,
+ .right = 0,
+ .unk8 = 6,
+ },
+};
+
+static const struct OamData sOamData_08510464 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const u8 sResetRtcScreen_DownArrowGfx[] = INCBIN_U8("graphics/misc/reset_rtc_screen_downarrow.4bpp");
+static const u8 sResetRtcScreen_RightArrowGfx[] = INCBIN_U8("graphics/misc/reset_rtc_screen_rightarrow.4bpp");
+static const u16 sResetRtcScreen_ArrowPal[] = INCBIN_U16("graphics/misc/reset_rtc_screen_arrow.gbapal");
+
+static const struct SpriteFrameImage sSpriteImageTable_85104B4[] =
+{
+ obj_frame_tiles(sResetRtcScreen_DownArrowGfx),
+ obj_frame_tiles(sResetRtcScreen_RightArrowGfx)
+};
+
+static const struct SpritePalette sSpritePalette_Arrow =
+{
+ sResetRtcScreen_ArrowPal, 0x1000
+};
+
+static const union AnimCmd sSpriteAnim_85104CC[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sSpriteAnim_85104D4[] =
+{
+ ANIMCMD_FRAME(0, 158, .vFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sSpriteAnim_85104DC[] =
+{
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const sSpriteAnimTable_85104E4[] =
+{
+ sSpriteAnim_85104CC,
+ sSpriteAnim_85104D4,
+ sSpriteAnim_85104DC,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_85104F0 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1000,
+ .oam = &sOamData_08510464,
+ .anims = sSpriteAnimTable_85104E4,
+ .images = sSpriteImageTable_85104B4,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+// code
+static void SpriteCB_ResetRtcCursor0(struct Sprite *sprite)
+{
+ int state = gTasks[sprite->data[0]].data[2];
+ if (state != sprite->data[1])
+ {
+ sprite->data[1] = state;
+ switch (state)
+ {
+ case 1:
+ sprite->invisible = FALSE;
+ sprite->animNum = 1;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 53;
+ sprite->pos1.y = 68;
+ break;
+ case 2:
+ sprite->invisible = FALSE;
+ sprite->animNum = 1;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 86;
+ sprite->pos1.y = 68;
+ break;
+ case 3:
+ sprite->invisible = FALSE;
+ sprite->animNum = 1;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 101;
+ sprite->pos1.y = 68;
+ break;
+ case 4:
+ sprite->invisible = FALSE;
+ sprite->animNum = 1;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 116;
+ sprite->pos1.y = 68;
+ break;
+ case 5:
+ sprite->invisible = FALSE;
+ sprite->animNum = 2;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 153;
+ sprite->pos1.y = 80;
+ break;
+ case 6:
+ DestroySprite(sprite);
+ break;
+ }
+ }
+}
+
+static void SpriteCB_ResetRtcCursor1(struct Sprite *sprite)
+{
+ int state = gTasks[sprite->data[0]].data[2];
+ if (state != sprite->data[1])
+ {
+ sprite->data[1] = state;
+ switch (state)
+ {
+ case 1:
+ sprite->invisible = FALSE;
+ sprite->animNum = 0;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 53;
+ sprite->pos1.y = 92;
+ break;
+ case 2:
+ sprite->invisible = FALSE;
+ sprite->animNum = 0;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 86;
+ sprite->pos1.y = 92;
+ break;
+ case 3:
+ sprite->invisible = FALSE;
+ sprite->animNum = 0;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 101;
+ sprite->pos1.y = 92;
+ break;
+ case 4:
+ sprite->invisible = FALSE;
+ sprite->animNum = 0;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 116;
+ sprite->pos1.y = 92;
+ break;
+ case 5:
+ sprite->invisible = TRUE;
+ break;
+ case 6:
+ DestroySprite(sprite);
+ break;
+ }
+ }
+}
+
+static void CreateCursor(u8 taskId)
+{
+ u32 spriteId;
+
+ LoadSpritePalette(&sSpritePalette_Arrow);
+
+ spriteId = CreateSpriteAtEnd(&sSpriteTemplate_85104F0, 53, 68, 0);
+ gSprites[spriteId].callback = SpriteCB_ResetRtcCursor0;
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = -1;
+
+ spriteId = CreateSpriteAtEnd(&sSpriteTemplate_85104F0, 53, 68, 0);
+ gSprites[spriteId].callback = SpriteCB_ResetRtcCursor1;
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = -1;
+}
+
+static void FreeCursorPalette(void)
+{
+ FreeSpritePaletteByTag(sSpritePalette_Arrow.tag);
+}
+
+static void HideChooseTimeWindow(u8 windowId)
+{
+ sub_8198070(windowId, FALSE);
+ RemoveWindow(windowId);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+static void PrintTime(u8 windowId, u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 seconds)
+{
+ u8 *dest = gStringVar4;
+
+ ConvertIntToDecimalStringN(gStringVar1, days, 1, 4);
+ dest = StringCopy(dest, gStringVar1);
+ dest = StringCopy(dest, gText_Day);
+
+ ConvertIntToDecimalStringN(gStringVar1, hours, 1, 3);
+ dest = StringCopy(dest, gStringVar1);
+ dest = StringCopy(dest, gText_Colon3);
+
+ ConvertIntToDecimalStringN(gStringVar1, minutes, 2, 2);
+ dest = StringCopy(dest, gStringVar1);
+ dest = StringCopy(dest, gText_Colon3);
+
+ ConvertIntToDecimalStringN(gStringVar1, seconds, 2, 2);
+ dest = StringCopy(dest, gStringVar1);
+
+ PrintTextOnWindow(windowId, 1, gStringVar4, x, y, TEXT_SPEED_FF, NULL);
+}
+
+static void ShowChooseTimeWindow(u8 windowId, u16 days, u8 hours, u8 minutes, u8 seconds)
+{
+ SetWindowBorderStyle(windowId, FALSE, 0x214, 0xE);
+ PrintTime(windowId, 0, 1, days, hours, minutes, seconds);
+ PrintTextOnWindow(windowId, 1, gText_Confirm2, 126, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+static bool32 MoveTimeUpDown(s16 *val, int minVal, int maxVal, u16 keys)
+{
+ if (keys & DPAD_DOWN)
+ {
+ *val -= 1;
+ if (*val < minVal)
+ *val = maxVal;
+ }
+ else if (keys & DPAD_UP)
+ {
+ *val += 1;
+ if (*val > maxVal)
+ *val = minVal;
+ }
+ else if (keys & DPAD_LEFT)
+ {
+ *val -= 10;
+ if (*val < minVal)
+ *val = maxVal;
+ }
+ else if (keys & DPAD_RIGHT)
+ {
+ *val += 10;
+ if (*val > maxVal)
+ *val = minVal;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void Task_ResetRtc_3(u8 taskId)
+{
+ gTasks[taskId].data[0] = 1;
+}
+
+static void Task_ResetRtc_2(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ HideChooseTimeWindow(data[8]);
+ FreeCursorPalette();
+ gTasks[taskId].func = Task_ResetRtc_3;
+}
+
+static void Task_ResetRtc_1(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u8 selection = data[2];
+ const struct ResetRtcStruct *selectionInfo = &sUnknown_08510428[selection - 1];
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = Task_ResetRtc_2;
+ data[1] = 0;
+ data[2] = 6;
+ PlaySE(SE_SELECT);
+ return;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (selectionInfo->right)
+ {
+ data[2] = selectionInfo->right;
+ PlaySE(SE_SELECT);
+ return;
+ }
+ }
+
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (selectionInfo->left)
+ {
+ data[2] = selectionInfo->left;
+ PlaySE(SE_SELECT);
+ return;
+ }
+ }
+
+ if (selection == 5)
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gLocalTime.days = data[3];
+ gLocalTime.hours = data[4];
+ gLocalTime.minutes = data[5];
+ gLocalTime.seconds = data[6];
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = Task_ResetRtc_2;
+ data[1] = 1;
+ data[2] = 6;
+ }
+ }
+ else if (MoveTimeUpDown(&data[selectionInfo->dataIndex], selectionInfo->minVal, selectionInfo->maxVal, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN)))
+ {
+ PlaySE(SE_SELECT);
+ PrintTime(data[8], 0, 1, data[3], data[4], data[5], data[6]);
+ CopyWindowToVram(data[8], 2);
+ }
+}
+
+static void Task_ResetRtc_0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[0] = 0;
+ data[3] = gLocalTime.days;
+ data[4] = gLocalTime.hours;
+ data[5] = gLocalTime.minutes;
+ data[6] = gLocalTime.seconds;
+ data[8] = AddWindow(&sUnknown_08510420);
+ ShowChooseTimeWindow(data[8], data[3], data[4], data[5], data[6]);
+ CreateCursor(taskId);
+ data[2] = 2;
+ gTasks[taskId].func = Task_ResetRtc_1;
+}
+
+void CB2_InitResetRtcScreen(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetVBlankCallback(NULL);
+ DmaClear16(3, PLTT, PLTT_SIZE);
+ DmaFillLarge16(3, 0, (u8 *)VRAM, 0x18000, 0x1000);
+ ResetOamRange(0, 128);
+ LoadOam();
+ ScanlineEffect_Stop();
+ ScanlineEffect_Clear();
+ ResetSpriteData();
+ ResetTasks();
+ ResetPaletteFade();
+ sub_809F048();
+ SetVBlankCallback(VBlankCB);
+ SetMainCallback2(CB2_ResetRtcScreen);
+ CreateTask(Task_ResetRtcScreen, 80);
+}
+
+static void sub_809F048(void)
+{
+ clear_scheduled_bg_copies_to_vram();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sBackgroundTemplates, ARRAY_COUNT(sBackgroundTemplates));
+ schedule_bg_copy_tilemap_to_vram(0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ InitWindows(sUnknown_08510408);
+ DeactivateAllTextPrinters();
+ sub_81973A4();
+}
+
+static void CB2_ResetRtcScreen(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB(void)
+{
+ ProcessSpriteCopyRequests();
+ LoadOam();
+ TransferPlttBuffer();
+}
+
+static void ShowMessage(const u8 *str)
+{
+ sub_8197B1C(1, FALSE, 0x200, 0xF);
+ PrintTextOnWindow(1, 1, str, 0, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+static void Task_ShowResetRtcPrompt(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ SetWindowBorderStyle(0, FALSE, 0x214, 0xE);
+ PrintTextOnWindow(0, 1, gText_PresentTime, 0, 1, TEXT_SPEED_FF, 0);
+ PrintTime(
+ 0,
+ 0,
+ 17,
+ gLocalTime.days,
+ gLocalTime.hours,
+ gLocalTime.minutes,
+ gLocalTime.seconds);
+ PrintTextOnWindow(0, 1, gText_PreviousTime, 0, 33, TEXT_SPEED_FF, 0);
+ PrintTime(
+ 0,
+ 0,
+ 49,
+ gSaveBlock2Ptr->lastBerryTreeUpdate.days,
+ gSaveBlock2Ptr->lastBerryTreeUpdate.hours,
+ gSaveBlock2Ptr->lastBerryTreeUpdate.minutes,
+ gSaveBlock2Ptr->lastBerryTreeUpdate.seconds);
+ ShowMessage(gText_ResetRTCConfirmCancel);
+ CopyWindowToVram(0, 2);
+ schedule_bg_copy_tilemap_to_vram(0);
+ data[0]++;
+ case 1:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyTask(taskId);
+ DoSoftReset();
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void Task_ResetRtcScreen(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 1, 0x10, 0, 0xFFFF);
+ data[0] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
+ {
+ ShowMessage(gText_NoSaveFileCantSetTime);
+ data[0] = 5;
+ }
+ else
+ {
+ RtcCalcLocalTime();
+ data[1] = CreateTask(Task_ShowResetRtcPrompt, 80);
+ data[0] = 2;
+ }
+ }
+ break;
+ case 2:
+ if (gTasks[data[1]].isActive != TRUE)
+ {
+ sub_8198070(0, FALSE);
+ ShowMessage(gText_PleaseResetTime);
+ gLocalTime = gSaveBlock2Ptr->lastBerryTreeUpdate;
+ data[1] = CreateTask(Task_ResetRtc_0, 80);
+ data[0] = 3;
+ }
+ break;
+ case 3:
+ if (gTasks[data[1]].data[0])
+ {
+ if (!gTasks[data[1]].data[1])
+ {
+ DestroyTask(data[1]);
+ data[0] = 2;
+ }
+ else
+ {
+ DestroyTask(data[1]);
+ RtcReset();
+ RtcCalcLocalTimeOffset(
+ gLocalTime.days,
+ gLocalTime.hours,
+ gLocalTime.minutes,
+ gLocalTime.seconds);
+ gSaveBlock2Ptr->lastBerryTreeUpdate = gLocalTime;
+ VarSet(VAR_DAYS, gLocalTime.days);
+ DisableResetRTC();
+ ShowMessage(gText_ClockHasBeenReset);
+ data[0] = 4;
+ }
+ }
+ break;
+ case 4:
+ if (TrySavingData(0) == 1)
+ {
+ ShowMessage(gText_SaveCompleted);
+ PlaySE(SE_PINPON);
+ }
+ else
+ {
+ ShowMessage(gText_SaveFailed);
+ PlaySE(SE_BOO);
+ }
+ data[0] = 5;
+ case 5:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ BeginNormalPaletteFade(-1, 1, 0, 0x10, 0xFFFF);
+ data[0] = 6;
+ }
+ else
+ {
+ break;
+ }
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ FreeAllWindowBuffers();
+ DoSoftReset();
+ }
+ }
+}
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
index 099edce49..9950f6691 100644
--- a/src/reset_save_heap.c
+++ b/src/reset_save_heap.c
@@ -15,7 +15,7 @@ void sub_81700F8(void)
imeBackup = REG_IME;
REG_IME = 0;
RegisterRamReset(0x00000001);
- ClearGpuRegBits(REG_OFFSET_DISPCNT, 0x80);
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_FORCED_BLANK);
REG_IME = imeBackup;
gMain.inBattle = FALSE;
SetSaveBlocksPointers(sub_815355C());
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 0e1c9dcfe..8cd9b1f1a 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -12,6 +12,7 @@
#include "sprite.h"
#include "constants/species.h"
#include "battle_interface.h"
+#include "battle_anim.h"
extern u16 gBattle_BG0_X;
extern u16 gBattle_BG0_Y;
@@ -21,33 +22,17 @@ extern u16 gBattle_BG2_X;
extern u16 gBattle_BG2_Y;
extern u16 gBattle_BG3_X;
extern u16 gBattle_BG3_Y;
-extern u8 gReservedSpritePaletteCount;
-extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
-extern u8 gBankInMenu;
-extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u8 gNoOfAllBanks;
-extern u32 gBattleTypeFlags;
-extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
-extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
-extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
extern struct SpriteTemplate gUnknown_0202499C;
extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
-extern void ScanlineEffect_Clear(void);
-extern void sub_8035658(void);
-extern bool8 IsDoubleBattle(void);
-extern u8 GetSubstituteSpriteDefault_Y(u8 bank);
-extern u8 GetBankSpriteDefault_Y(u8 bank);
-extern u8 sub_80A82E4(u8 bank);
extern void sub_806A068(u16 species, u8 bankIdentity);
extern void sub_806A12C(u16 backPicId, u8 bankIdentity);
-extern u8 GetBankPosition(u8 bank, u8 caseId);
// this file's functions
static void CB2_ReshowBattleScreenAfterMenu(void);
-static bool8 LoadBankSpriteGfx(u8 bank);
-static void CreateBankSprite(u8 bank);
+static bool8 LoadBattlerSpriteGfx(u8 bank);
+static void CreateBattlerSprite(u8 bank);
static void CreateHealthboxSprite(u8 bank);
static void sub_80A95F4(void);
@@ -118,32 +103,32 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
}
break;
case 7:
- if (!LoadBankSpriteGfx(0))
+ if (!LoadBattlerSpriteGfx(0))
gBattleScripting.reshowMainState--;
break;
case 8:
- if (!LoadBankSpriteGfx(1))
+ if (!LoadBattlerSpriteGfx(1))
gBattleScripting.reshowMainState--;
break;
case 9:
- if (!LoadBankSpriteGfx(2))
+ if (!LoadBattlerSpriteGfx(2))
gBattleScripting.reshowMainState--;
break;
case 10:
- if (!LoadBankSpriteGfx(3))
+ if (!LoadBattlerSpriteGfx(3))
gBattleScripting.reshowMainState--;
break;
case 11:
- CreateBankSprite(0);
+ CreateBattlerSprite(0);
break;
case 12:
- CreateBankSprite(1);
+ CreateBattlerSprite(1);
break;
case 13:
- CreateBankSprite(2);
+ CreateBattlerSprite(2);
break;
case 14:
- CreateBankSprite(3);
+ CreateBattlerSprite(3);
break;
case 15:
CreateHealthboxSprite(0);
@@ -164,18 +149,18 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
LoadAndCreateEnemyShadowSprites();
- opponentBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
- SetBankEnemyShadowSpriteCallback(opponentBank, species);
+ opponentBank = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBank]], MON_DATA_SPECIES);
+ SetBattlerShadowSpriteCallback(opponentBank, species);
if (IsDoubleBattle())
{
- opponentBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
- species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
- SetBankEnemyShadowSpriteCallback(opponentBank, species);
+ opponentBank = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
+ species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBank]], MON_DATA_SPECIES);
+ SetBattlerShadowSpriteCallback(opponentBank, species);
}
- ActionSelectionCreateCursorAt(gActionSelectionCursor[gBankInMenu], 0);
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gBattlerInMenuId], 0);
if (gWirelessCommType != 0 && gReceivedRemoteLinkPlayers != 0)
{
@@ -208,25 +193,25 @@ static void sub_80A95F4(void)
regBgcnt2->charBaseBlock = 0;
}
-static bool8 LoadBankSpriteGfx(u8 bank)
+static bool8 LoadBattlerSpriteGfx(u8 battler)
{
- if (bank < gNoOfAllBanks)
+ if (battler < gBattlersCount)
{
- if (GetBankSide(bank) != SIDE_PLAYER)
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
- if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
- BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank);
+ if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
else
- BattleLoadSubstituteOrMonSpriteGfx(bank, FALSE);
+ BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
}
- else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
- DecompressTrainerBackPic(gSaveBlock2Ptr->playerGender, bank);
- else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
- DecompressTrainerBackPic(BACK_PIC_WALLY, bank);
- else if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
- BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank);
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == 0)
+ DecompressTrainerBackPic(gSaveBlock2Ptr->playerGender, battler);
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && battler == 0)
+ DecompressTrainerBackPic(BACK_PIC_WALLY, battler);
+ else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
else
- BattleLoadSubstituteOrMonSpriteGfx(bank, FALSE);
+ BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
gBattleScripting.reshowHelperState = 0;
}
@@ -243,111 +228,111 @@ struct MonCoords
};
extern const struct MonCoords gTrainerBackPicCoords[];
-static void CreateBankSprite(u8 bank)
+static void CreateBattlerSprite(u8 battler)
{
- if (bank < gNoOfAllBanks)
+ if (battler < gBattlersCount)
{
u8 posY;
- if (gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
- posY = GetSubstituteSpriteDefault_Y(bank);
+ if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
+ posY = GetSubstituteSpriteDefault_Y(battler);
else
- posY = GetBankSpriteDefault_Y(bank);
+ posY = GetBattlerSpriteDefault_Y(battler);
- if (GetBankSide(bank) != SIDE_PLAYER)
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
- if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
return;
- sub_806A068(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, GetBankPosition(bank, 2), posY, sub_80A82E4(bank));
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ sub_806A068(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
+ gBattlerSpriteIds[battler] = CreateSprite(&gUnknown_0202499C, GetBattlerSpriteCoord(battler, 2), posY, sub_80A82E4(battler));
+ gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
+ gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM)
- gSprites[gBankSpriteIds[bank]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], gBattleMonForms[battler]);
+ if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_CASTFORM)
+ gSprites[gBattlerSpriteIds[battler]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
}
- else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == 0)
{
- sub_806A12C(gSaveBlock2Ptr->playerGender, GetBankIdentity(IDENTITY_PLAYER_MON1));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, 0x50,
+ sub_806A12C(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT));
+ gBattlerSpriteIds[battler] = CreateSprite(&gUnknown_0202499C, 0x50,
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
sub_80A82E4(0));
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && battler == 0)
{
- sub_806A12C(BACK_PIC_WALLY, GetBankIdentity(0));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, 0x50,
+ sub_806A12C(BACK_PIC_WALLY, GetBattlerPosition(0));
+ gBattlerSpriteIds[battler] = CreateSprite(&gUnknown_0202499C, 0x50,
(8 - gTrainerBackPicCoords[BACK_PIC_WALLY].coords) * 4 + 80,
sub_80A82E4(0));
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
}
else
{
- if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
return;
- sub_806A068(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, GetBankPosition(bank, 2), posY, sub_80A82E4(bank));
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ sub_806A068(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
+ gBattlerSpriteIds[battler] = CreateSprite(&gUnknown_0202499C, GetBattlerSpriteCoord(battler, 2), posY, sub_80A82E4(battler));
+ gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
+ gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
+ gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
+ gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
- if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM)
- gSprites[gBankSpriteIds[bank]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
+ StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], gBattleMonForms[battler]);
+ if (gBattleSpritesDataPtr->battlerData[battler].transformSpecies == SPECIES_CASTFORM)
+ gSprites[gBattlerSpriteIds[battler]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
}
- gSprites[gBankSpriteIds[bank]].invisible = gBattleSpritesDataPtr->bankData[bank].invisible;
+ gSprites[gBattlerSpriteIds[battler]].invisible = gBattleSpritesDataPtr->battlerData[battler].invisible;
}
}
-static void CreateHealthboxSprite(u8 bank)
+static void CreateHealthboxSprite(u8 battler)
{
- if (bank < gNoOfAllBanks)
+ if (battler < gBattlersCount)
{
u8 healthboxSpriteId;
- if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && battler == 0)
healthboxSpriteId = CreateSafariPlayerHealthboxSprites();
- else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && battler == 0)
return;
else
- healthboxSpriteId = CreateBankHealthboxSprites(bank);
+ healthboxSpriteId = CreateBattlerHealthboxSprites(battler);
- gHealthBoxesIds[bank] = healthboxSpriteId;
- SetBankHealthboxSpritePos(bank);
+ gHealthboxSpriteIds[battler] = healthboxSpriteId;
+ InitBattlerHealthboxCoords(battler);
SetHealthboxSpriteVisible(healthboxSpriteId);
- if (GetBankSide(bank) != SIDE_PLAYER)
- UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gEnemyParty[gBattlePartyID[bank]], HEALTHBOX_ALL);
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
- UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_SAFARI_ALL_TEXT);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_ALL_TEXT);
else
- UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_ALL);
+ UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
- if (GetBankIdentity(bank) == IDENTITY_OPPONENT_MON2 || GetBankIdentity(bank) == IDENTITY_PLAYER_MON2)
- DummyBattleInterfaceFunc(gHealthBoxesIds[bank], TRUE);
+ if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_RIGHT || GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], TRUE);
else
- DummyBattleInterfaceFunc(gHealthBoxesIds[bank], FALSE);
+ DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], FALSE);
- if (GetBankSide(bank) != SIDE_PLAYER)
+ if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
- if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
SetHealthboxSpriteInvisible(healthboxSpriteId);
}
else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
{
- if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
SetHealthboxSpriteInvisible(healthboxSpriteId);
}
}
diff --git a/src/safari_zone.c b/src/safari_zone.c
index ce1eb65bc..dd3cf3733 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -108,20 +108,20 @@ void SafariZoneRetirePrompt(void)
void CB2_EndSafariBattle(void)
{
sSafariZoneFleedMons += gBattleResults.field_1F;
- if (gBattleOutcome == BATTLE_CAUGHT)
+ if (gBattleOutcome == B_OUTCOME_CAUGHT)
sSafariZoneCaughtMons++;
if (gNumSafariBalls != 0)
{
SetMainCallback2(c2_exit_to_overworld_2_switch);
}
- else if (gBattleOutcome == BATTLE_SAFARI_OUT_OF_BALLS)
+ else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS)
{
ScriptContext2_RunNewScript(EventScript_2A4B4C);
warp_in();
gFieldCallback = sub_80AF6F0;
SetMainCallback2(c2_load_new_map);
}
- else if (gBattleOutcome == BATTLE_CAUGHT)
+ else if (gBattleOutcome == B_OUTCOME_CAUGHT)
{
ScriptContext1_SetupScript(EventScript_2A4B9B);
ScriptContext1_Stop();
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 95897e721..b207d7e74 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -168,12 +168,12 @@ static bool8 WipeSectors(u32);
// although this is a general text printer, it's only used in this file.
static void SaveFailedScreenTextPrint(u8 *text, u8 var1, u8 var2)
{
- struct TextColor color;
+ u8 color[3];
- color.fgColor = 0;
- color.bgColor = 15;
- color.shadowColor = 3;
- AddTextPrinterParameterized2(gSaveFailedWindowIds[TEXT_WIN_ID], 1, var1 * 8, var2 * 8 + 1, 0, 0, &color, 0, text);
+ color[0] = 0;
+ color[1] = 15;
+ color[2] = 3;
+ AddTextPrinterParameterized2(gSaveFailedWindowIds[TEXT_WIN_ID], 1, var1 * 8, var2 * 8 + 1, 0, 0, color, 0, text);
}
void DoSaveFailedScreen(u8 saveType)
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 934504c36..9394af1cd 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -29,7 +29,6 @@
#include "menu.h"
#include "money.h"
#include "mystery_event_script.h"
-#include "new_menu_helpers.h"
#include "palette.h"
#include "party_menu.h"
#include "pokemon_3.h"
@@ -64,13 +63,6 @@ static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
-extern u16 gSpecialVar_0x8000;
-extern u16 gSpecialVar_0x8001;
-extern u16 gSpecialVar_0x8002;
-extern u16 gSpecialVar_0x8004;
-
-extern u16 gSpecialVar_Result;
-
extern u16 gSpecialVar_ContestCategory;
IWRAM_DATA u8 gUnknown_03000F30;
@@ -1313,7 +1305,7 @@ bool8 ScrCmd_cmdDB(struct ScriptContext *ctx)
if (msg == NULL)
msg = (const u8 *)ctx->data[0];
sub_81973A4();
- sub_81973C4(0, 1);
+ NewMenuHelpers_DrawDialogueFrame(0, 1);
PrintTextOnWindow(0, 1, msg, 0, 1, 0, 0);
return FALSE;
}
@@ -1530,7 +1522,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
template2 = template1;
gUnknown_03000F30 = AddWindow(&template2);
sub_809882C(gUnknown_03000F30, 0x214, 0xE0);
- sub_81973FC(gUnknown_03000F30, 0);
+ NewMenuHelpers_DrawStdWindowFrame(gUnknown_03000F30, 0);
PutWindowTilemap(gUnknown_03000F30);
FillWindowPixelBuffer(gUnknown_03000F30, 0x11);
PrintTextOnWindow(gUnknown_03000F30, 6, gStringVar4, temp1, temp2, 0xFF, 0x0);
@@ -1651,7 +1643,7 @@ _0809AEC6:\n\
bl sub_809882C\n\
ldrb r0, [r5]\n\
mov r1, #0\n\
- bl sub_81973FC\n\
+ bl NewMenuHelpers_DrawStdWindowFrame\n\
ldrb r0, [r5]\n\
bl PutWindowTilemap\n\
ldrb r0, [r5]\n\
diff --git a/src/secret_base.c b/src/secret_base.c
index f6b393630..e3c06a75d 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -9,10 +9,10 @@
#include "window.h"
#include "menu.h"
#include "menu_helpers.h"
-#include "new_menu_helpers.h"
#include "menu_indicators.h"
#include "constants/maps.h"
#include "constants/songs.h"
+#include "constants/species.h"
#include "sound.h"
#include "overworld.h"
#include "fieldmap.h"
@@ -32,6 +32,7 @@
#include "international_string_util.h"
#include "event_data.h"
#include "battle.h"
+#include "battle_setup.h"
#include "rom6.h"
#include "decoration.h"
#include "link.h"
@@ -711,237 +712,45 @@ u8 sub_80E98AC(struct Pokemon *pokemon)
return evTotal / 6;
}
-#ifdef NONMATCHING
-// This function is a meme
void sub_80E9914(void)
{
- u32 zero;
- u32 *personality;
u16 partyIdx;
u16 moveIdx;
u16 sbPartyIdx;
- u16 *species;
- u16 *items;
- u16 *moves;
- u8 *levels;
- u8 *evs;
+ struct SecretBaseParty *party;
sbPartyIdx = 0;
- personality = gSaveBlock1Ptr->secretBases[0].partyPersonality;
+ party = &gSaveBlock1Ptr->secretBases[0].party;
if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0)
{
- partyIdx = 0;
- moves = gSaveBlock1Ptr->secretBases[0].partyMoves;
- species = gSaveBlock1Ptr->secretBases[0].partySpecies;
- items = gSaveBlock1Ptr->secretBases[0].partyHeldItems;
- levels = gSaveBlock1Ptr->secretBases[0].partyLevels;
- evs = gSaveBlock1Ptr->secretBases[0].partyEVs;
- zero = 0;
- for (partyIdx = 0; partyIdx < PARTY_SIZE; partyIdx ++)
+ for (partyIdx = 0; partyIdx < PARTY_SIZE; partyIdx++)
{
- for (moveIdx = 0; moveIdx < 4; moveIdx ++)
+ for (moveIdx = 0; moveIdx < 4; moveIdx++)
{
- moves[partyIdx * 4 + moveIdx] = zero;
+ party->moves[partyIdx * 4 + moveIdx] = 0;
}
- species[partyIdx] = zero;
- items[partyIdx] = zero;
- levels[partyIdx] = zero;
- personality[partyIdx] = zero;
- evs[partyIdx] = zero;
- if (GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[partyIdx], MON_DATA_IS_EGG))
+ party->species[partyIdx] = 0;
+ party->heldItems[partyIdx] = 0;
+ party->levels[partyIdx] = 0;
+ party->personality[partyIdx] = 0;
+ party->EVs[partyIdx] = 0;
+ if (GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&gPlayerParty[partyIdx], MON_DATA_IS_EGG))
{
- for (moveIdx = 0; moveIdx < 4; moveIdx ++)
+ for (moveIdx = 0; moveIdx < 4; moveIdx++)
{
- moves[sbPartyIdx * 4 + moveIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_MOVE1 + moveIdx);
+ party->moves[sbPartyIdx * 4 + moveIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_MOVE1 + moveIdx);
}
- species[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES);
- items[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_HELD_ITEM);
- levels[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_LEVEL);
- personality[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_PERSONALITY);
- evs[sbPartyIdx] = sub_80E98AC(&gPlayerParty[partyIdx]);
- sbPartyIdx ++;
+ party->species[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES);
+ party->heldItems[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_HELD_ITEM);
+ party->levels[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_LEVEL);
+ party->personality[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_PERSONALITY);
+ party->EVs[sbPartyIdx] = sub_80E98AC(&gPlayerParty[partyIdx]);
+ sbPartyIdx++;
}
}
}
}
-#else
-ASM_DIRECT void sub_80E9914(void)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r10\n"
- "\tmov r6, r9\n"
- "\tmov r5, r8\n"
- "\tpush {r5-r7}\n"
- "\tsub sp, 0x24\n"
- "\tmovs r0, 0\n"
- "\tmov r10, r0\n"
- "\tldr r0, =gSaveBlock1Ptr\n"
- "\tldr r1, [r0]\n"
- "\tldr r2, =0x00001ad0\n"
- "\tadds r2, r1, r2\n"
- "\tstr r2, [sp]\n"
- "\tldr r3, =0x00001a9c\n"
- "\tadds r0, r1, r3\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbne _080E993A\n"
- "\tb _080E9A60\n"
- "_080E993A:\n"
- "\tmovs r6, 0\n"
- "\tldr r7, =0x00001ae8\n"
- "\tadds r7, r1, r7\n"
- "\tstr r7, [sp, 0x14]\n"
- "\tldr r0, =0x00001b18\n"
- "\tadds r0, r1, r0\n"
- "\tstr r0, [sp, 0xC]\n"
- "\tldr r2, =0x00001b24\n"
- "\tadds r2, r1, r2\n"
- "\tstr r2, [sp, 0x10]\n"
- "\tadds r3, 0x94\n"
- "\tadds r3, r1, r3\n"
- "\tstr r3, [sp, 0x18]\n"
- "\tldr r7, =0x00001b36\n"
- "\tadds r7, r1, r7\n"
- "\tstr r7, [sp, 0x1C]\n"
- "\tmov r9, r6\n"
- "_080E995C:\n"
- "\tmovs r4, 0\n"
- "\tlsls r5, r6, 2\n"
- "\tlsls r3, r6, 1\n"
- "\tldr r0, =gPlayerParty\n"
- "\tmov r8, r0\n"
- "\tadds r1, r6, 0x1\n"
- "\tstr r1, [sp, 0x4]\n"
- "\tadds r2, r5, 0\n"
- "\tldr r1, [sp, 0x14]\n"
- "_080E996E:\n"
- "\tadds r0, r2, r4\n"
- "\tlsls r0, 1\n"
- "\tadds r0, r1, r0\n"
- "\tmov r7, r9\n"
- "\tstrh r7, [r0]\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r4, r0, 16\n"
- "\tcmp r4, 0x3\n"
- "\tbls _080E996E\n"
- "\tldr r1, [sp, 0xC]\n"
- "\tadds r0, r1, r3\n"
- "\tmov r2, r9\n"
- "\tstrh r2, [r0]\n"
- "\tldr r7, [sp, 0x10]\n"
- "\tadds r0, r7, r3\n"
- "\tstrh r2, [r0]\n"
- "\tldr r1, [sp, 0x18]\n"
- "\tadds r0, r1, r6\n"
- "\tmov r2, r9\n"
- "\tstrb r2, [r0]\n"
- "\tldr r3, [sp]\n"
- "\tadds r0, r3, r5\n"
- "\tmov r7, r9\n"
- "\tstr r7, [r0]\n"
- "\tldr r1, [sp, 0x1C]\n"
- "\tadds r0, r1, r6\n"
- "\tstrb r7, [r0]\n"
- "\tmovs r2, 0x64\n"
- "\tadds r5, r6, 0\n"
- "\tmuls r5, r2\n"
- "\tmov r3, r8\n"
- "\tadds r4, r5, r3\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0xB\n"
- "\tbl GetMonData\n"
- "\tcmp r0, 0\n"
- "\tbeq _080E9A54\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x2D\n"
- "\tbl GetMonData\n"
- "\tcmp r0, 0\n"
- "\tbne _080E9A54\n"
- "\tmovs r4, 0\n"
- "\tmov r7, r10\n"
- "\tlsls r7, 2\n"
- "\tmov r8, r7\n"
- "\tmov r0, r10\n"
- "\tlsls r7, r0, 1\n"
- "\tadds r0, 0x1\n"
- "\tstr r0, [sp, 0x8]\n"
- "\tldr r2, =gPlayerParty\n"
- "_080E99DA:\n"
- "\tadds r1, r4, 0\n"
- "\tadds r1, 0xD\n"
- "\tadds r0, r5, r2\n"
- "\tstr r2, [sp, 0x20]\n"
- "\tbl GetMonData\n"
- "\tmov r3, r8\n"
- "\tadds r1, r3, r4\n"
- "\tlsls r1, 1\n"
- "\tldr r3, [sp, 0x14]\n"
- "\tadds r1, r3, r1\n"
- "\tstrh r0, [r1]\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 16\n"
- "\tlsrs r4, r0, 16\n"
- "\tldr r2, [sp, 0x20]\n"
- "\tcmp r4, 0x3\n"
- "\tbls _080E99DA\n"
- "\tmovs r0, 0x64\n"
- "\tadds r4, r6, 0\n"
- "\tmuls r4, r0\n"
- "\tldr r0, =gPlayerParty\n"
- "\tadds r4, r0\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0xB\n"
- "\tbl GetMonData\n"
- "\tldr r2, [sp, 0xC]\n"
- "\tadds r1, r2, r7\n"
- "\tstrh r0, [r1]\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0xC\n"
- "\tbl GetMonData\n"
- "\tldr r3, [sp, 0x10]\n"
- "\tadds r1, r3, r7\n"
- "\tstrh r0, [r1]\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x38\n"
- "\tbl GetMonData\n"
- "\tldr r1, [sp, 0x18]\n"
- "\tadd r1, r10\n"
- "\tstrb r0, [r1]\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0\n"
- "\tbl GetMonData\n"
- "\tldr r1, [sp]\n"
- "\tadd r1, r8\n"
- "\tstr r0, [r1]\n"
- "\tadds r0, r4, 0\n"
- "\tbl sub_80E98AC\n"
- "\tldr r1, [sp, 0x1C]\n"
- "\tadd r1, r10\n"
- "\tstrb r0, [r1]\n"
- "\tldr r7, [sp, 0x8]\n"
- "\tlsls r0, r7, 16\n"
- "\tlsrs r0, 16\n"
- "\tmov r10, r0\n"
- "_080E9A54:\n"
- "\tldr r1, [sp, 0x4]\n"
- "\tlsls r0, r1, 16\n"
- "\tlsrs r6, r0, 16\n"
- "\tcmp r6, 0x5\n"
- "\tbhi _080E9A60\n"
- "\tb _080E995C\n"
- "_080E9A60:\n"
- "\tadd sp, 0x24\n"
- "\tpop {r3-r5}\n"
- "\tmov r8, r3\n"
- "\tmov r9, r4\n"
- "\tmov r10, r5\n"
- "\tpop {r4-r7}\n"
- "\tpop {r0}\n"
- "\tbx r0\n"
- "\t.pool");
-}
-#endif
void sub_80E9A90(void)
{
@@ -1357,7 +1166,6 @@ void sub_80EA354(void)
gSpecialVar_Result = gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_5;
}
-
void sub_80EA3E4(u8 taskId)
{
s16 x;
diff --git a/src/sprite.c b/src/sprite.c
index 8d416f578..8a4729b27 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -240,12 +240,26 @@ static const AffineAnimCmdFunc sAffineAnimCmdFuncs[] =
AffineAnimCmd_frame,
};
-static const s32 sUnknown_082EC6F4[24] =
+static const s32 sUnknown_082EC6F4[3][4][2] =
{
- 8, 8, 0x10, 0x10, 0x20, 0x20,
- 0x40, 0x40, 0x10, 8, 0x20, 8,
- 0x20, 0x10, 0x40, 0x20, 8, 0x10,
- 8, 0x20, 0x10, 0x20, 0x20, 0x40,
+ {
+ {8, 8},
+ {0x10, 0x10},
+ {0x20, 0x20},
+ {0x40, 0x40},
+ },
+ {
+ {0x10, 8},
+ {0x20, 8},
+ {0x20, 0x10},
+ {0x40, 0x20},
+ },
+ {
+ {8, 0x10},
+ {8, 0x20},
+ {0x10, 0x20},
+ {0x20, 0x40},
+ },
};
static const struct OamDimensions sOamDimensions[3][4] =
@@ -1207,106 +1221,26 @@ s32 sub_8007E28(s32 a0, s32 a1, s32 a2)
return a2 - ((u32)(a2 * a1) / (u32)(a0) + var1);
}
-#ifdef NONMATCHING
-void obj_update_pos2(struct Sprite* sprite, s32 a1, s32 a2)
+void obj_update_pos2(struct Sprite *sprite, s32 a1, s32 a2)
{
s32 var0, var1, var2;
- u8 matrixNum = sprite->oam.matrixNum;
+
+ u32 matrixNum = sprite->oam.matrixNum;
if (a1 != 0x800)
{
- var0 = sUnknown_082EC6F4[sprite->oam.size * 8 + sprite->oam.shape * 32];
+ var0 = sUnknown_082EC6F4[sprite->oam.shape][sprite->oam.size][0];
var1 = var0 << 8;
var2 = (var0 << 16) / gOamMatrices[matrixNum].a;
sprite->pos2.x = sub_8007E28(var1, var2, a1);
}
if (a2 != 0x800)
{
- var0 = sUnknown_082EC6F4[4 + (sprite->oam.size * 8 + sprite->oam.shape * 32)];
+ var0 = sUnknown_082EC6F4[sprite->oam.shape][sprite->oam.size][1];
var1 = var0 << 8;
var2 = (var0 << 16) / gOamMatrices[matrixNum].d;
sprite->pos2.y = sub_8007E28(var1, var2, a2);
}
}
-#else
-ASM_DIRECT
-void obj_update_pos2(struct Sprite* sprite, s32 a1, s32 a2)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- adds r5, r0, 0\n\
- adds r6, r1, 0\n\
- mov r8, r2\n\
- ldrb r1, [r5, 0x3]\n\
- lsls r0, r1, 26\n\
- lsrs r7, r0, 27\n\
- movs r0, 0x80\n\
- lsls r0, 4\n\
- mov r9, r0\n\
- cmp r6, r9\n\
- beq _08007EA2\n\
- ldr r2, =sUnknown_082EC6F4\n\
- lsrs r1, 6\n\
- lsls r1, 3\n\
- ldrb r0, [r5, 0x1]\n\
- lsrs r0, 6\n\
- lsls r0, 5\n\
- adds r1, r0\n\
- adds r1, r2\n\
- ldr r0, [r1]\n\
- lsls r4, r0, 8\n\
- lsls r0, 16\n\
- ldr r2, =gOamMatrices\n\
- lsls r1, r7, 3\n\
- adds r1, r2\n\
- movs r2, 0\n\
- ldrsh r1, [r1, r2]\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- adds r0, r4, 0\n\
- adds r2, r6, 0\n\
- bl sub_8007E28\n\
- strh r0, [r5, 0x24]\n\
-_08007EA2:\n\
- cmp r8, r9\n\
- beq _08007EDA\n\
- ldr r2, =sUnknown_082EC6F4\n\
- ldrb r1, [r5, 0x3]\n\
- lsrs r1, 6\n\
- lsls r1, 3\n\
- ldrb r0, [r5, 0x1]\n\
- lsrs r0, 6\n\
- lsls r0, 5\n\
- adds r1, r0\n\
- adds r2, 0x4\n\
- adds r1, r2\n\
- ldr r0, [r1]\n\
- lsls r4, r0, 8\n\
- lsls r0, 16\n\
- ldr r2, =gOamMatrices\n\
- lsls r1, r7, 3\n\
- adds r1, r2\n\
- movs r2, 0x6\n\
- ldrsh r1, [r1, r2]\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- adds r0, r4, 0\n\
- mov r2, r8\n\
- bl sub_8007E28\n\
- strh r0, [r5, 0x26]\n\
-_08007EDA:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
void SetSpriteOamFlipBits(struct Sprite *sprite, u8 hFlip, u8 vFlip)
{
diff --git a/src/start_menu.c b/src/start_menu.c
index a820cd992..d076d307d 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -32,7 +32,7 @@ extern bool32 InUnionRoom(void);
extern bool8 InBattlePike(void);
extern bool8 InBattlePyramid(void);
extern bool8 InMultiBattleRoom(void);
-extern void sub_81973FC(u8 windowId, u8 a1);
+extern void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, u8 a1);
extern void sub_8198070(u8 windowId, u8 a1);
// this file's functions
@@ -62,6 +62,11 @@ EWRAM_DATA u8 sBattlePyramidFloorWindowId = 0;
EWRAM_DATA u8 sStartMenuCursorPos = 0;
EWRAM_DATA u8 sNumStartMenuActions = 0;
EWRAM_DATA u8 sCurrentStartMenuActions[9] = {0};
+EWRAM_DATA u8 gUnknown_02037619[2] = {0};
+EWRAM_DATA bool8 (*gUnknown_0203761C)(void) = NULL;
+EWRAM_DATA u8 gUnknown_02037620 = 0;
+EWRAM_DATA u8 gUnknown_02037621 = 0;
+EWRAM_DATA u8 gUnknown_02037622 = 0;
// const rom data
static const struct WindowTemplate gSafariBallsWindowTemplate = {0, 1, 1, 9, 4, 0xF, 8};
@@ -120,6 +125,13 @@ const struct WindowTemplate gUnknown_085105AC[] =
const struct WindowTemplate gUnknown_085105BC = {0, 1, 1, 0xE, 0xA, 0xF, 8};
// code
+void SetDexPokemonPokenavFlags(void) // unused
+{
+ FlagSet(FLAG_SYS_POKEDEX_GET);
+ FlagSet(FLAG_SYS_POKEMON_GET);
+ FlagSet(FLAG_SYS_POKENAV_GET);
+}
+
void BuildStartMenuActions(void)
{
sNumStartMenuActions = 0;
@@ -224,7 +236,7 @@ void DisplaySafariBallsWindow(void)
{
sSafariBallsWindowId = AddWindow(&gSafariBallsWindowTemplate);
PutWindowTilemap(sSafariBallsWindowId);
- sub_81973FC(sSafariBallsWindowId, 0);
+ NewMenuHelpers_DrawStdWindowFrame(sSafariBallsWindowId, 0);
ConvertIntToDecimalStringN(gStringVar1, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2);
StringExpandPlaceholders(gStringVar4, gText_SafariBallStock);
PrintTextOnWindow(sSafariBallsWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
@@ -239,7 +251,7 @@ void DisplayPyramidFloorWindow(void)
else
sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_2);
PutWindowTilemap(sBattlePyramidFloorWindowId);
- sub_81973FC(sBattlePyramidFloorWindowId, 0);
+ NewMenuHelpers_DrawStdWindowFrame(sBattlePyramidFloorWindowId, 0);
StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->field_CAA[4]]);
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
PrintTextOnWindow(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
diff --git a/src/text.c b/src/text.c
index 4c2b03b71..a2495d068 100644
--- a/src/text.c
+++ b/src/text.c
@@ -164,7 +164,7 @@ u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 spee
subPrinter.letterSpacing = gFonts[fontId].letterSpacing;
subPrinter.lineSpacing = gFonts[fontId].lineSpacing;
subPrinter.fontColor_l = gFonts[fontId].fontColor_l;
- subPrinter.fontColor_h = gFonts[fontId].fontColor_h;
+ subPrinter.fgColor = gFonts[fontId].fgColor;
subPrinter.bgColor = gFonts[fontId].bgColor;
subPrinter.shadowColor = gFonts[fontId].shadowColor;
return AddTextPrinter(&subPrinter, speed, callback);
@@ -194,7 +194,7 @@ bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*ca
gTempTextPrinter.minLetterSpacing = 0;
gTempTextPrinter.japanese = 0;
- GenerateFontHalfRowLookupTable(textSubPrinter->fontColor_h, textSubPrinter->bgColor, textSubPrinter->shadowColor);
+ GenerateFontHalfRowLookupTable(textSubPrinter->fgColor, textSubPrinter->bgColor, textSubPrinter->shadowColor);
if (speed != TEXT_SPEED_FF && speed != 0x0)
{
--gTempTextPrinter.text_speed;
@@ -3517,7 +3517,7 @@ u8 GetFontAttribute(u8 fontId, u8 attributeId)
result = gFontInfos[fontId].fontColor_l;
break;
case 5:
- result = gFontInfos[fontId].fontColor_h;
+ result = gFontInfos[fontId].fgColor;
break;
case 6:
result = gFontInfos[fontId].bgColor;
diff --git a/src/title_screen.c b/src/title_screen.c
new file mode 100644
index 000000000..4e25c8152
--- /dev/null
+++ b/src/title_screen.c
@@ -0,0 +1,783 @@
+#include "global.h"
+#include "title_screen.h"
+#include "sprite.h"
+#include "gba/m4a_internal.h"
+#include "clear_save_data_menu.h"
+#include "decompress.h"
+#include "event_data.h"
+#include "intro.h"
+#include "m4a.h"
+#include "main.h"
+#include "main_menu.h"
+#include "palette.h"
+#include "reset_rtc_screen.h"
+#include "berry_fix_program.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "scanline_effect.h"
+#include "gpu_regs.h"
+#include "trig.h"
+#include "constants/rgb.h"
+
+#define VERSION_BANNER_SHAPE 1
+#define VERSION_BANNER_RIGHT_TILEOFFSET 64
+#define VERSION_BANNER_BYTES 0x1000
+#define VERSION_BANNER_LEFT_X 98
+#define VERSION_BANNER_RIGHT_X 162
+#define VERSION_BANNER_Y 2
+#define VERSION_BANNER_Y_GOAL 66
+#define START_BANNER_X 128
+
+#define CLEAR_SAVE_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON | DPAD_UP)
+#define RESET_RTC_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON | DPAD_LEFT)
+#define BERRY_UPDATE_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON)
+#define A_B_START_SELECT (A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON)
+
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+
+extern const u8 gTitleScreenEmeraldVersionGfx[];
+extern const u8 gTitleScreenPressStartGfx[];
+extern const u8 gTitleScreenPokemonLogoGfx[];
+extern const u8 gUnknown_08DE0644[];
+extern const u8 gUnknown_08DDE458[];
+extern const u16 gTitleScreenBgPalettes[];
+extern const u16 gTitleScreenPressStartPal[];
+extern const u16 gTitleScreenEmeraldVersionPal[];
+
+// this file's functions
+static void MainCB2(void);
+static void Task_TitleScreenPhase1(u8);
+static void Task_TitleScreenPhase2(u8);
+static void Task_TitleScreenPhase3(u8);
+static void CB2_GoToMainMenu(void);
+static void CB2_GoToClearSaveDataScreen(void);
+static void CB2_GoToResetRtcScreen(void);
+static void CB2_GoToBerryFixScreen(void);
+static void CB2_GoToCopyrightScreen(void);
+static void UpdateLegendaryMarkingColor(u8);
+
+static void SpriteCB_VersionBannerLeft(struct Sprite *sprite);
+static void SpriteCB_VersionBannerRight(struct Sprite *sprite);
+static void SpriteCB_PressStartCopyrightBanner(struct Sprite *sprite);
+static void SpriteCB_PokemonLogoShine(struct Sprite *sprite);
+
+// const rom data
+static const u16 sUnusedUnknownPal[] = INCBIN_U16("graphics/title_screen/unk_853EF78.gbapal");
+
+static const u8 sTitleScreenRayquazaGfx[] = INCBIN_U8("graphics/title_screen/rayquaza.4bpp.lz");
+static const u8 sTitleScreenRayquazaTilemap[] = INCBIN_U8("graphics/title_screen/rayquaza.bin.lz");
+static const u8 sTitleScreenLogoShineGfx[] = INCBIN_U8("graphics/title_screen/logo_shine.4bpp.lz");
+static const u8 sTitleScreenCloudsGfx[] = INCBIN_U8("graphics/title_screen/clouds.4bpp.lz");
+
+const u16 gUnknown_0853FF70[] =
+{
+ 0x0010, 0x0110, 0x0210, 0x0310, 0x0410, 0x0510, 0x0610, 0x0710,
+ 0x0810, 0x0910, 0x0a10, 0x0b10, 0x0c10, 0x0d10, 0x0e10, 0x0f10,
+ 0x100f, 0x100e, 0x100d, 0x100c, 0x100b, 0x100a, 0x1009, 0x1008,
+ 0x1007, 0x1006, 0x1005, 0x1004, 0x1003, 0x1002, 0x1001, 0x1000,
+ 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+ 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+ 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+ 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
+};
+
+static const struct OamData sVersionBannerLeftOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 1,
+ .shape = VERSION_BANNER_SHAPE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData sVersionBannerRightOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 1,
+ .shape = VERSION_BANNER_SHAPE,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sVersionBannerLeftAnimSequence[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sVersionBannerRightAnimSequence[] =
+{
+ ANIMCMD_FRAME(VERSION_BANNER_RIGHT_TILEOFFSET, 30),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sVersionBannerLeftAnimTable[] =
+{
+ sVersionBannerLeftAnimSequence,
+};
+
+static const union AnimCmd *const sVersionBannerRightAnimTable[] =
+{
+ sVersionBannerRightAnimSequence,
+};
+
+static const struct SpriteTemplate sVersionBannerLeftSpriteTemplate =
+{
+ .tileTag = 1000,
+ .paletteTag = 1000,
+ .oam = &sVersionBannerLeftOamData,
+ .anims = sVersionBannerLeftAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_VersionBannerLeft,
+};
+
+static const struct SpriteTemplate sVersionBannerRightSpriteTemplate =
+{
+ .tileTag = 1000,
+ .paletteTag = 1000,
+ .oam = &sVersionBannerRightOamData,
+ .anims = sVersionBannerRightAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_VersionBannerRight,
+};
+
+static const struct CompressedSpriteSheet sSpriteSheet_EmeraldVersion[] =
+{
+ {gTitleScreenEmeraldVersionGfx, VERSION_BANNER_BYTES, 1000},
+ {NULL},
+};
+
+static const struct OamData sOamData_CopyrightBanner =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sCopyrightBannerAnim0[] =
+{
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim1[] =
+{
+ ANIMCMD_FRAME(5, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim2[] =
+{
+ ANIMCMD_FRAME(9, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim3[] =
+{
+ ANIMCMD_FRAME(13, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim4[] =
+{
+ ANIMCMD_FRAME(17, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim5[] =
+{
+ ANIMCMD_FRAME(21, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim6[] =
+{
+ ANIMCMD_FRAME(25, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim7[] =
+{
+ ANIMCMD_FRAME(29, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim8[] =
+{
+ ANIMCMD_FRAME(33, 4),
+ ANIMCMD_END,
+};
+static const union AnimCmd sCopyrightBannerAnim9[] =
+{
+ ANIMCMD_FRAME(37, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sStartCopyrightBannerAnimTable[] =
+{
+ sCopyrightBannerAnim0,
+ sCopyrightBannerAnim1,
+ sCopyrightBannerAnim2,
+ sCopyrightBannerAnim3,
+ sCopyrightBannerAnim4,
+ sCopyrightBannerAnim5,
+ sCopyrightBannerAnim6,
+ sCopyrightBannerAnim7,
+ sCopyrightBannerAnim8,
+ sCopyrightBannerAnim9,
+};
+
+static const struct SpriteTemplate sStartCopyrightBannerSpriteTemplate =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &sOamData_CopyrightBanner,
+ .anims = sStartCopyrightBannerAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_PressStartCopyrightBanner,
+};
+
+static const struct CompressedSpriteSheet sSpriteSheet_PressStart[] =
+{
+ {gTitleScreenPressStartGfx, 0x520, 1001},
+ {NULL},
+};
+
+static const struct SpritePalette sSpritePalette_PressStart[] =
+{
+ {gTitleScreenPressStartPal, 1001},
+ {NULL},
+};
+
+static const struct OamData sPokemonLogoShineOamData =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sPokemonLogoShineAnimSequence[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sPokemonLogoShineAnimTable[] =
+{
+ sPokemonLogoShineAnimSequence,
+};
+
+static const struct SpriteTemplate sPokemonLogoShineSpriteTemplate =
+{
+ .tileTag = 1002,
+ .paletteTag = 1001,
+ .oam = &sPokemonLogoShineOamData,
+ .anims = sPokemonLogoShineAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_PokemonLogoShine,
+};
+
+static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] =
+{
+ {sTitleScreenLogoShineGfx, 0x800, 1002},
+ {NULL},
+};
+
+// code
+static void SpriteCB_VersionBannerLeft(struct Sprite *sprite)
+{
+ if (gTasks[sprite->data[1]].data[1] != 0)
+ {
+ sprite->oam.objMode = 0;
+ sprite->pos1.y = VERSION_BANNER_Y_GOAL;
+ }
+ else
+ {
+ if (sprite->pos1.y != VERSION_BANNER_Y_GOAL)
+ sprite->pos1.y++;
+ if (sprite->data[0] != 0)
+ sprite->data[0]--;
+ SetGpuReg(REG_OFFSET_BLDALPHA, gUnknown_0853FF70[sprite->data[0]]);
+ }
+}
+
+static void SpriteCB_VersionBannerRight(struct Sprite *sprite)
+{
+ if (gTasks[sprite->data[1]].data[1] != 0)
+ {
+ sprite->oam.objMode = 0;
+ sprite->pos1.y = VERSION_BANNER_Y_GOAL;
+ }
+ else
+ {
+ if (sprite->pos1.y != VERSION_BANNER_Y_GOAL)
+ sprite->pos1.y++;
+ }
+}
+
+static void SpriteCB_PressStartCopyrightBanner(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 1)
+ {
+ sprite->data[1]++;
+ // Alternate between hidden and shown every 16th frame
+ if (sprite->data[1] & 0x10)
+ sprite->invisible = FALSE;
+ else
+ sprite->invisible = TRUE;
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ }
+}
+
+static void CreatePressStartBanner(s16 x, s16 y)
+{
+ u8 i;
+ u8 spriteId;
+
+ x -= 64;
+ for (i = 0; i < 5; i++, x += 32)
+ {
+ spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0);
+ StartSpriteAnim(&gSprites[spriteId], i);
+ gSprites[spriteId].data[0] = 1;
+ }
+}
+
+static void CreateCopyrightBanner(s16 x, s16 y)
+{
+ u8 i;
+ u8 spriteId;
+
+ x -= 64;
+ for (i = 0; i < 5; i++, x += 32)
+ {
+ spriteId = CreateSprite(&sStartCopyrightBannerSpriteTemplate, x, y, 0);
+ StartSpriteAnim(&gSprites[spriteId], i + 5);
+ }
+}
+
+static void SpriteCB_PokemonLogoShine(struct Sprite *sprite)
+{
+ if (sprite->pos1.x < 272)
+ {
+ if (sprite->data[0]) // Flash background
+ {
+ u16 backgroundColor;
+
+ if (sprite->pos1.x < DISPLAY_WIDTH / 2)
+ {
+ // Brighten background color
+ if (sprite->data[1] < 31)
+ sprite->data[1]++;
+ if (sprite->data[1] < 31)
+ sprite->data[1]++;
+ }
+ else
+ {
+ // Darken background color
+ if (sprite->data[1] != 0)
+ sprite->data[1]--;
+ if (sprite->data[1] != 0)
+ sprite->data[1]--;
+ }
+
+ backgroundColor = _RGB(sprite->data[1], sprite->data[1], sprite->data[1]);
+ if (sprite->pos1.x == DISPLAY_WIDTH / 2 + 12
+ || sprite->pos1.x == DISPLAY_WIDTH / 2 + 16
+ || sprite->pos1.x == DISPLAY_WIDTH / 2 + 20
+ || sprite->pos1.x == DISPLAY_WIDTH / 2 + 24)
+ gPlttBufferFaded[0] = RGB(24, 31, 12);
+ else
+ gPlttBufferFaded[0] = backgroundColor;
+ }
+ sprite->pos1.x += 4;
+ }
+ else
+ {
+ gPlttBufferFaded[0] = RGB_BLACK;
+ DestroySprite(sprite);
+ }
+}
+
+static void SpriteCB_PokemonLogoShine2(struct Sprite *sprite)
+{
+ if (sprite->pos1.x < 272)
+ sprite->pos1.x += 8;
+ else
+ DestroySprite(sprite);
+}
+
+static void StartPokemonLogoShine(u8 flashBg)
+{
+ u8 spriteId;
+
+ switch (flashBg)
+ {
+ case 0:
+ case 2:
+ spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0);
+ gSprites[spriteId].oam.objMode = 2;
+ gSprites[spriteId].data[0] = flashBg;
+ break;
+ case 1:
+ spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0);
+ gSprites[spriteId].oam.objMode = 2;
+ gSprites[spriteId].data[0] = flashBg;
+ gSprites[spriteId].invisible = TRUE;
+
+ spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, 0, 68, 0);
+ gSprites[spriteId].callback = SpriteCB_PokemonLogoShine2;
+ gSprites[spriteId].oam.objMode = 2;
+
+ spriteId = CreateSprite(&sPokemonLogoShineSpriteTemplate, -80, 68, 0);
+ gSprites[spriteId].callback = SpriteCB_PokemonLogoShine2;
+ gSprites[spriteId].oam.objMode = 2;
+ break;
+ }
+}
+
+static void VBlankCB(void)
+{
+ ScanlineEffect_InitHBlankDmaTransfer();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+}
+
+#define tCounter data[0]
+#define tSkipToNext data[1]
+
+void CB2_InitTitleScreen(void)
+{
+ switch (gMain.state)
+ {
+ default:
+ case 0:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ *((u16 *)PLTT) = RGB_WHITE;
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+ ResetPaletteFade();
+ gMain.state = 1;
+ break;
+ case 1:
+ LZ77UnCompVram(gTitleScreenPokemonLogoGfx, (void *)VRAM);
+ LZ77UnCompVram(gUnknown_08DE0644, (void *)(VRAM + 0x4800));
+ LoadPalette(gTitleScreenBgPalettes, 0, 0x1E0);
+ LZ77UnCompVram(sTitleScreenRayquazaGfx, (void *)(VRAM + 0x8000));
+ LZ77UnCompVram(sTitleScreenRayquazaTilemap, (void *)(VRAM + 0xD000));
+ LZ77UnCompVram(sTitleScreenCloudsGfx, (void *)(VRAM + 0xC000));
+ LZ77UnCompVram(gUnknown_08DDE458, (void *)(VRAM + 0xD800));
+ ScanlineEffect_Stop();
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 9;
+ LoadCompressedObjectPic(&sSpriteSheet_EmeraldVersion[0]);
+ LoadCompressedObjectPic(&sSpriteSheet_PressStart[0]);
+ LoadCompressedObjectPic(&sPokemonLogoShineSpriteSheet[0]);
+ LoadPalette(gTitleScreenEmeraldVersionPal, 0x100, 0x20);
+ LoadSpritePalette(&sSpritePalette_PressStart[0]);
+ gMain.state = 2;
+ break;
+ case 2:
+ {
+ u8 taskId = CreateTask(Task_TitleScreenPhase1, 0);
+
+ gTasks[taskId].tCounter = 256;
+ gTasks[taskId].tSkipToNext = FALSE;
+ gTasks[taskId].data[2] = -16;
+ gTasks[taskId].data[3] = -32;
+ gMain.state = 3;
+ break;
+ }
+ case 3:
+ BeginNormalPaletteFade(-1, 1, 0x10, 0, 0xFFFF);
+ SetVBlankCallback(VBlankCB);
+ gMain.state = 4;
+ break;
+ case 4:
+ sub_816F2A8(0x78, 0x50, 0x100, 0);
+ SetGpuReg(REG_OFFSET_BG2X_L, -29 * 256);
+ SetGpuReg(REG_OFFSET_BG2X_H, -1);
+ SetGpuReg(REG_OFFSET_BG2Y_L, -32 * 256);
+ SetGpuReg(REG_OFFSET_BG2Y_H, -1);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WIN1H, 0);
+ SetGpuReg(REG_OFFSET_WIN1V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0x1F1F);
+ SetGpuReg(REG_OFFSET_WINOUT, 0x3F1F);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x84);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0xC);
+ SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(26) | BGCNT_16COLOR | BGCNT_TXT256x256);
+ SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(27) | BGCNT_16COLOR | BGCNT_TXT256x256);
+ SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_256COLOR | BGCNT_AFF256x256);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1
+ | DISPCNT_OBJ_1D_MAP
+ | DISPCNT_BG2_ON
+ | DISPCNT_OBJ_ON
+ | DISPCNT_WIN0_ON
+ | DISPCNT_OBJWIN_ON);
+ m4aSongNumStart(0x19D);
+ gMain.state = 5;
+ break;
+ case 5:
+ if (!UpdatePaletteFade())
+ {
+ StartPokemonLogoShine(0);
+ ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE);
+ SetMainCallback2(MainCB2);
+ }
+ break;
+ }
+}
+
+static void MainCB2(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+// Shine the Pokemon logo two more times, and fade in the version banner
+static void Task_TitleScreenPhase1(u8 taskId)
+{
+ // Skip to next phase when A, B, Start, or Select is pressed
+ if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].data[1] != 0)
+ {
+ gTasks[taskId].tSkipToNext = TRUE;
+ gTasks[taskId].tCounter = 0;
+ }
+
+ if (gTasks[taskId].tCounter != 0)
+ {
+ u16 frameNum = gTasks[taskId].tCounter;
+ if (frameNum == 176)
+ StartPokemonLogoShine(1);
+ else if (frameNum == 64)
+ StartPokemonLogoShine(2);
+
+ gTasks[taskId].tCounter--;
+ }
+ else
+ {
+ u8 spriteId;
+
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x3F50);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x10);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+
+ // Create left side of version banner
+ spriteId = CreateSprite(&sVersionBannerLeftSpriteTemplate, VERSION_BANNER_LEFT_X, VERSION_BANNER_Y, 0);
+ gSprites[spriteId].data[0] = 64;
+ gSprites[spriteId].data[1] = taskId;
+
+ // Create right side of version banner
+ spriteId = CreateSprite(&sVersionBannerRightSpriteTemplate, VERSION_BANNER_RIGHT_X, VERSION_BANNER_Y, 0);
+ gSprites[spriteId].data[1] = taskId;
+
+ gTasks[taskId].tCounter = 144;
+ gTasks[taskId].func = Task_TitleScreenPhase2;
+ }
+}
+
+// Create "Press Start" and copyright banners, and slide Pokemon logo up
+static void Task_TitleScreenPhase2(u8 taskId)
+{
+ u32 yPos;
+
+ // Skip to next phase when A, B, Start, or Select is pressed
+ if ((gMain.newKeys & A_B_START_SELECT) || gTasks[taskId].tSkipToNext)
+ {
+ gTasks[taskId].tSkipToNext = TRUE;
+ gTasks[taskId].tCounter = 0;
+ }
+
+ if (gTasks[taskId].tCounter != 0)
+ {
+ gTasks[taskId].tCounter--;
+ }
+ else
+ {
+ gTasks[taskId].tSkipToNext = TRUE;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x2142);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0xF06);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1
+ | DISPCNT_OBJ_1D_MAP
+ | DISPCNT_BG0_ON
+ | DISPCNT_BG1_ON
+ | DISPCNT_BG2_ON
+ | DISPCNT_OBJ_ON);
+ CreatePressStartBanner(START_BANNER_X, 108);
+ CreateCopyrightBanner(START_BANNER_X, 148);
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].func = Task_TitleScreenPhase3;
+ }
+
+ if (!(gTasks[taskId].tCounter & 3) && gTasks[taskId].data[2] != 0)
+ gTasks[taskId].data[2]++;
+ if (!(gTasks[taskId].tCounter & 1) && gTasks[taskId].data[3] != 0)
+ gTasks[taskId].data[3]++;
+
+ // Slide Pokemon logo up
+ yPos = gTasks[taskId].data[3] * 256;
+ SetGpuReg(REG_OFFSET_BG2Y_L, yPos);
+ SetGpuReg(REG_OFFSET_BG2Y_H, yPos / 0x10000);
+
+ gTasks[taskId].data[5] = 15;
+ gTasks[taskId].data[6] = 6;
+}
+
+// Show Rayquaza silhouette and process main title screen input
+static void Task_TitleScreenPhase3(u8 taskId)
+{
+ if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & START_BUTTON))
+ {
+ FadeOutBGM(4);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xFFFF);
+ SetMainCallback2(CB2_GoToMainMenu);
+ }
+ else if ((gMain.heldKeys & CLEAR_SAVE_BUTTON_COMBO) == CLEAR_SAVE_BUTTON_COMBO)
+ {
+ SetMainCallback2(CB2_GoToClearSaveDataScreen);
+ }
+ else if ((gMain.heldKeys & RESET_RTC_BUTTON_COMBO) == RESET_RTC_BUTTON_COMBO
+ && CanResetRTC() == TRUE)
+ {
+ FadeOutBGM(4);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ SetMainCallback2(CB2_GoToResetRtcScreen);
+ }
+ else if ((gMain.heldKeys & BERRY_UPDATE_BUTTON_COMBO) == BERRY_UPDATE_BUTTON_COMBO)
+ {
+ FadeOutBGM(4);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ SetMainCallback2(CB2_GoToBerryFixScreen);
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BG2Y_L, 0);
+ SetGpuReg(REG_OFFSET_BG2Y_H, 0);
+ gTasks[taskId].tCounter++;
+ if (gTasks[taskId].tCounter & 1)
+ {
+ gTasks[taskId].data[4]++;
+ gBattle_BG1_Y = gTasks[taskId].data[4] / 2;
+ gBattle_BG1_X = 0;
+ }
+ UpdateLegendaryMarkingColor(gTasks[taskId].tCounter);
+ if ((gMPlayInfo_BGM.status & 0xFFFF) == 0)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xFFFF);
+ SetMainCallback2(CB2_GoToCopyrightScreen);
+ }
+ }
+}
+
+static void CB2_GoToMainMenu(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(CB2_InitMainMenu);
+}
+
+static void CB2_GoToCopyrightScreen(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(CB2_InitCopyrightScreenAfterTitleScreen);
+}
+
+static void CB2_GoToClearSaveDataScreen(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(CB2_InitClearSaveDataScreen);
+}
+
+static void CB2_GoToResetRtcScreen(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(CB2_InitResetRtcScreen);
+}
+
+static void CB2_GoToBerryFixScreen(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ m4aMPlayAllStop();
+ SetMainCallback2(CB2_InitBerryFixProgram);
+ }
+}
+
+static void UpdateLegendaryMarkingColor(u8 frameNum)
+{
+ if ((frameNum % 4) == 0) // Change color every 4th frame
+ {
+ s32 intensity = Cos(frameNum, 128) + 128;
+ s32 r = 31 - ((intensity * 32 - intensity) / 256);
+ s32 g = 31 - (intensity * 22 / 256);
+ s32 b = 12;
+
+ u16 color = RGB(r, g, b);
+ LoadPalette(&color, 0xEF, sizeof(color));
+ }
+}
diff --git a/src/tv.c b/src/tv.c
index 1053e51af..fbe39fde0 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1208,7 +1208,7 @@ void PutPokemonTodayFailedOnTheAir(void)
{
ct = 0xFF;
}
- if (ct > 2 && (gBattleOutcome == BATTLE_POKE_FLED || gBattleOutcome == BATTLE_WON))
+ if (ct > 2 && (gBattleOutcome == B_OUTCOME_MON_FLED || gBattleOutcome == B_OUTCOME_WON))
{
sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_FAILED, FALSE) != TRUE)
@@ -2402,23 +2402,23 @@ void sub_80EE184(void)
show->breakingNews.poke1Species = gBattleResults.playerMon1Species;
switch (gBattleOutcome)
{
- case BATTLE_LOST:
- case BATTLE_DREW:
+ case B_OUTCOME_LOST:
+ case B_OUTCOME_DREW:
show->breakingNews.kind = TVSHOW_OFF_AIR;
return;
- case BATTLE_CAUGHT:
+ case B_OUTCOME_CAUGHT:
show->breakingNews.outcome = 0;
break;
- case BATTLE_WON:
+ case B_OUTCOME_WON:
show->breakingNews.outcome = 1;
break;
- case BATTLE_RAN:
- case BATTLE_PLAYER_TELEPORTED:
- case BATTLE_SAFARI_OUT_OF_BALLS:
+ case B_OUTCOME_RAN:
+ case B_OUTCOME_PLAYER_TELEPORTED:
+ case B_OUTCOME_NO_SAFARI_BALLS:
show->breakingNews.outcome = 2;
break;
- case BATTLE_POKE_FLED:
- case BATTLE_OPPONENT_TELEPORTED:
+ case B_OUTCOME_MON_FLED:
+ case B_OUTCOME_MON_TELEPORTED:
show->breakingNews.outcome = 3;
break;
}
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
index 8eaab32b6..ca8246128 100644
--- a/src/unk_text_util_2.c
+++ b/src/unk_text_util_2.c
@@ -57,24 +57,24 @@ u16 Font6Func(struct TextPrinter *textPrinter)
switch (char_)
{
case 1:
- textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset ++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.current_text_offset ++;
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
return 2;
case 2:
textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.current_text_offset ++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
return 2;
case 3:
textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.current_text_offset ++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
return 2;
case 4:
- textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.fgColor = *textPrinter->subPrinter.current_text_offset;
textPrinter->subPrinter.bgColor = *++ textPrinter->subPrinter.current_text_offset;
textPrinter->subPrinter.shadowColor = *++ textPrinter->subPrinter.current_text_offset;
textPrinter->subPrinter.current_text_offset ++;
- GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fgColor, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
return 2;
case 5:
textPrinter->subPrinter.current_text_offset ++;
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 705c4416c..279b6e672 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -19,16 +19,12 @@
#include "link.h"
#include "script.h"
#include "constants/items.h"
+#include "constants/maps.h"
extern const u8 EventScript_RepelWoreOff[];
#define NUM_FEEBAS_SPOTS 6
-extern const u16 gRoute119WaterTileData[];
-extern const struct WildPokemonHeader gBattlePikeWildMonHeaders[];
-extern const struct WildPokemonHeader gBattlePyramidWildMonHeaders[];
-extern const struct WildPokemon gWildFeebasRoute119Data;
-
extern u8 GetBattlePikeWildMonHeaderId(void);
extern bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate);
extern void GenerateBattlePyramidWildMon(void);
@@ -44,9 +40,4564 @@ static void ApplyCleanseTagEncounterRateMod(u32 *encRate);
static bool8 TryGetAbilityInfluencedWildMonIndex(const struct WildPokemon *wildMon, u8 type, u8 ability, u8 *monIndex);
static bool8 IsAbilityAllowingEncounter(u8 level);
-EWRAM_DATA u8 sWildEncountersDisabled = 0;
-EWRAM_DATA u32 sFeebasRngValue = 0;
+// EWRAM vars
+EWRAM_DATA static u8 sWildEncountersDisabled = 0;
+EWRAM_DATA static u32 sFeebasRngValue = 0;
+
+// const rom data
+const struct WildPokemon gRoute101_LandMons[] =
+{
+ {2, 2, SPECIES_WURMPLE},
+ {2, 2, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_WURMPLE},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_WURMPLE},
+ {3, 3, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_ZIGZAGOON},
+ {2, 2, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+};
+
+const struct WildPokemonInfo gRoute101_LandMonsInfo = {20, gRoute101_LandMons};
+
+const struct WildPokemon gRoute102_LandMons[] =
+{
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_WURMPLE},
+ {4, 4, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_WURMPLE},
+ {3, 3, SPECIES_LOTAD},
+ {4, 4, SPECIES_LOTAD},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_RALTS},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_SEEDOT},
+};
+
+const struct WildPokemonInfo gRoute102_LandMonsInfo = {20, gRoute102_LandMons};
+
+const struct WildPokemon gRoute102_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute102_WaterMonsInfo = {4, gRoute102_WaterMons};
+
+const struct WildPokemon gRoute102_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+
+const struct WildPokemonInfo gRoute102_FishingMonsInfo = {30, gRoute102_FishingMons};
+
+const struct WildPokemon gRoute103_LandMons[] =
+{
+ {2, 2, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {3, 3, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_POOCHYENA},
+ {2, 2, SPECIES_WINGULL},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_ZIGZAGOON},
+ {4, 4, SPECIES_ZIGZAGOON},
+ {3, 3, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {2, 2, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+};
+
+const struct WildPokemonInfo gRoute103_LandMonsInfo = {20, gRoute103_LandMons};
+
+const struct WildPokemon gRoute103_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute103_WaterMonsInfo = {4, gRoute103_WaterMons};
+
+const struct WildPokemon gRoute103_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute103_FishingMonsInfo = {30, gRoute103_FishingMons};
+
+const struct WildPokemon gRoute104_LandMons[] =
+{
+ {4, 4, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_WURMPLE},
+ {5, 5, SPECIES_POOCHYENA},
+ {5, 5, SPECIES_MARILL},
+ {4, 4, SPECIES_MARILL},
+ {5, 5, SPECIES_POOCHYENA},
+ {4, 4, SPECIES_TAILLOW},
+ {5, 5, SPECIES_TAILLOW},
+ {4, 4, SPECIES_WINGULL},
+ {4, 4, SPECIES_WINGULL},
+ {3, 3, SPECIES_WINGULL},
+ {5, 5, SPECIES_WINGULL},
+};
+
+const struct WildPokemonInfo gRoute104_LandMonsInfo = {20, gRoute104_LandMons};
+
+const struct WildPokemon gRoute104_WaterMons[] =
+{
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute104_WaterMonsInfo = {4, gRoute104_WaterMons};
+
+const struct WildPokemon gRoute104_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {20, 25, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_MAGIKARP},
+ {40, 45, SPECIES_MAGIKARP},
+};
+
+const struct WildPokemonInfo gRoute104_FishingMonsInfo = {30, gRoute104_FishingMons};
+
+const struct WildPokemon gRoute105_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute105_WaterMonsInfo = {4, gRoute105_WaterMons};
+
+const struct WildPokemon gRoute105_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute105_FishingMonsInfo = {30, gRoute105_FishingMons};
+
+const struct WildPokemon gRoute110_LandMons[] =
+{
+ {12, 12, SPECIES_POOCHYENA},
+ {12, 12, SPECIES_ELECTRIKE},
+ {12, 12, SPECIES_GULPIN},
+ {13, 13, SPECIES_ELECTRIKE},
+ {13, 13, SPECIES_MINUN},
+ {13, 13, SPECIES_ODDISH},
+ {13, 13, SPECIES_MINUN},
+ {13, 13, SPECIES_GULPIN},
+ {12, 12, SPECIES_WINGULL},
+ {12, 12, SPECIES_WINGULL},
+ {12, 12, SPECIES_PLUSLE},
+ {13, 13, SPECIES_PLUSLE},
+};
+
+const struct WildPokemonInfo gRoute110_LandMonsInfo = {20, gRoute110_LandMons};
+
+const struct WildPokemon gRoute110_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute110_WaterMonsInfo = {4, gRoute110_WaterMons};
+
+const struct WildPokemon gRoute110_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute110_FishingMonsInfo = {30, gRoute110_FishingMons};
+
+const struct WildPokemon gRoute111_LandMons[] =
+{
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {19, 19, SPECIES_BALTOY},
+ {21, 21, SPECIES_BALTOY},
+ {19, 19, SPECIES_SANDSHREW},
+ {19, 19, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_BALTOY},
+ {20, 20, SPECIES_CACNEA},
+ {22, 22, SPECIES_CACNEA},
+ {22, 22, SPECIES_CACNEA},
+};
+
+const struct WildPokemonInfo gRoute111_LandMonsInfo = {10, gRoute111_LandMons};
+
+const struct WildPokemon gRoute111_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute111_WaterMonsInfo = {4, gRoute111_WaterMons};
+
+const struct WildPokemon gRoute111_RockSmashMons[] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gRoute111_RockSmashMonsInfo = {20, gRoute111_RockSmashMons};
+
+const struct WildPokemon gRoute111_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+
+const struct WildPokemonInfo gRoute111_FishingMonsInfo = {30, gRoute111_FishingMons};
+
+const struct WildPokemon gRoute112_LandMons[] =
+{
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_MARILL},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_NUMEL},
+ {14, 14, SPECIES_MARILL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_MARILL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+ {16, 16, SPECIES_NUMEL},
+};
+
+const struct WildPokemonInfo gRoute112_LandMonsInfo = {20, gRoute112_LandMons};
+
+const struct WildPokemon gRoute113_LandMons[] =
+{
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SPINDA},
+ {15, 15, SPECIES_SLUGMA},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SPINDA},
+ {14, 14, SPECIES_SLUGMA},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SLUGMA},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+ {16, 16, SPECIES_SPINDA},
+ {16, 16, SPECIES_SKARMORY},
+};
+
+const struct WildPokemonInfo gRoute113_LandMonsInfo = {20, gRoute113_LandMons};
+
+const struct WildPokemon gRoute114_LandMons[] =
+{
+ {16, 16, SPECIES_SWABLU},
+ {16, 16, SPECIES_LOTAD},
+ {17, 17, SPECIES_SWABLU},
+ {15, 15, SPECIES_SWABLU},
+ {15, 15, SPECIES_LOTAD},
+ {16, 16, SPECIES_LOMBRE},
+ {16, 16, SPECIES_LOMBRE},
+ {18, 18, SPECIES_LOMBRE},
+ {17, 17, SPECIES_SEVIPER},
+ {15, 15, SPECIES_SEVIPER},
+ {17, 17, SPECIES_SEVIPER},
+ {15, 15, SPECIES_NUZLEAF},
+};
+
+const struct WildPokemonInfo gRoute114_LandMonsInfo = {20, gRoute114_LandMons};
+
+const struct WildPokemon gRoute114_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute114_WaterMonsInfo = {4, gRoute114_WaterMons};
+
+const struct WildPokemon gRoute114_RockSmashMons[] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gRoute114_RockSmashMonsInfo = {20, gRoute114_RockSmashMons};
+
+const struct WildPokemon gRoute114_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+
+const struct WildPokemonInfo gRoute114_FishingMonsInfo = {30, gRoute114_FishingMons};
+
+const struct WildPokemon gRoute116_LandMons[] =
+{
+ {6, 6, SPECIES_POOCHYENA},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_NINCADA},
+ {7, 7, SPECIES_ABRA},
+ {7, 7, SPECIES_NINCADA},
+ {6, 6, SPECIES_TAILLOW},
+ {7, 7, SPECIES_TAILLOW},
+ {8, 8, SPECIES_TAILLOW},
+ {7, 7, SPECIES_POOCHYENA},
+ {8, 8, SPECIES_POOCHYENA},
+ {7, 7, SPECIES_SKITTY},
+ {8, 8, SPECIES_SKITTY},
+};
+
+const struct WildPokemonInfo gRoute116_LandMonsInfo = {20, gRoute116_LandMons};
+
+const struct WildPokemon gRoute117_LandMons[] =
+{
+ {13, 13, SPECIES_POOCHYENA},
+ {13, 13, SPECIES_ODDISH},
+ {14, 14, SPECIES_POOCHYENA},
+ {14, 14, SPECIES_ODDISH},
+ {13, 13, SPECIES_MARILL},
+ {13, 13, SPECIES_ODDISH},
+ {13, 13, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {14, 14, SPECIES_ILLUMISE},
+ {13, 13, SPECIES_VOLBEAT},
+ {13, 13, SPECIES_SEEDOT},
+};
+
+const struct WildPokemonInfo gRoute117_LandMonsInfo = {20, gRoute117_LandMons};
+
+const struct WildPokemon gRoute117_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute117_WaterMonsInfo = {4, gRoute117_WaterMons};
+
+const struct WildPokemon gRoute117_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+
+const struct WildPokemonInfo gRoute117_FishingMonsInfo = {30, gRoute117_FishingMons};
+
+const struct WildPokemon gRoute118_LandMons[] =
+{
+ {24, 24, SPECIES_ZIGZAGOON},
+ {24, 24, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_ZIGZAGOON},
+ {26, 26, SPECIES_ELECTRIKE},
+ {26, 26, SPECIES_LINOONE},
+ {26, 26, SPECIES_MANECTRIC},
+ {25, 25, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+
+const struct WildPokemonInfo gRoute118_LandMonsInfo = {20, gRoute118_LandMons};
+
+const struct WildPokemon gRoute118_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute118_WaterMonsInfo = {4, gRoute118_WaterMons};
+
+const struct WildPokemon gRoute118_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+
+const struct WildPokemonInfo gRoute118_FishingMonsInfo = {30, gRoute118_FishingMons};
+
+const struct WildPokemon gRoute124_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute124_WaterMonsInfo = {4, gRoute124_WaterMons};
+
+const struct WildPokemon gRoute124_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute124_FishingMonsInfo = {30, gRoute124_FishingMons};
+
+const struct WildPokemon gPetalburgWoods_LandMons[] =
+{
+ {5, 5, SPECIES_POOCHYENA},
+ {5, 5, SPECIES_WURMPLE},
+ {5, 5, SPECIES_SHROOMISH},
+ {6, 6, SPECIES_POOCHYENA},
+ {5, 5, SPECIES_SILCOON},
+ {5, 5, SPECIES_CASCOON},
+ {6, 6, SPECIES_WURMPLE},
+ {6, 6, SPECIES_SHROOMISH},
+ {5, 5, SPECIES_TAILLOW},
+ {5, 5, SPECIES_SLAKOTH},
+ {6, 6, SPECIES_TAILLOW},
+ {6, 6, SPECIES_SLAKOTH},
+};
+
+const struct WildPokemonInfo gPetalburgWoods_LandMonsInfo = {20, gPetalburgWoods_LandMons};
+
+const struct WildPokemon gRusturfTunnel_LandMons[] =
+{
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {6, 6, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {7, 7, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+ {5, 5, SPECIES_WHISMUR},
+ {8, 8, SPECIES_WHISMUR},
+};
+
+const struct WildPokemonInfo gRusturfTunnel_LandMonsInfo = {10, gRusturfTunnel_LandMons};
+
+const struct WildPokemon gGraniteCave_1F_LandMons[] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_GEODUDE},
+ {8, 8, SPECIES_GEODUDE},
+ {6, 6, SPECIES_GEODUDE},
+ {9, 9, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gGraniteCave_1F_LandMonsInfo = {10, gGraniteCave_1F_LandMons};
+
+const struct WildPokemon gGraniteCave_B1F_LandMons[] =
+{
+ {9, 9, SPECIES_ZUBAT},
+ {10, 10, SPECIES_ARON},
+ {9, 9, SPECIES_ARON},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ZUBAT},
+ {9, 9, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {11, 11, SPECIES_MAKUHITA},
+ {10, 10, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {9, 9, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+};
+
+const struct WildPokemonInfo gGraniteCave_B1F_LandMonsInfo = {10, gGraniteCave_B1F_LandMons};
+
+const struct WildPokemon gMtPyre_1F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+};
+
+const struct WildPokemonInfo gMtPyre_1F_LandMonsInfo = {10, gMtPyre_1F_LandMons};
+
+const struct WildPokemon gVictoryRoad_1F_LandMons[] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LOUDRED},
+ {36, 36, SPECIES_ZUBAT},
+ {36, 36, SPECIES_MAKUHITA},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+ {36, 36, SPECIES_ARON},
+ {36, 36, SPECIES_WHISMUR},
+};
+
+const struct WildPokemonInfo gVictoryRoad_1F_LandMonsInfo = {10, gVictoryRoad_1F_LandMons};
+
+const struct WildPokemon gSafariZone_South_LandMons[] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+ {25, 25, SPECIES_DODUO},
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+
+const struct WildPokemonInfo gSafariZone_South_LandMonsInfo = {25, gSafariZone_South_LandMons};
+
+const struct WildPokemon gUnderwater2_WaterMons[] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+
+const struct WildPokemonInfo gUnderwater2_WaterMonsInfo = {4, gUnderwater2_WaterMons};
+
+const struct WildPokemon gAbandonedShip_Rooms_B1F_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+
+const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_WaterMonsInfo = {4, gAbandonedShip_Rooms_B1F_WaterMons};
+
+const struct WildPokemon gAbandonedShip_Rooms_B1F_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+
+const struct WildPokemonInfo gAbandonedShip_Rooms_B1F_FishingMonsInfo = {20, gAbandonedShip_Rooms_B1F_FishingMons};
+
+const struct WildPokemon gGraniteCave_B2F_LandMons[] =
+{
+ {10, 10, SPECIES_ZUBAT},
+ {11, 11, SPECIES_ARON},
+ {10, 10, SPECIES_ARON},
+ {11, 11, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ARON},
+ {10, 10, SPECIES_ABRA},
+ {10, 10, SPECIES_SABLEYE},
+ {11, 11, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+ {12, 12, SPECIES_SABLEYE},
+ {10, 10, SPECIES_SABLEYE},
+};
+
+const struct WildPokemonInfo gGraniteCave_B2F_LandMonsInfo = {10, gGraniteCave_B2F_LandMons};
+
+const struct WildPokemon gGraniteCave_B2F_RockSmashMons[] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {10, 20, SPECIES_NOSEPASS},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gGraniteCave_B2F_RockSmashMonsInfo = {20, gGraniteCave_B2F_RockSmashMons};
+
+const struct WildPokemon gFieryPath_LandMons[] =
+{
+ {15, 15, SPECIES_NUMEL},
+ {15, 15, SPECIES_KOFFING},
+ {16, 16, SPECIES_NUMEL},
+ {15, 15, SPECIES_MACHOP},
+ {15, 15, SPECIES_TORKOAL},
+ {15, 15, SPECIES_SLUGMA},
+ {16, 16, SPECIES_KOFFING},
+ {16, 16, SPECIES_MACHOP},
+ {14, 14, SPECIES_TORKOAL},
+ {16, 16, SPECIES_TORKOAL},
+ {14, 14, SPECIES_GRIMER},
+ {14, 14, SPECIES_GRIMER},
+};
+
+const struct WildPokemonInfo gFieryPath_LandMonsInfo = {10, gFieryPath_LandMons};
+
+const struct WildPokemon gMeteorFalls_B1F_2R_LandMons[] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {30, 30, SPECIES_BAGON},
+ {35, 35, SPECIES_SOLROCK},
+ {35, 35, SPECIES_BAGON},
+ {37, 37, SPECIES_SOLROCK},
+ {25, 25, SPECIES_BAGON},
+ {39, 39, SPECIES_SOLROCK},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_2R_LandMonsInfo = {10, gMeteorFalls_B1F_2R_LandMons};
+
+const struct WildPokemon gMeteorFalls_B1F_2R_WaterMons[] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_2R_WaterMonsInfo = {4, gMeteorFalls_B1F_2R_WaterMons};
+
+const struct WildPokemon gMeteorFalls_B1F_2R_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_2R_FishingMonsInfo = {30, gMeteorFalls_B1F_2R_FishingMons};
+
+const struct WildPokemon gJaggedPass_LandMons[] =
+{
+ {21, 21, SPECIES_NUMEL},
+ {21, 21, SPECIES_NUMEL},
+ {21, 21, SPECIES_MACHOP},
+ {20, 20, SPECIES_NUMEL},
+ {20, 20, SPECIES_SPOINK},
+ {20, 20, SPECIES_MACHOP},
+ {21, 21, SPECIES_SPOINK},
+ {22, 22, SPECIES_MACHOP},
+ {22, 22, SPECIES_NUMEL},
+ {22, 22, SPECIES_SPOINK},
+ {22, 22, SPECIES_NUMEL},
+ {22, 22, SPECIES_SPOINK},
+};
+
+const struct WildPokemonInfo gJaggedPass_LandMonsInfo = {20, gJaggedPass_LandMons};
+
+const struct WildPokemon gRoute106_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute106_WaterMonsInfo = {4, gRoute106_WaterMons};
+
+const struct WildPokemon gRoute106_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute106_FishingMonsInfo = {30, gRoute106_FishingMons};
+
+const struct WildPokemon gRoute107_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute107_WaterMonsInfo = {4, gRoute107_WaterMons};
+
+const struct WildPokemon gRoute107_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute107_FishingMonsInfo = {30, gRoute107_FishingMons};
+
+const struct WildPokemon gRoute108_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute108_WaterMonsInfo = {4, gRoute108_WaterMons};
+
+const struct WildPokemon gRoute108_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute108_FishingMonsInfo = {30, gRoute108_FishingMons};
+
+const struct WildPokemon gRoute109_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute109_WaterMonsInfo = {4, gRoute109_WaterMons};
+
+const struct WildPokemon gRoute109_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute109_FishingMonsInfo = {30, gRoute109_FishingMons};
+
+const struct WildPokemon gRoute115_LandMons[] =
+{
+ {23, 23, SPECIES_SWABLU},
+ {23, 23, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWABLU},
+ {24, 24, SPECIES_TAILLOW},
+ {25, 25, SPECIES_TAILLOW},
+ {25, 25, SPECIES_SWELLOW},
+ {24, 24, SPECIES_JIGGLYPUFF},
+ {25, 25, SPECIES_JIGGLYPUFF},
+ {24, 24, SPECIES_WINGULL},
+ {24, 24, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {25, 25, SPECIES_WINGULL},
+};
+
+const struct WildPokemonInfo gRoute115_LandMonsInfo = {20, gRoute115_LandMons};
+
+const struct WildPokemon gRoute115_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute115_WaterMonsInfo = {4, gRoute115_WaterMons};
+
+const struct WildPokemon gRoute115_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute115_FishingMonsInfo = {30, gRoute115_FishingMons};
+
+const struct WildPokemon gNewMauville_Inside_LandMons[] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_ELECTRODE},
+ {26, 26, SPECIES_MAGNETON},
+};
+
+const struct WildPokemonInfo gNewMauville_Inside_LandMonsInfo = {10, gNewMauville_Inside_LandMons};
+
+const struct WildPokemon gRoute119_LandMons[] =
+{
+ {25, 25, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_LINOONE},
+ {27, 27, SPECIES_ZIGZAGOON},
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_LINOONE},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {24, 24, SPECIES_ODDISH},
+ {25, 25, SPECIES_TROPIUS},
+ {26, 26, SPECIES_TROPIUS},
+ {27, 27, SPECIES_TROPIUS},
+ {25, 25, SPECIES_KECLEON},
+};
+
+const struct WildPokemonInfo gRoute119_LandMonsInfo = {15, gRoute119_LandMons};
+
+const struct WildPokemon gRoute119_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute119_WaterMonsInfo = {4, gRoute119_WaterMons};
+
+const struct WildPokemon gRoute119_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_CARVANHA},
+ {25, 30, SPECIES_CARVANHA},
+ {30, 35, SPECIES_CARVANHA},
+ {20, 25, SPECIES_CARVANHA},
+ {35, 40, SPECIES_CARVANHA},
+ {40, 45, SPECIES_CARVANHA},
+};
+
+const struct WildPokemonInfo gRoute119_FishingMonsInfo = {30, gRoute119_FishingMons};
+
+const struct WildPokemon gRoute120_LandMons[] =
+{
+ {25, 25, SPECIES_POOCHYENA},
+ {25, 25, SPECIES_MIGHTYENA},
+ {27, 27, SPECIES_MIGHTYENA},
+ {25, 25, SPECIES_ODDISH},
+ {25, 25, SPECIES_MARILL},
+ {26, 26, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {27, 27, SPECIES_MARILL},
+ {25, 25, SPECIES_ABSOL},
+ {27, 27, SPECIES_ABSOL},
+ {25, 25, SPECIES_KECLEON},
+ {25, 25, SPECIES_SEEDOT},
+};
+
+const struct WildPokemonInfo gRoute120_LandMonsInfo = {20, gRoute120_LandMons};
+
+const struct WildPokemon gRoute120_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {20, 30, SPECIES_GOLDEEN},
+};
+
+const struct WildPokemonInfo gRoute120_WaterMonsInfo = {4, gRoute120_WaterMons};
+
+const struct WildPokemon gRoute120_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+
+const struct WildPokemonInfo gRoute120_FishingMonsInfo = {30, gRoute120_FishingMons};
+
+const struct WildPokemon gRoute121_LandMons[] =
+{
+ {26, 26, SPECIES_POOCHYENA},
+ {26, 26, SPECIES_SHUPPET},
+ {26, 26, SPECIES_MIGHTYENA},
+ {28, 28, SPECIES_SHUPPET},
+ {28, 28, SPECIES_MIGHTYENA},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+
+const struct WildPokemonInfo gRoute121_LandMonsInfo = {20, gRoute121_LandMons};
+
+const struct WildPokemon gRoute121_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute121_WaterMonsInfo = {4, gRoute121_WaterMons};
+
+const struct WildPokemon gRoute121_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute121_FishingMonsInfo = {30, gRoute121_FishingMons};
+
+const struct WildPokemon gRoute122_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute122_WaterMonsInfo = {4, gRoute122_WaterMons};
+
+const struct WildPokemon gRoute122_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute122_FishingMonsInfo = {30, gRoute122_FishingMons};
+
+const struct WildPokemon gRoute123_LandMons[] =
+{
+ {26, 26, SPECIES_POOCHYENA},
+ {26, 26, SPECIES_SHUPPET},
+ {26, 26, SPECIES_MIGHTYENA},
+ {28, 28, SPECIES_SHUPPET},
+ {28, 28, SPECIES_MIGHTYENA},
+ {26, 26, SPECIES_ODDISH},
+ {28, 28, SPECIES_ODDISH},
+ {28, 28, SPECIES_GLOOM},
+ {26, 26, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+ {25, 25, SPECIES_KECLEON},
+};
+
+const struct WildPokemonInfo gRoute123_LandMonsInfo = {20, gRoute123_LandMons};
+
+const struct WildPokemon gRoute123_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute123_WaterMonsInfo = {4, gRoute123_WaterMons};
+
+const struct WildPokemon gRoute123_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute123_FishingMonsInfo = {30, gRoute123_FishingMons};
+
+const struct WildPokemon gMtPyre_2F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+};
+
+const struct WildPokemonInfo gMtPyre_2F_LandMonsInfo = {10, gMtPyre_2F_LandMons};
+
+const struct WildPokemon gMtPyre_3F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+};
+
+const struct WildPokemonInfo gMtPyre_3F_LandMonsInfo = {10, gMtPyre_3F_LandMons};
+
+const struct WildPokemon gMtPyre_4F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+};
+
+const struct WildPokemonInfo gMtPyre_4F_LandMonsInfo = {10, gMtPyre_4F_LandMons};
+
+const struct WildPokemon gMtPyre_5F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+};
+
+const struct WildPokemonInfo gMtPyre_5F_LandMonsInfo = {10, gMtPyre_5F_LandMons};
+
+const struct WildPokemon gMtPyre_6F_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {23, 23, SPECIES_SHUPPET},
+ {22, 22, SPECIES_SHUPPET},
+ {27, 27, SPECIES_DUSKULL},
+ {27, 27, SPECIES_DUSKULL},
+ {25, 25, SPECIES_DUSKULL},
+ {29, 29, SPECIES_DUSKULL},
+};
+
+const struct WildPokemonInfo gMtPyre_6F_LandMonsInfo = {10, gMtPyre_6F_LandMons};
+
+const struct WildPokemon gMtPyre_Exterior_LandMons[] =
+{
+ {27, 27, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {28, 28, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {29, 29, SPECIES_VULPIX},
+ {27, 27, SPECIES_VULPIX},
+ {29, 29, SPECIES_VULPIX},
+ {25, 25, SPECIES_VULPIX},
+ {27, 27, SPECIES_WINGULL},
+ {27, 27, SPECIES_WINGULL},
+ {26, 26, SPECIES_WINGULL},
+ {28, 28, SPECIES_WINGULL},
+};
+
+const struct WildPokemonInfo gMtPyre_Exterior_LandMonsInfo = {10, gMtPyre_Exterior_LandMons};
+
+const struct WildPokemon gMtPyre_Summit_LandMons[] =
+{
+ {28, 28, SPECIES_SHUPPET},
+ {29, 29, SPECIES_SHUPPET},
+ {27, 27, SPECIES_SHUPPET},
+ {26, 26, SPECIES_SHUPPET},
+ {30, 30, SPECIES_SHUPPET},
+ {25, 25, SPECIES_SHUPPET},
+ {24, 24, SPECIES_SHUPPET},
+ {28, 28, SPECIES_DUSKULL},
+ {26, 26, SPECIES_DUSKULL},
+ {30, 30, SPECIES_DUSKULL},
+ {28, 28, SPECIES_CHIMECHO},
+ {28, 28, SPECIES_CHIMECHO},
+};
+
+const struct WildPokemonInfo gMtPyre_Summit_LandMonsInfo = {10, gMtPyre_Summit_LandMons};
+
+const struct WildPokemon gGraniteCave_StevensRoom_LandMons[] =
+{
+ {7, 7, SPECIES_ZUBAT},
+ {8, 8, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ZUBAT},
+ {9, 9, SPECIES_MAKUHITA},
+ {8, 8, SPECIES_ABRA},
+ {10, 10, SPECIES_MAKUHITA},
+ {6, 6, SPECIES_MAKUHITA},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+ {7, 7, SPECIES_ARON},
+ {8, 8, SPECIES_ARON},
+};
+
+const struct WildPokemonInfo gGraniteCave_StevensRoom_LandMonsInfo = {10, gGraniteCave_StevensRoom_LandMons};
+
+const struct WildPokemon gRoute125_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute125_WaterMonsInfo = {4, gRoute125_WaterMons};
+
+const struct WildPokemon gRoute125_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute125_FishingMonsInfo = {30, gRoute125_FishingMons};
+
+const struct WildPokemon gRoute126_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute126_WaterMonsInfo = {4, gRoute126_WaterMons};
+
+const struct WildPokemon gRoute126_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute126_FishingMonsInfo = {30, gRoute126_FishingMons};
+
+const struct WildPokemon gRoute127_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute127_WaterMonsInfo = {4, gRoute127_WaterMons};
+
+const struct WildPokemon gRoute127_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute127_FishingMonsInfo = {30, gRoute127_FishingMons};
+
+const struct WildPokemon gRoute128_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute128_WaterMonsInfo = {4, gRoute128_WaterMons};
+
+const struct WildPokemon gRoute128_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute128_FishingMonsInfo = {30, gRoute128_FishingMons};
+
+const struct WildPokemon gRoute129_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_WAILORD},
+};
+
+const struct WildPokemonInfo gRoute129_WaterMonsInfo = {4, gRoute129_WaterMons};
+
+const struct WildPokemon gRoute129_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute129_FishingMonsInfo = {30, gRoute129_FishingMons};
+
+const struct WildPokemon gRoute130_LandMons[] =
+{
+ {30, 30, SPECIES_WYNAUT},
+ {35, 35, SPECIES_WYNAUT},
+ {25, 25, SPECIES_WYNAUT},
+ {40, 40, SPECIES_WYNAUT},
+ {20, 20, SPECIES_WYNAUT},
+ {45, 45, SPECIES_WYNAUT},
+ {15, 15, SPECIES_WYNAUT},
+ {50, 50, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+ {10, 10, SPECIES_WYNAUT},
+ {5, 5, SPECIES_WYNAUT},
+};
+
+const struct WildPokemonInfo gRoute130_LandMonsInfo = {20, gRoute130_LandMons};
+
+const struct WildPokemon gRoute130_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute130_WaterMonsInfo = {4, gRoute130_WaterMons};
+
+const struct WildPokemon gRoute130_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute130_FishingMonsInfo = {30, gRoute130_FishingMons};
+
+const struct WildPokemon gRoute131_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute131_WaterMonsInfo = {4, gRoute131_WaterMons};
+
+const struct WildPokemon gRoute131_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute131_FishingMonsInfo = {30, gRoute131_FishingMons};
+
+const struct WildPokemon gRoute132_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute132_WaterMonsInfo = {4, gRoute132_WaterMons};
+
+const struct WildPokemon gRoute132_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute132_FishingMonsInfo = {30, gRoute132_FishingMons};
+
+const struct WildPokemon gRoute133_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute133_WaterMonsInfo = {4, gRoute133_WaterMons};
+
+const struct WildPokemon gRoute133_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute133_FishingMonsInfo = {30, gRoute133_FishingMons};
+
+const struct WildPokemon gRoute134_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gRoute134_WaterMonsInfo = {4, gRoute134_WaterMons};
+
+const struct WildPokemon gRoute134_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_HORSEA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gRoute134_FishingMonsInfo = {30, gRoute134_FishingMons};
+
+const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+};
+
+const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo = {4, gAbandonedShip_HiddenFloorCorridors_WaterMons};
+
+const struct WildPokemon gAbandonedShip_HiddenFloorCorridors_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_TENTACOOL},
+ {25, 30, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACOOL},
+ {30, 35, SPECIES_TENTACRUEL},
+ {25, 30, SPECIES_TENTACRUEL},
+ {20, 25, SPECIES_TENTACRUEL},
+};
+
+const struct WildPokemonInfo gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo = {20, gAbandonedShip_HiddenFloorCorridors_FishingMons};
+
+const struct WildPokemon gSeafloorCavern_Room1_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room1_LandMonsInfo = {4, gSeafloorCavern_Room1_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room2_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room2_LandMonsInfo = {4, gSeafloorCavern_Room2_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room3_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room3_LandMonsInfo = {4, gSeafloorCavern_Room3_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room4_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room4_LandMonsInfo = {4, gSeafloorCavern_Room4_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room5_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room5_LandMonsInfo = {4, gSeafloorCavern_Room5_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room6_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room6_LandMonsInfo = {4, gSeafloorCavern_Room6_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room6_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room6_WaterMonsInfo = {4, gSeafloorCavern_Room6_WaterMons};
+
+const struct WildPokemon gSeafloorCavern_Room6_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room6_FishingMonsInfo = {10, gSeafloorCavern_Room6_FishingMons};
+
+const struct WildPokemon gSeafloorCavern_Room7_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room7_LandMonsInfo = {4, gSeafloorCavern_Room7_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Room7_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room7_WaterMonsInfo = {4, gSeafloorCavern_Room7_WaterMons};
+
+const struct WildPokemon gSeafloorCavern_Room7_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room7_FishingMonsInfo = {10, gSeafloorCavern_Room7_FishingMons};
+
+const struct WildPokemon gSeafloorCavern_Room8_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Room8_LandMonsInfo = {4, gSeafloorCavern_Room8_LandMons};
+
+const struct WildPokemon gSeafloorCavern_Entrance_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Entrance_WaterMonsInfo = {4, gSeafloorCavern_Entrance_WaterMons};
+
+const struct WildPokemon gSeafloorCavern_Entrance_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gSeafloorCavern_Entrance_FishingMonsInfo = {10, gSeafloorCavern_Entrance_FishingMons};
+
+const struct WildPokemon gCaveOfOrigin_Entrance_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {33, 33, SPECIES_ZUBAT},
+ {28, 28, SPECIES_ZUBAT},
+ {29, 29, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {35, 35, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_Entrance_LandMonsInfo = {4, gCaveOfOrigin_Entrance_LandMons};
+
+const struct WildPokemon gCaveOfOrigin_1F_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_1F_LandMonsInfo = {4, gCaveOfOrigin_1F_LandMons};
+
+const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap1_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap1_LandMons};
+
+const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap2_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap2_LandMons};
+
+const struct WildPokemon gCaveOfOrigin_UnusedRubySapphireMap3_LandMons[] =
+{
+ {30, 30, SPECIES_ZUBAT},
+ {31, 31, SPECIES_ZUBAT},
+ {32, 32, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SABLEYE},
+ {32, 32, SPECIES_SABLEYE},
+ {34, 34, SPECIES_SABLEYE},
+ {33, 33, SPECIES_ZUBAT},
+ {34, 34, SPECIES_ZUBAT},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {36, 36, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo = {4, gCaveOfOrigin_UnusedRubySapphireMap3_LandMons};
+
+const struct WildPokemon gNewMauville_Entrance_LandMons[] =
+{
+ {24, 24, SPECIES_VOLTORB},
+ {24, 24, SPECIES_MAGNEMITE},
+ {25, 25, SPECIES_VOLTORB},
+ {25, 25, SPECIES_MAGNEMITE},
+ {23, 23, SPECIES_VOLTORB},
+ {23, 23, SPECIES_MAGNEMITE},
+ {26, 26, SPECIES_VOLTORB},
+ {26, 26, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+ {22, 22, SPECIES_VOLTORB},
+ {22, 22, SPECIES_MAGNEMITE},
+};
+
+const struct WildPokemonInfo gNewMauville_Entrance_LandMonsInfo = {10, gNewMauville_Entrance_LandMons};
+
+const struct WildPokemon gSafariZone_Southwest_LandMons[] =
+{
+ {25, 25, SPECIES_ODDISH},
+ {27, 27, SPECIES_ODDISH},
+ {25, 25, SPECIES_GIRAFARIG},
+ {27, 27, SPECIES_GIRAFARIG},
+ {25, 25, SPECIES_NATU},
+ {27, 27, SPECIES_DODUO},
+ {25, 25, SPECIES_GLOOM},
+ {27, 27, SPECIES_WOBBUFFET},
+ {25, 25, SPECIES_PIKACHU},
+ {27, 27, SPECIES_WOBBUFFET},
+ {27, 27, SPECIES_PIKACHU},
+ {29, 29, SPECIES_WOBBUFFET},
+};
+
+const struct WildPokemonInfo gSafariZone_Southwest_LandMonsInfo = {25, gSafariZone_Southwest_LandMons};
+
+const struct WildPokemon gSafariZone_Southwest_WaterMons[] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+};
+
+const struct WildPokemonInfo gSafariZone_Southwest_WaterMonsInfo = {9, gSafariZone_Southwest_WaterMons};
+
+const struct WildPokemon gSafariZone_Southwest_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+
+const struct WildPokemonInfo gSafariZone_Southwest_FishingMonsInfo = {35, gSafariZone_Southwest_FishingMons};
+
+const struct WildPokemon gSafariZone_North_LandMons[] =
+{
+ {27, 27, SPECIES_PHANPY},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_PHANPY},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_NATU},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_NATU},
+ {29, 29, SPECIES_XATU},
+ {27, 27, SPECIES_HERACROSS},
+ {31, 31, SPECIES_XATU},
+ {29, 29, SPECIES_HERACROSS},
+};
+
+const struct WildPokemonInfo gSafariZone_North_LandMonsInfo = {25, gSafariZone_North_LandMons};
+
+const struct WildPokemon gSafariZone_North_RockSmashMons[] =
+{
+ {10, 15, SPECIES_GEODUDE},
+ {5, 10, SPECIES_GEODUDE},
+ {15, 20, SPECIES_GEODUDE},
+ {20, 25, SPECIES_GEODUDE},
+ {25, 30, SPECIES_GEODUDE},
+};
+
+const struct WildPokemonInfo gSafariZone_North_RockSmashMonsInfo = {25, gSafariZone_North_RockSmashMons};
+
+const struct WildPokemon gSafariZone_Northwest_LandMons[] =
+{
+ {27, 27, SPECIES_RHYHORN},
+ {27, 27, SPECIES_ODDISH},
+ {29, 29, SPECIES_RHYHORN},
+ {29, 29, SPECIES_ODDISH},
+ {27, 27, SPECIES_DODUO},
+ {29, 29, SPECIES_GLOOM},
+ {31, 31, SPECIES_GLOOM},
+ {29, 29, SPECIES_DODUO},
+ {29, 29, SPECIES_DODRIO},
+ {27, 27, SPECIES_PINSIR},
+ {31, 31, SPECIES_DODRIO},
+ {29, 29, SPECIES_PINSIR},
+};
+
+const struct WildPokemonInfo gSafariZone_Northwest_LandMonsInfo = {25, gSafariZone_Northwest_LandMons};
+
+const struct WildPokemon gSafariZone_Northwest_WaterMons[] =
+{
+ {20, 30, SPECIES_PSYDUCK},
+ {20, 30, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_PSYDUCK},
+ {30, 35, SPECIES_GOLDUCK},
+ {25, 40, SPECIES_GOLDUCK},
+};
+
+const struct WildPokemonInfo gSafariZone_Northwest_WaterMonsInfo = {9, gSafariZone_Northwest_WaterMons};
+
+const struct WildPokemon gSafariZone_Northwest_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 25, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_SEAKING},
+ {35, 40, SPECIES_SEAKING},
+ {25, 30, SPECIES_SEAKING},
+};
+
+const struct WildPokemonInfo gSafariZone_Northwest_FishingMonsInfo = {35, gSafariZone_Northwest_FishingMons};
+
+const struct WildPokemon gVictoryRoad_B1F_LandMons[] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_HARIYAMA},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LAIRON},
+ {38, 38, SPECIES_GOLBAT},
+ {38, 38, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_GOLBAT},
+ {42, 42, SPECIES_HARIYAMA},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MAWILE},
+ {42, 42, SPECIES_LAIRON},
+ {38, 38, SPECIES_MAWILE},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B1F_LandMonsInfo = {10, gVictoryRoad_B1F_LandMons};
+
+const struct WildPokemon gVictoryRoad_B1F_RockSmashMons[] =
+{
+ {30, 40, SPECIES_GRAVELER},
+ {30, 40, SPECIES_GEODUDE},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+ {35, 40, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B1F_RockSmashMonsInfo = {20, gVictoryRoad_B1F_RockSmashMons};
+
+const struct WildPokemon gVictoryRoad_B2F_LandMons[] =
+{
+ {40, 40, SPECIES_GOLBAT},
+ {40, 40, SPECIES_SABLEYE},
+ {40, 40, SPECIES_LAIRON},
+ {40, 40, SPECIES_LAIRON},
+ {42, 42, SPECIES_GOLBAT},
+ {42, 42, SPECIES_SABLEYE},
+ {44, 44, SPECIES_GOLBAT},
+ {44, 44, SPECIES_SABLEYE},
+ {42, 42, SPECIES_LAIRON},
+ {42, 42, SPECIES_MAWILE},
+ {44, 44, SPECIES_LAIRON},
+ {44, 44, SPECIES_MAWILE},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B2F_LandMonsInfo = {10, gVictoryRoad_B2F_LandMons};
+
+const struct WildPokemon gVictoryRoad_B2F_WaterMons[] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {25, 30, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+ {35, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B2F_WaterMonsInfo = {4, gVictoryRoad_B2F_WaterMons};
+
+const struct WildPokemon gVictoryRoad_B2F_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+
+const struct WildPokemonInfo gVictoryRoad_B2F_FishingMonsInfo = {30, gVictoryRoad_B2F_FishingMons};
+
+const struct WildPokemon gMeteorFalls_1F_1R_LandMons[] =
+{
+ {16, 16, SPECIES_ZUBAT},
+ {17, 17, SPECIES_ZUBAT},
+ {18, 18, SPECIES_ZUBAT},
+ {15, 15, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+ {16, 16, SPECIES_SOLROCK},
+ {18, 18, SPECIES_SOLROCK},
+ {14, 14, SPECIES_SOLROCK},
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+ {19, 19, SPECIES_ZUBAT},
+ {20, 20, SPECIES_ZUBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_1R_LandMonsInfo = {10, gMeteorFalls_1F_1R_LandMons};
+
+const struct WildPokemon gMeteorFalls_1F_1R_WaterMons[] =
+{
+ {5, 35, SPECIES_ZUBAT},
+ {30, 35, SPECIES_ZUBAT},
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_1R_WaterMonsInfo = {4, gMeteorFalls_1F_1R_WaterMons};
+
+const struct WildPokemon gMeteorFalls_1F_1R_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {20, 25, SPECIES_BARBOACH},
+ {35, 40, SPECIES_BARBOACH},
+ {40, 45, SPECIES_BARBOACH},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_1R_FishingMonsInfo = {30, gMeteorFalls_1F_1R_FishingMons};
+
+const struct WildPokemon gMeteorFalls_1F_2R_LandMons[] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+ {35, 35, SPECIES_GOLBAT},
+ {39, 39, SPECIES_SOLROCK},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_2R_LandMonsInfo = {10, gMeteorFalls_1F_2R_LandMons};
+
+const struct WildPokemon gMeteorFalls_1F_2R_WaterMons[] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_2R_WaterMonsInfo = {4, gMeteorFalls_1F_2R_WaterMons};
+
+const struct WildPokemon gMeteorFalls_1F_2R_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+
+const struct WildPokemonInfo gMeteorFalls_1F_2R_FishingMonsInfo = {30, gMeteorFalls_1F_2R_FishingMons};
+
+const struct WildPokemon gMeteorFalls_B1F_1R_LandMons[] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+ {35, 35, SPECIES_GOLBAT},
+ {39, 39, SPECIES_SOLROCK},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_1R_LandMonsInfo = {10, gMeteorFalls_B1F_1R_LandMons};
+
+const struct WildPokemon gMeteorFalls_B1F_1R_WaterMons[] =
+{
+ {30, 35, SPECIES_GOLBAT},
+ {30, 35, SPECIES_GOLBAT},
+ {25, 35, SPECIES_SOLROCK},
+ {15, 25, SPECIES_SOLROCK},
+ {5, 15, SPECIES_SOLROCK},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_1R_WaterMonsInfo = {4, gMeteorFalls_B1F_1R_WaterMons};
+
+const struct WildPokemon gMeteorFalls_B1F_1R_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_BARBOACH},
+ {25, 30, SPECIES_BARBOACH},
+ {30, 35, SPECIES_BARBOACH},
+ {30, 35, SPECIES_WHISCASH},
+ {35, 40, SPECIES_WHISCASH},
+ {40, 45, SPECIES_WHISCASH},
+};
+
+const struct WildPokemonInfo gMeteorFalls_B1F_1R_FishingMonsInfo = {30, gMeteorFalls_B1F_1R_FishingMons};
+
+const struct WildPokemon gShoalCave_LowTideStairsRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideStairsRoom_LandMonsInfo = {10, gShoalCave_LowTideStairsRoom_LandMons};
+
+const struct WildPokemon gShoalCave_LowTideLowerRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideLowerRoom_LandMonsInfo = {10, gShoalCave_LowTideLowerRoom_LandMons};
+
+const struct WildPokemon gShoalCave_LowTideInnerRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_LandMonsInfo = {10, gShoalCave_LowTideInnerRoom_LandMons};
+
+const struct WildPokemon gShoalCave_LowTideInnerRoom_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_WaterMonsInfo = {4, gShoalCave_LowTideInnerRoom_WaterMons};
+
+const struct WildPokemon gShoalCave_LowTideInnerRoom_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideInnerRoom_FishingMonsInfo = {10, gShoalCave_LowTideInnerRoom_FishingMons};
+
+const struct WildPokemon gShoalCave_LowTideEntranceRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {32, 32, SPECIES_ZUBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+ {32, 32, SPECIES_GOLBAT},
+ {32, 32, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_LandMonsInfo = {10, gShoalCave_LowTideEntranceRoom_LandMons};
+
+const struct WildPokemon gShoalCave_LowTideEntranceRoom_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {5, 35, SPECIES_ZUBAT},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 30, SPECIES_SPHEAL},
+ {25, 35, SPECIES_SPHEAL},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_WaterMonsInfo = {4, gShoalCave_LowTideEntranceRoom_WaterMons};
+
+const struct WildPokemon gShoalCave_LowTideEntranceRoom_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideEntranceRoom_FishingMonsInfo = {10, gShoalCave_LowTideEntranceRoom_FishingMons};
+
+const struct WildPokemon gLilycoveCity_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gLilycoveCity_WaterMonsInfo = {4, gLilycoveCity_WaterMons};
+
+const struct WildPokemon gLilycoveCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_STARYU},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gLilycoveCity_FishingMonsInfo = {10, gLilycoveCity_FishingMons};
+
+const struct WildPokemon gDewfordTown_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gDewfordTown_WaterMonsInfo = {4, gDewfordTown_WaterMons};
+
+const struct WildPokemon gDewfordTown_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gDewfordTown_FishingMonsInfo = {10, gDewfordTown_FishingMons};
+
+const struct WildPokemon gSlateportCity_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gSlateportCity_WaterMonsInfo = {4, gSlateportCity_WaterMons};
+
+const struct WildPokemon gSlateportCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_WAILMER},
+ {20, 25, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gSlateportCity_FishingMonsInfo = {10, gSlateportCity_FishingMons};
+
+const struct WildPokemon gMossdeepCity_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gMossdeepCity_WaterMonsInfo = {4, gMossdeepCity_WaterMons};
+
+const struct WildPokemon gMossdeepCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gMossdeepCity_FishingMonsInfo = {10, gMossdeepCity_FishingMons};
+
+const struct WildPokemon gPacifidlogTown_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gPacifidlogTown_WaterMonsInfo = {4, gPacifidlogTown_WaterMons};
+
+const struct WildPokemon gPacifidlogTown_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_SHARPEDO},
+ {30, 35, SPECIES_WAILMER},
+ {25, 30, SPECIES_WAILMER},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gPacifidlogTown_FishingMonsInfo = {10, gPacifidlogTown_FishingMons};
+
+const struct WildPokemon gEverGrandeCity_WaterMons[] =
+{
+ {5, 35, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_WINGULL},
+ {15, 25, SPECIES_WINGULL},
+ {25, 30, SPECIES_PELIPPER},
+ {25, 30, SPECIES_PELIPPER},
+};
+
+const struct WildPokemonInfo gEverGrandeCity_WaterMonsInfo = {4, gEverGrandeCity_WaterMons};
+
+const struct WildPokemon gEverGrandeCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_LUVDISC},
+ {10, 30, SPECIES_WAILMER},
+ {30, 35, SPECIES_LUVDISC},
+ {30, 35, SPECIES_WAILMER},
+ {30, 35, SPECIES_CORSOLA},
+ {35, 40, SPECIES_WAILMER},
+ {40, 45, SPECIES_WAILMER},
+};
+
+const struct WildPokemonInfo gEverGrandeCity_FishingMonsInfo = {10, gEverGrandeCity_FishingMons};
+
+const struct WildPokemon gPetalburgCity_WaterMons[] =
+{
+ {20, 30, SPECIES_MARILL},
+ {10, 20, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+ {5, 10, SPECIES_MARILL},
+};
+
+const struct WildPokemonInfo gPetalburgCity_WaterMonsInfo = {1, gPetalburgCity_WaterMons};
+
+const struct WildPokemon gPetalburgCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_GOLDEEN},
+ {10, 30, SPECIES_CORPHISH},
+ {25, 30, SPECIES_CORPHISH},
+ {30, 35, SPECIES_CORPHISH},
+ {20, 25, SPECIES_CORPHISH},
+ {35, 40, SPECIES_CORPHISH},
+ {40, 45, SPECIES_CORPHISH},
+};
+
+const struct WildPokemonInfo gPetalburgCity_FishingMonsInfo = {10, gPetalburgCity_FishingMons};
+
+const struct WildPokemon gUnderwater1_WaterMons[] =
+{
+ {20, 30, SPECIES_CLAMPERL},
+ {20, 30, SPECIES_CHINCHOU},
+ {30, 35, SPECIES_CLAMPERL},
+ {30, 35, SPECIES_RELICANTH},
+ {30, 35, SPECIES_RELICANTH},
+};
+
+const struct WildPokemonInfo gUnderwater1_WaterMonsInfo = {4, gUnderwater1_WaterMons};
+
+const struct WildPokemon gShoalCave_LowTideIceRoom_LandMons[] =
+{
+ {26, 26, SPECIES_ZUBAT},
+ {26, 26, SPECIES_SPHEAL},
+ {28, 28, SPECIES_ZUBAT},
+ {28, 28, SPECIES_SPHEAL},
+ {30, 30, SPECIES_ZUBAT},
+ {30, 30, SPECIES_SPHEAL},
+ {26, 26, SPECIES_SNORUNT},
+ {32, 32, SPECIES_SPHEAL},
+ {30, 30, SPECIES_GOLBAT},
+ {28, 28, SPECIES_SNORUNT},
+ {32, 32, SPECIES_GOLBAT},
+ {30, 30, SPECIES_SNORUNT},
+};
+
+const struct WildPokemonInfo gShoalCave_LowTideIceRoom_LandMonsInfo = {10, gShoalCave_LowTideIceRoom_LandMons};
+
+const struct WildPokemon gSkyPillar_1F_LandMons[] =
+{
+ {33, 33, SPECIES_SABLEYE},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {34, 34, SPECIES_SABLEYE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_BANETTE},
+ {38, 38, SPECIES_BANETTE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_CLAYDOL},
+};
+
+const struct WildPokemonInfo gSkyPillar_1F_LandMonsInfo = {10, gSkyPillar_1F_LandMons};
+
+const struct WildPokemon gSootopolisCity_WaterMons[] =
+{
+ {5, 35, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {15, 25, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_MAGIKARP},
+};
+
+const struct WildPokemonInfo gSootopolisCity_WaterMonsInfo = {1, gSootopolisCity_WaterMons};
+
+const struct WildPokemon gSootopolisCity_FishingMons[] =
+{
+ {5, 10, SPECIES_MAGIKARP},
+ {5, 10, SPECIES_TENTACOOL},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {10, 30, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {30, 35, SPECIES_MAGIKARP},
+ {35, 40, SPECIES_GYARADOS},
+ {35, 45, SPECIES_GYARADOS},
+ {5, 45, SPECIES_GYARADOS},
+};
+
+const struct WildPokemonInfo gSootopolisCity_FishingMonsInfo = {10, gSootopolisCity_FishingMons};
+
+const struct WildPokemon gSkyPillar_3F_LandMons[] =
+{
+ {33, 33, SPECIES_SABLEYE},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {34, 34, SPECIES_SABLEYE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_BANETTE},
+ {38, 38, SPECIES_BANETTE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_CLAYDOL},
+};
+
+const struct WildPokemonInfo gSkyPillar_3F_LandMonsInfo = {10, gSkyPillar_3F_LandMons};
+
+const struct WildPokemon gSkyPillar_5F_LandMons[] =
+{
+ {33, 33, SPECIES_SABLEYE},
+ {34, 34, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {34, 34, SPECIES_SABLEYE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_BANETTE},
+ {38, 38, SPECIES_BANETTE},
+ {36, 36, SPECIES_CLAYDOL},
+ {37, 37, SPECIES_CLAYDOL},
+ {38, 38, SPECIES_ALTARIA},
+ {39, 39, SPECIES_ALTARIA},
+ {39, 39, SPECIES_ALTARIA},
+};
+
+const struct WildPokemonInfo gSkyPillar_5F_LandMonsInfo = {10, gSkyPillar_5F_LandMons};
+
+const struct WildPokemon gSafariZone_Southeast_LandMons[] =
+{
+ {33, 33, SPECIES_SUNKERN},
+ {34, 34, SPECIES_MAREEP},
+ {35, 35, SPECIES_SUNKERN},
+ {36, 36, SPECIES_MAREEP},
+ {34, 34, SPECIES_AIPOM},
+ {33, 33, SPECIES_SPINARAK},
+ {35, 35, SPECIES_HOOTHOOT},
+ {34, 34, SPECIES_SNUBBULL},
+ {36, 36, SPECIES_STANTLER},
+ {37, 37, SPECIES_GLIGAR},
+ {39, 39, SPECIES_STANTLER},
+ {40, 40, SPECIES_GLIGAR},
+};
+
+const struct WildPokemonInfo gSafariZone_Southeast_LandMonsInfo = {25, gSafariZone_Southeast_LandMons};
+
+const struct WildPokemon gSafariZone_Southeast_WaterMons[] =
+{
+ {25, 30, SPECIES_WOOPER},
+ {25, 30, SPECIES_MARILL},
+ {25, 30, SPECIES_MARILL},
+ {30, 35, SPECIES_MARILL},
+ {35, 40, SPECIES_QUAGSIRE},
+};
+
+const struct WildPokemonInfo gSafariZone_Southeast_WaterMonsInfo = {9, gSafariZone_Southeast_WaterMons};
+
+const struct WildPokemon gSafariZone_Southeast_FishingMons[] =
+{
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_MAGIKARP},
+ {25, 30, SPECIES_GOLDEEN},
+ {30, 35, SPECIES_REMORAID},
+ {25, 30, SPECIES_GOLDEEN},
+ {25, 30, SPECIES_REMORAID},
+ {30, 35, SPECIES_REMORAID},
+ {30, 35, SPECIES_REMORAID},
+ {35, 40, SPECIES_OCTILLERY},
+};
+
+const struct WildPokemonInfo gSafariZone_Southeast_FishingMonsInfo = {35, gSafariZone_Southeast_FishingMons};
+
+const struct WildPokemon gSafariZone_Northeast_LandMons[] =
+{
+ {33, 33, SPECIES_AIPOM},
+ {34, 34, SPECIES_TEDDIURSA},
+ {35, 35, SPECIES_AIPOM},
+ {36, 36, SPECIES_TEDDIURSA},
+ {34, 34, SPECIES_SUNKERN},
+ {33, 33, SPECIES_LEDYBA},
+ {35, 35, SPECIES_HOOTHOOT},
+ {34, 34, SPECIES_PINECO},
+ {36, 36, SPECIES_HOUNDOUR},
+ {37, 37, SPECIES_MILTANK},
+ {39, 39, SPECIES_HOUNDOUR},
+ {40, 40, SPECIES_MILTANK},
+};
+
+const struct WildPokemonInfo gSafariZone_Northeast_LandMonsInfo = {25, gSafariZone_Northeast_LandMons};
+
+const struct WildPokemon gSafariZone_Northeast_RockSmashMons[] =
+{
+ {25, 30, SPECIES_SHUCKLE},
+ {20, 25, SPECIES_SHUCKLE},
+ {30, 35, SPECIES_SHUCKLE},
+ {30, 35, SPECIES_SHUCKLE},
+ {35, 40, SPECIES_SHUCKLE},
+};
+
+const struct WildPokemonInfo gSafariZone_Northeast_RockSmashMonsInfo = {25, gSafariZone_Northeast_RockSmashMons};
+
+const struct WildPokemon gMagmaHideout_1F_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_1F_LandMonsInfo = {10, gMagmaHideout_1F_LandMons};
+
+const struct WildPokemon gMagmaHideout_2F_1R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_2F_1R_LandMonsInfo = {10, gMagmaHideout_2F_1R_LandMons};
+
+const struct WildPokemon gMagmaHideout_2F_2R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_2F_2R_LandMonsInfo = {10, gMagmaHideout_2F_2R_LandMons};
+
+const struct WildPokemon gMagmaHideout_3F_1R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_3F_1R_LandMonsInfo = {10, gMagmaHideout_3F_1R_LandMons};
+
+const struct WildPokemon gMagmaHideout_3F_2R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_3F_2R_LandMonsInfo = {10, gMagmaHideout_3F_2R_LandMons};
+
+const struct WildPokemon gMagmaHideout_4F_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_4F_LandMonsInfo = {10, gMagmaHideout_4F_LandMons};
+
+const struct WildPokemon gMagmaHideout_3F_3R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_3F_3R_LandMonsInfo = {10, gMagmaHideout_3F_3R_LandMons};
+
+const struct WildPokemon gMagmaHideout_2F_3R_LandMons[] =
+{
+ {27, 27, SPECIES_GEODUDE},
+ {28, 28, SPECIES_TORKOAL},
+ {28, 28, SPECIES_GEODUDE},
+ {30, 30, SPECIES_TORKOAL},
+ {29, 29, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GEODUDE},
+ {30, 30, SPECIES_GRAVELER},
+ {30, 30, SPECIES_GRAVELER},
+ {31, 31, SPECIES_GRAVELER},
+ {32, 32, SPECIES_GRAVELER},
+ {33, 33, SPECIES_GRAVELER},
+};
+
+const struct WildPokemonInfo gMagmaHideout_2F_3R_LandMonsInfo = {10, gMagmaHideout_2F_3R_LandMons};
+
+const struct WildPokemon gMirageTower_1F_LandMons[] =
+{
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {22, 22, SPECIES_SANDSHREW},
+ {22, 22, SPECIES_TRAPINCH},
+ {23, 23, SPECIES_SANDSHREW},
+ {23, 23, SPECIES_TRAPINCH},
+ {24, 24, SPECIES_SANDSHREW},
+ {24, 24, SPECIES_TRAPINCH},
+};
+
+const struct WildPokemonInfo gMirageTower_1F_LandMonsInfo = {10, gMirageTower_1F_LandMons};
+
+const struct WildPokemon gMirageTower_2F_LandMons[] =
+{
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {22, 22, SPECIES_SANDSHREW},
+ {22, 22, SPECIES_TRAPINCH},
+ {23, 23, SPECIES_SANDSHREW},
+ {23, 23, SPECIES_TRAPINCH},
+ {24, 24, SPECIES_SANDSHREW},
+ {24, 24, SPECIES_TRAPINCH},
+};
+
+const struct WildPokemonInfo gMirageTower_2F_LandMonsInfo = {10, gMirageTower_2F_LandMons};
+
+const struct WildPokemon gMirageTower_3F_LandMons[] =
+{
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {22, 22, SPECIES_SANDSHREW},
+ {22, 22, SPECIES_TRAPINCH},
+ {23, 23, SPECIES_SANDSHREW},
+ {23, 23, SPECIES_TRAPINCH},
+ {24, 24, SPECIES_SANDSHREW},
+ {24, 24, SPECIES_TRAPINCH},
+};
+
+const struct WildPokemonInfo gMirageTower_3F_LandMonsInfo = {10, gMirageTower_3F_LandMons};
+
+const struct WildPokemon gMirageTower_4F_LandMons[] =
+{
+ {21, 21, SPECIES_SANDSHREW},
+ {21, 21, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {20, 20, SPECIES_SANDSHREW},
+ {20, 20, SPECIES_TRAPINCH},
+ {22, 22, SPECIES_SANDSHREW},
+ {22, 22, SPECIES_TRAPINCH},
+ {23, 23, SPECIES_SANDSHREW},
+ {23, 23, SPECIES_TRAPINCH},
+ {24, 24, SPECIES_SANDSHREW},
+ {24, 24, SPECIES_TRAPINCH},
+};
+
+const struct WildPokemonInfo gMirageTower_4F_LandMonsInfo = {10, gMirageTower_4F_LandMons};
+
+const struct WildPokemon gDesertUnderpass_LandMons[] =
+{
+ {38, 38, SPECIES_DITTO},
+ {35, 35, SPECIES_WHISMUR},
+ {40, 40, SPECIES_DITTO},
+ {40, 40, SPECIES_LOUDRED},
+ {41, 41, SPECIES_DITTO},
+ {36, 36, SPECIES_WHISMUR},
+ {38, 38, SPECIES_LOUDRED},
+ {42, 42, SPECIES_DITTO},
+ {38, 38, SPECIES_WHISMUR},
+ {43, 43, SPECIES_DITTO},
+ {44, 44, SPECIES_LOUDRED},
+ {45, 45, SPECIES_DITTO},
+};
+
+const struct WildPokemonInfo gDesertUnderpass_LandMonsInfo = {10, gDesertUnderpass_LandMons};
+
+const struct WildPokemon gArtisanCave_B1F_LandMons[] =
+{
+ {40, 40, SPECIES_SMEARGLE},
+ {41, 41, SPECIES_SMEARGLE},
+ {42, 42, SPECIES_SMEARGLE},
+ {43, 43, SPECIES_SMEARGLE},
+ {44, 44, SPECIES_SMEARGLE},
+ {45, 45, SPECIES_SMEARGLE},
+ {46, 46, SPECIES_SMEARGLE},
+ {47, 47, SPECIES_SMEARGLE},
+ {48, 48, SPECIES_SMEARGLE},
+ {49, 49, SPECIES_SMEARGLE},
+ {50, 50, SPECIES_SMEARGLE},
+ {50, 50, SPECIES_SMEARGLE},
+};
+
+const struct WildPokemonInfo gArtisanCave_B1F_LandMonsInfo = {10, gArtisanCave_B1F_LandMons};
+
+const struct WildPokemon gArtisanCave_1F_LandMons[] =
+{
+ {40, 40, SPECIES_SMEARGLE},
+ {41, 41, SPECIES_SMEARGLE},
+ {42, 42, SPECIES_SMEARGLE},
+ {43, 43, SPECIES_SMEARGLE},
+ {44, 44, SPECIES_SMEARGLE},
+ {45, 45, SPECIES_SMEARGLE},
+ {46, 46, SPECIES_SMEARGLE},
+ {47, 47, SPECIES_SMEARGLE},
+ {48, 48, SPECIES_SMEARGLE},
+ {49, 49, SPECIES_SMEARGLE},
+ {50, 50, SPECIES_SMEARGLE},
+ {50, 50, SPECIES_SMEARGLE},
+};
+
+const struct WildPokemonInfo gArtisanCave_1F_LandMonsInfo = {10, gArtisanCave_1F_LandMons};
+
+const struct WildPokemon gAlteringCave1_LandMons[] =
+{
+ {10, 10, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ZUBAT},
+ {8, 8, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+ {10, 10, SPECIES_ZUBAT},
+ {12, 12, SPECIES_ZUBAT},
+ {16, 16, SPECIES_ZUBAT},
+ {6, 6, SPECIES_ZUBAT},
+ {8, 8, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+ {8, 8, SPECIES_ZUBAT},
+ {14, 14, SPECIES_ZUBAT},
+};
+
+const struct WildPokemonInfo gAlteringCave1_LandMonsInfo = {7, gAlteringCave1_LandMons};
+
+const struct WildPokemon gAlteringCave2_LandMons[] =
+{
+ {7, 7, SPECIES_MAREEP},
+ {9, 9, SPECIES_MAREEP},
+ {5, 5, SPECIES_MAREEP},
+ {11, 11, SPECIES_MAREEP},
+ {7, 7, SPECIES_MAREEP},
+ {9, 9, SPECIES_MAREEP},
+ {13, 13, SPECIES_MAREEP},
+ {3, 3, SPECIES_MAREEP},
+ {5, 5, SPECIES_MAREEP},
+ {11, 11, SPECIES_MAREEP},
+ {5, 5, SPECIES_MAREEP},
+ {11, 11, SPECIES_MAREEP},
+};
+
+const struct WildPokemonInfo gAlteringCave2_LandMonsInfo = {7, gAlteringCave2_LandMons};
+
+const struct WildPokemon gAlteringCave3_LandMons[] =
+{
+ {23, 23, SPECIES_PINECO},
+ {25, 25, SPECIES_PINECO},
+ {22, 22, SPECIES_PINECO},
+ {27, 27, SPECIES_PINECO},
+ {23, 23, SPECIES_PINECO},
+ {25, 25, SPECIES_PINECO},
+ {29, 29, SPECIES_PINECO},
+ {19, 19, SPECIES_PINECO},
+ {21, 21, SPECIES_PINECO},
+ {27, 27, SPECIES_PINECO},
+ {21, 21, SPECIES_PINECO},
+ {27, 27, SPECIES_PINECO},
+};
+
+const struct WildPokemonInfo gAlteringCave3_LandMonsInfo = {7, gAlteringCave3_LandMons};
+
+const struct WildPokemon gAlteringCave4_LandMons[] =
+{
+ {16, 16, SPECIES_HOUNDOUR},
+ {18, 18, SPECIES_HOUNDOUR},
+ {14, 14, SPECIES_HOUNDOUR},
+ {20, 20, SPECIES_HOUNDOUR},
+ {16, 16, SPECIES_HOUNDOUR},
+ {18, 18, SPECIES_HOUNDOUR},
+ {22, 22, SPECIES_HOUNDOUR},
+ {12, 12, SPECIES_HOUNDOUR},
+ {14, 14, SPECIES_HOUNDOUR},
+ {20, 20, SPECIES_HOUNDOUR},
+ {14, 14, SPECIES_HOUNDOUR},
+ {20, 20, SPECIES_HOUNDOUR},
+};
+
+const struct WildPokemonInfo gAlteringCave4_LandMonsInfo = {7, gAlteringCave4_LandMons};
+
+const struct WildPokemon gAlteringCave5_LandMons[] =
+{
+ {10, 10, SPECIES_TEDDIURSA},
+ {12, 12, SPECIES_TEDDIURSA},
+ {8, 8, SPECIES_TEDDIURSA},
+ {14, 14, SPECIES_TEDDIURSA},
+ {10, 10, SPECIES_TEDDIURSA},
+ {12, 12, SPECIES_TEDDIURSA},
+ {16, 16, SPECIES_TEDDIURSA},
+ {6, 6, SPECIES_TEDDIURSA},
+ {8, 8, SPECIES_TEDDIURSA},
+ {14, 14, SPECIES_TEDDIURSA},
+ {8, 8, SPECIES_TEDDIURSA},
+ {14, 14, SPECIES_TEDDIURSA},
+};
+
+const struct WildPokemonInfo gAlteringCave5_LandMonsInfo = {7, gAlteringCave5_LandMons};
+
+const struct WildPokemon gAlteringCave6_LandMons[] =
+{
+ {22, 22, SPECIES_AIPOM},
+ {24, 24, SPECIES_AIPOM},
+ {20, 20, SPECIES_AIPOM},
+ {26, 26, SPECIES_AIPOM},
+ {22, 22, SPECIES_AIPOM},
+ {24, 24, SPECIES_AIPOM},
+ {28, 28, SPECIES_AIPOM},
+ {18, 18, SPECIES_AIPOM},
+ {20, 20, SPECIES_AIPOM},
+ {26, 26, SPECIES_AIPOM},
+ {20, 20, SPECIES_AIPOM},
+ {26, 26, SPECIES_AIPOM},
+};
+
+const struct WildPokemonInfo gAlteringCave6_LandMonsInfo = {7, gAlteringCave6_LandMons};
+
+const struct WildPokemon gAlteringCave7_LandMons[] =
+{
+ {22, 22, SPECIES_SHUCKLE},
+ {24, 24, SPECIES_SHUCKLE},
+ {20, 20, SPECIES_SHUCKLE},
+ {26, 26, SPECIES_SHUCKLE},
+ {22, 22, SPECIES_SHUCKLE},
+ {24, 24, SPECIES_SHUCKLE},
+ {28, 28, SPECIES_SHUCKLE},
+ {18, 18, SPECIES_SHUCKLE},
+ {20, 20, SPECIES_SHUCKLE},
+ {26, 26, SPECIES_SHUCKLE},
+ {20, 20, SPECIES_SHUCKLE},
+ {26, 26, SPECIES_SHUCKLE},
+};
+
+const struct WildPokemonInfo gAlteringCave7_LandMonsInfo = {7, gAlteringCave7_LandMons};
+
+const struct WildPokemon gAlteringCave8_LandMons[] =
+{
+ {22, 22, SPECIES_STANTLER},
+ {24, 24, SPECIES_STANTLER},
+ {20, 20, SPECIES_STANTLER},
+ {26, 26, SPECIES_STANTLER},
+ {22, 22, SPECIES_STANTLER},
+ {24, 24, SPECIES_STANTLER},
+ {28, 28, SPECIES_STANTLER},
+ {18, 18, SPECIES_STANTLER},
+ {20, 20, SPECIES_STANTLER},
+ {26, 26, SPECIES_STANTLER},
+ {20, 20, SPECIES_STANTLER},
+ {26, 26, SPECIES_STANTLER},
+};
+
+const struct WildPokemonInfo gAlteringCave8_LandMonsInfo = {7, gAlteringCave8_LandMons};
+
+const struct WildPokemon gAlteringCave9_LandMons[] =
+{
+ {22, 22, SPECIES_SMEARGLE},
+ {24, 24, SPECIES_SMEARGLE},
+ {20, 20, SPECIES_SMEARGLE},
+ {26, 26, SPECIES_SMEARGLE},
+ {22, 22, SPECIES_SMEARGLE},
+ {24, 24, SPECIES_SMEARGLE},
+ {28, 28, SPECIES_SMEARGLE},
+ {18, 18, SPECIES_SMEARGLE},
+ {20, 20, SPECIES_SMEARGLE},
+ {26, 26, SPECIES_SMEARGLE},
+ {20, 20, SPECIES_SMEARGLE},
+ {26, 26, SPECIES_SMEARGLE},
+};
+
+const struct WildPokemonInfo gAlteringCave9_LandMonsInfo = {7, gAlteringCave9_LandMons};
+
+const struct WildPokemon gMeteorFalls_StevensCave_LandMons[] =
+{
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_GOLBAT},
+ {33, 33, SPECIES_GOLBAT},
+ {35, 35, SPECIES_SOLROCK},
+ {33, 33, SPECIES_SOLROCK},
+ {37, 37, SPECIES_SOLROCK},
+ {35, 35, SPECIES_GOLBAT},
+ {39, 39, SPECIES_SOLROCK},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+ {38, 38, SPECIES_GOLBAT},
+ {40, 40, SPECIES_GOLBAT},
+};
+
+const struct WildPokemonInfo gMeteorFalls_StevensCave_LandMonsInfo = {10, gMeteorFalls_StevensCave_LandMons};
+
+const struct WildPokemonHeader gWildMonHeaders[] =
+{
+ {
+ .mapGroup = MAP_GROUP(ROUTE101),
+ .mapNum = MAP_NUM(ROUTE101),
+ .landMonsInfo = &gRoute101_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE102),
+ .mapNum = MAP_NUM(ROUTE102),
+ .landMonsInfo = &gRoute102_LandMonsInfo,
+ .waterMonsInfo = &gRoute102_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute102_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE103),
+ .mapNum = MAP_NUM(ROUTE103),
+ .landMonsInfo = &gRoute103_LandMonsInfo,
+ .waterMonsInfo = &gRoute103_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute103_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE104),
+ .mapNum = MAP_NUM(ROUTE104),
+ .landMonsInfo = &gRoute104_LandMonsInfo,
+ .waterMonsInfo = &gRoute104_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute104_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE105),
+ .mapNum = MAP_NUM(ROUTE105),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute105_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute105_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE110),
+ .mapNum = MAP_NUM(ROUTE110),
+ .landMonsInfo = &gRoute110_LandMonsInfo,
+ .waterMonsInfo = &gRoute110_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute110_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE111),
+ .mapNum = MAP_NUM(ROUTE111),
+ .landMonsInfo = &gRoute111_LandMonsInfo,
+ .waterMonsInfo = &gRoute111_WaterMonsInfo,
+ .rockSmashMonsInfo = &gRoute111_RockSmashMonsInfo,
+ .fishingMonsInfo = &gRoute111_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE112),
+ .mapNum = MAP_NUM(ROUTE112),
+ .landMonsInfo = &gRoute112_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE113),
+ .mapNum = MAP_NUM(ROUTE113),
+ .landMonsInfo = &gRoute113_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE114),
+ .mapNum = MAP_NUM(ROUTE114),
+ .landMonsInfo = &gRoute114_LandMonsInfo,
+ .waterMonsInfo = &gRoute114_WaterMonsInfo,
+ .rockSmashMonsInfo = &gRoute114_RockSmashMonsInfo,
+ .fishingMonsInfo = &gRoute114_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE116),
+ .mapNum = MAP_NUM(ROUTE116),
+ .landMonsInfo = &gRoute116_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE117),
+ .mapNum = MAP_NUM(ROUTE117),
+ .landMonsInfo = &gRoute117_LandMonsInfo,
+ .waterMonsInfo = &gRoute117_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute117_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE118),
+ .mapNum = MAP_NUM(ROUTE118),
+ .landMonsInfo = &gRoute118_LandMonsInfo,
+ .waterMonsInfo = &gRoute118_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute118_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE124),
+ .mapNum = MAP_NUM(ROUTE124),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute124_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute124_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(PETALBURG_WOODS),
+ .mapNum = MAP_NUM(PETALBURG_WOODS),
+ .landMonsInfo = &gPetalburgWoods_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(RUSTURF_TUNNEL),
+ .mapNum = MAP_NUM(RUSTURF_TUNNEL),
+ .landMonsInfo = &gRusturfTunnel_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(GRANITE_CAVE_1F),
+ .mapNum = MAP_NUM(GRANITE_CAVE_1F),
+ .landMonsInfo = &gGraniteCave_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(GRANITE_CAVE_B1F),
+ .mapNum = MAP_NUM(GRANITE_CAVE_B1F),
+ .landMonsInfo = &gGraniteCave_B1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_1F),
+ .mapNum = MAP_NUM(MT_PYRE_1F),
+ .landMonsInfo = &gMtPyre_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(VICTORY_ROAD_1F),
+ .mapNum = MAP_NUM(VICTORY_ROAD_1F),
+ .landMonsInfo = &gVictoryRoad_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHEAST),
+ .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHEAST),
+ .landMonsInfo = &gSafariZone_South_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(UNDERWATER2),
+ .mapNum = MAP_NUM(UNDERWATER2),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gUnderwater2_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ABANDONED_SHIP_ROOMS_B1F),
+ .mapNum = MAP_NUM(ABANDONED_SHIP_ROOMS_B1F),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gAbandonedShip_Rooms_B1F_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gAbandonedShip_Rooms_B1F_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(GRANITE_CAVE_B2F),
+ .mapNum = MAP_NUM(GRANITE_CAVE_B2F),
+ .landMonsInfo = &gGraniteCave_B2F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = &gGraniteCave_B2F_RockSmashMonsInfo,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(FIERY_PATH),
+ .mapNum = MAP_NUM(FIERY_PATH),
+ .landMonsInfo = &gFieryPath_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_2R),
+ .mapNum = MAP_NUM(METEOR_FALLS_B1F_2R),
+ .landMonsInfo = &gMeteorFalls_B1F_2R_LandMonsInfo,
+ .waterMonsInfo = &gMeteorFalls_B1F_2R_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMeteorFalls_B1F_2R_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(JAGGED_PASS),
+ .mapNum = MAP_NUM(JAGGED_PASS),
+ .landMonsInfo = &gJaggedPass_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE106),
+ .mapNum = MAP_NUM(ROUTE106),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute106_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute106_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE107),
+ .mapNum = MAP_NUM(ROUTE107),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute107_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute107_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE108),
+ .mapNum = MAP_NUM(ROUTE108),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute108_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute108_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE109),
+ .mapNum = MAP_NUM(ROUTE109),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute109_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute109_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE115),
+ .mapNum = MAP_NUM(ROUTE115),
+ .landMonsInfo = &gRoute115_LandMonsInfo,
+ .waterMonsInfo = &gRoute115_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute115_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE),
+ .mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE),
+ .landMonsInfo = &gNewMauville_Inside_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE119),
+ .mapNum = MAP_NUM(ROUTE119),
+ .landMonsInfo = &gRoute119_LandMonsInfo,
+ .waterMonsInfo = &gRoute119_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute119_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE120),
+ .mapNum = MAP_NUM(ROUTE120),
+ .landMonsInfo = &gRoute120_LandMonsInfo,
+ .waterMonsInfo = &gRoute120_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute120_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE121),
+ .mapNum = MAP_NUM(ROUTE121),
+ .landMonsInfo = &gRoute121_LandMonsInfo,
+ .waterMonsInfo = &gRoute121_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute121_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE122),
+ .mapNum = MAP_NUM(ROUTE122),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute122_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute122_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE123),
+ .mapNum = MAP_NUM(ROUTE123),
+ .landMonsInfo = &gRoute123_LandMonsInfo,
+ .waterMonsInfo = &gRoute123_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute123_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_2F),
+ .mapNum = MAP_NUM(MT_PYRE_2F),
+ .landMonsInfo = &gMtPyre_2F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_3F),
+ .mapNum = MAP_NUM(MT_PYRE_3F),
+ .landMonsInfo = &gMtPyre_3F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_4F),
+ .mapNum = MAP_NUM(MT_PYRE_4F),
+ .landMonsInfo = &gMtPyre_4F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_5F),
+ .mapNum = MAP_NUM(MT_PYRE_5F),
+ .landMonsInfo = &gMtPyre_5F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_6F),
+ .mapNum = MAP_NUM(MT_PYRE_6F),
+ .landMonsInfo = &gMtPyre_6F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_EXTERIOR),
+ .mapNum = MAP_NUM(MT_PYRE_EXTERIOR),
+ .landMonsInfo = &gMtPyre_Exterior_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MT_PYRE_SUMMIT),
+ .mapNum = MAP_NUM(MT_PYRE_SUMMIT),
+ .landMonsInfo = &gMtPyre_Summit_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(GRANITE_CAVE_STEVENS_ROOM),
+ .mapNum = MAP_NUM(GRANITE_CAVE_STEVENS_ROOM),
+ .landMonsInfo = &gGraniteCave_StevensRoom_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE125),
+ .mapNum = MAP_NUM(ROUTE125),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute125_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute125_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE126),
+ .mapNum = MAP_NUM(ROUTE126),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute126_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute126_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE127),
+ .mapNum = MAP_NUM(ROUTE127),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute127_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute127_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE128),
+ .mapNum = MAP_NUM(ROUTE128),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute128_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute128_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE129),
+ .mapNum = MAP_NUM(ROUTE129),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute129_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute129_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE130),
+ .mapNum = MAP_NUM(ROUTE130),
+ .landMonsInfo = &gRoute130_LandMonsInfo,
+ .waterMonsInfo = &gRoute130_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute130_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE131),
+ .mapNum = MAP_NUM(ROUTE131),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute131_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute131_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE132),
+ .mapNum = MAP_NUM(ROUTE132),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute132_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute132_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE133),
+ .mapNum = MAP_NUM(ROUTE133),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute133_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute133_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ROUTE134),
+ .mapNum = MAP_NUM(ROUTE134),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gRoute134_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gRoute134_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
+ .mapNum = MAP_NUM(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM1),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM1),
+ .landMonsInfo = &gSeafloorCavern_Room1_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM2),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM2),
+ .landMonsInfo = &gSeafloorCavern_Room2_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM3),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM3),
+ .landMonsInfo = &gSeafloorCavern_Room3_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM4),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM4),
+ .landMonsInfo = &gSeafloorCavern_Room4_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM5),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM5),
+ .landMonsInfo = &gSeafloorCavern_Room5_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM6),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM6),
+ .landMonsInfo = &gSeafloorCavern_Room6_LandMonsInfo,
+ .waterMonsInfo = &gSeafloorCavern_Room6_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSeafloorCavern_Room6_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM7),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM7),
+ .landMonsInfo = &gSeafloorCavern_Room7_LandMonsInfo,
+ .waterMonsInfo = &gSeafloorCavern_Room7_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSeafloorCavern_Room7_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM8),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM8),
+ .landMonsInfo = &gSeafloorCavern_Room8_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ENTRANCE),
+ .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ENTRANCE),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gSeafloorCavern_Entrance_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSeafloorCavern_Entrance_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_ENTRANCE),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_ENTRANCE),
+ .landMonsInfo = &gCaveOfOrigin_Entrance_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_1F),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_1F),
+ .landMonsInfo = &gCaveOfOrigin_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RS_B1F),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RS_B1F),
+ .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RS_B2F),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RS_B2F),
+ .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_UNUSED_RS_B3F),
+ .mapNum = MAP_NUM(CAVE_OF_ORIGIN_UNUSED_RS_B3F),
+ .landMonsInfo = &gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(NEW_MAUVILLE_ENTRANCE),
+ .mapNum = MAP_NUM(NEW_MAUVILLE_ENTRANCE),
+ .landMonsInfo = &gNewMauville_Entrance_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHWEST),
+ .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHWEST),
+ .landMonsInfo = &gSafariZone_Southwest_LandMonsInfo,
+ .waterMonsInfo = &gSafariZone_Southwest_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSafariZone_Southwest_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHEAST),
+ .mapNum = MAP_NUM(SAFARI_ZONE_NORTHEAST),
+ .landMonsInfo = &gSafariZone_North_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = &gSafariZone_North_RockSmashMonsInfo,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHWEST),
+ .mapNum = MAP_NUM(SAFARI_ZONE_NORTHWEST),
+ .landMonsInfo = &gSafariZone_Northwest_LandMonsInfo,
+ .waterMonsInfo = &gSafariZone_Northwest_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSafariZone_Northwest_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(VICTORY_ROAD_B1F),
+ .mapNum = MAP_NUM(VICTORY_ROAD_B1F),
+ .landMonsInfo = &gVictoryRoad_B1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = &gVictoryRoad_B1F_RockSmashMonsInfo,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(VICTORY_ROAD_B2F),
+ .mapNum = MAP_NUM(VICTORY_ROAD_B2F),
+ .landMonsInfo = &gVictoryRoad_B2F_LandMonsInfo,
+ .waterMonsInfo = &gVictoryRoad_B2F_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gVictoryRoad_B2F_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_1F_1R),
+ .mapNum = MAP_NUM(METEOR_FALLS_1F_1R),
+ .landMonsInfo = &gMeteorFalls_1F_1R_LandMonsInfo,
+ .waterMonsInfo = &gMeteorFalls_1F_1R_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMeteorFalls_1F_1R_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_1F_2R),
+ .mapNum = MAP_NUM(METEOR_FALLS_1F_2R),
+ .landMonsInfo = &gMeteorFalls_1F_2R_LandMonsInfo,
+ .waterMonsInfo = &gMeteorFalls_1F_2R_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMeteorFalls_1F_2R_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_1R),
+ .mapNum = MAP_NUM(METEOR_FALLS_B1F_1R),
+ .landMonsInfo = &gMeteorFalls_B1F_1R_LandMonsInfo,
+ .waterMonsInfo = &gMeteorFalls_B1F_1R_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMeteorFalls_B1F_1R_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideStairsRoom_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideLowerRoom_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_INNER_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideInnerRoom_LandMonsInfo,
+ .waterMonsInfo = &gShoalCave_LowTideInnerRoom_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gShoalCave_LowTideInnerRoom_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideEntranceRoom_LandMonsInfo,
+ .waterMonsInfo = &gShoalCave_LowTideEntranceRoom_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gShoalCave_LowTideEntranceRoom_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(LILYCOVE_CITY),
+ .mapNum = MAP_NUM(LILYCOVE_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gLilycoveCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gLilycoveCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(DEWFORD_TOWN),
+ .mapNum = MAP_NUM(DEWFORD_TOWN),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gDewfordTown_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gDewfordTown_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SLATEPORT_CITY),
+ .mapNum = MAP_NUM(SLATEPORT_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gSlateportCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSlateportCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(MOSSDEEP_CITY),
+ .mapNum = MAP_NUM(MOSSDEEP_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gMossdeepCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gMossdeepCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(PACIFIDLOG_TOWN),
+ .mapNum = MAP_NUM(PACIFIDLOG_TOWN),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gPacifidlogTown_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gPacifidlogTown_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(EVER_GRANDE_CITY),
+ .mapNum = MAP_NUM(EVER_GRANDE_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gEverGrandeCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gEverGrandeCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(PETALBURG_CITY),
+ .mapNum = MAP_NUM(PETALBURG_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gPetalburgCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gPetalburgCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(UNDERWATER1),
+ .mapNum = MAP_NUM(UNDERWATER1),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gUnderwater1_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
+ .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ICE_ROOM),
+ .landMonsInfo = &gShoalCave_LowTideIceRoom_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SKY_PILLAR_1F),
+ .mapNum = MAP_NUM(SKY_PILLAR_1F),
+ .landMonsInfo = &gSkyPillar_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SOOTOPOLIS_CITY),
+ .mapNum = MAP_NUM(SOOTOPOLIS_CITY),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = &gSootopolisCity_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSootopolisCity_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SKY_PILLAR_3F),
+ .mapNum = MAP_NUM(SKY_PILLAR_3F),
+ .landMonsInfo = &gSkyPillar_3F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SKY_PILLAR_5F),
+ .mapNum = MAP_NUM(SKY_PILLAR_5F),
+ .landMonsInfo = &gSkyPillar_5F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_EM_2),
+ .mapNum = MAP_NUM(SAFARI_ZONE_EM_2),
+ .landMonsInfo = &gSafariZone_Southeast_LandMonsInfo,
+ .waterMonsInfo = &gSafariZone_Southeast_WaterMonsInfo,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = &gSafariZone_Southeast_FishingMonsInfo,
+ },
+ {
+ .mapGroup = MAP_GROUP(SAFARI_ZONE_EM_1),
+ .mapNum = MAP_NUM(SAFARI_ZONE_EM_1),
+ .landMonsInfo = &gSafariZone_Northeast_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = &gSafariZone_Northeast_RockSmashMonsInfo,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_1F),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_1F),
+ .landMonsInfo = &gMagmaHideout_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_1R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_1R),
+ .landMonsInfo = &gMagmaHideout_2F_1R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_2R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_2R),
+ .landMonsInfo = &gMagmaHideout_2F_2R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_1R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_1R),
+ .landMonsInfo = &gMagmaHideout_3F_1R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_2R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_2R),
+ .landMonsInfo = &gMagmaHideout_3F_2R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_4F),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_4F),
+ .landMonsInfo = &gMagmaHideout_4F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_3F_3R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_3F_3R),
+ .landMonsInfo = &gMagmaHideout_3F_3R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MAGMA_HIDEOUT_2F_3R),
+ .mapNum = MAP_NUM(MAGMA_HIDEOUT_2F_3R),
+ .landMonsInfo = &gMagmaHideout_2F_3R_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MIRAGE_TOWER_1F),
+ .mapNum = MAP_NUM(MIRAGE_TOWER_1F),
+ .landMonsInfo = &gMirageTower_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MIRAGE_TOWER_2F),
+ .mapNum = MAP_NUM(MIRAGE_TOWER_2F),
+ .landMonsInfo = &gMirageTower_2F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MIRAGE_TOWER_3F),
+ .mapNum = MAP_NUM(MIRAGE_TOWER_3F),
+ .landMonsInfo = &gMirageTower_3F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(MIRAGE_TOWER_4F),
+ .mapNum = MAP_NUM(MIRAGE_TOWER_4F),
+ .landMonsInfo = &gMirageTower_4F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(DESERT_UNDERPASS),
+ .mapNum = MAP_NUM(DESERT_UNDERPASS),
+ .landMonsInfo = &gDesertUnderpass_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ARTISAN_CAVE_B1F),
+ .mapNum = MAP_NUM(ARTISAN_CAVE_B1F),
+ .landMonsInfo = &gArtisanCave_B1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ARTISAN_CAVE_1F),
+ .mapNum = MAP_NUM(ARTISAN_CAVE_1F),
+ .landMonsInfo = &gArtisanCave_1F_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave1_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave2_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave3_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave4_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave5_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave6_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave7_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave8_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(ALTERING_CAVE),
+ .mapNum = MAP_NUM(ALTERING_CAVE),
+ .landMonsInfo = &gAlteringCave9_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(METEOR_FALLS_STEVENS_CAVE),
+ .mapNum = MAP_NUM(METEOR_FALLS_STEVENS_CAVE),
+ .landMonsInfo = &gMeteorFalls_StevensCave_LandMonsInfo,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = MAP_GROUP(UNDEFINED),
+ .mapNum = MAP_NUM(UNDEFINED),
+ .landMonsInfo = NULL,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+};
+
+const struct WildPokemon gBattlePyramidPlaceholders_1[] =
+{
+ {5, 5, SPECIES_BULBASAUR},
+ {5, 5, SPECIES_BULBASAUR},
+ {5, 5, SPECIES_BULBASAUR},
+ {5, 5, SPECIES_BULBASAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_CHARMANDER},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_1Info = {4, gBattlePyramidPlaceholders_1};
+
+const struct WildPokemon gBattlePyramidPlaceholders_2[] =
+{
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_IVYSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMANDER},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_2Info = {4, gBattlePyramidPlaceholders_2};
+
+const struct WildPokemon gBattlePyramidPlaceholders_3[] =
+{
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_VENUSAUR},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARIZARD},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_3Info = {4, gBattlePyramidPlaceholders_3};
+
+const struct WildPokemon gBattlePyramidPlaceholders_4[] =
+{
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMANDER},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_SQUIRTLE},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_4Info = {4, gBattlePyramidPlaceholders_4};
+
+const struct WildPokemon gBattlePyramidPlaceholders_5[] =
+{
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_WARTORTLE},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_5Info = {4, gBattlePyramidPlaceholders_5};
+
+const struct WildPokemon gBattlePyramidPlaceholders_6[] =
+{
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_6Info = {4, gBattlePyramidPlaceholders_6};
+
+const struct WildPokemon gBattlePyramidPlaceholders_7[] =
+{
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_WARTORTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_SQUIRTLE},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARIZARD},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+ {5, 5, SPECIES_CHARMELEON},
+};
+
+const struct WildPokemonInfo gBattlePyramidPlaceholders_7Info = {8, gBattlePyramidPlaceholders_7};
+
+const struct WildPokemonHeader gBattlePyramidWildMonHeaders[] =
+{
+ {
+ .mapGroup = 0,
+ .mapNum = 1,
+ .landMonsInfo = &gBattlePyramidPlaceholders_1Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 2,
+ .landMonsInfo = &gBattlePyramidPlaceholders_2Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 3,
+ .landMonsInfo = &gBattlePyramidPlaceholders_3Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 4,
+ .landMonsInfo = &gBattlePyramidPlaceholders_4Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 5,
+ .landMonsInfo = &gBattlePyramidPlaceholders_5Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 6,
+ .landMonsInfo = &gBattlePyramidPlaceholders_6Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 7,
+ .landMonsInfo = &gBattlePyramidPlaceholders_7Info,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 255,
+ .mapNum = 255,
+ .landMonsInfo = NULL,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+};
+
+const struct WildPokemon gBattlePikeMons_1[] =
+{
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_DUSCLOPS},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+};
+
+const struct WildPokemonInfo gBattlePikeMonsInfo_1 = {10, gBattlePikeMons_1};
+
+const struct WildPokemon gBattlePikeMons_2[] =
+{
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_ELECTRODE},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+};
+
+const struct WildPokemonInfo gBattlePikeMonsInfo_2 = {10, gBattlePikeMons_2};
+
+const struct WildPokemon gBattlePikeMons_3[] =
+{
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_BRELOOM},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+};
+
+const struct WildPokemonInfo gBattlePikeMonsInfo_3 = {10, gBattlePikeMons_3};
+
+const struct WildPokemon gBattlePikeMons_4[] =
+{
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_WOBBUFFET},
+ {5, 5, SPECIES_SEVIPER},
+ {5, 5, SPECIES_MILOTIC},
+};
+
+const struct WildPokemonInfo gBattlePikeMonsInfo_4 = {10, gBattlePikeMons_4};
+
+const struct WildPokemonHeader gBattlePikeWildMonHeaders[] =
+{
+ {
+ .mapGroup = 0,
+ .mapNum = 1,
+ .landMonsInfo = &gBattlePikeMonsInfo_1,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 2,
+ .landMonsInfo = &gBattlePikeMonsInfo_2,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 3,
+ .landMonsInfo = &gBattlePikeMonsInfo_3,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 0,
+ .mapNum = 4,
+ .landMonsInfo = &gBattlePikeMonsInfo_4,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+ {
+ .mapGroup = 255,
+ .mapNum = 255,
+ .landMonsInfo = NULL,
+ .waterMonsInfo = NULL,
+ .rockSmashMonsInfo = NULL,
+ .fishingMonsInfo = NULL,
+ },
+};
+
+const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS};
+
+const u16 gRoute119WaterTileData[] =
+{
+ 0, 0x2D, 0,
+ 0x2E, 0x5B, 0x83,
+ 0x5C, 0x8B, 0x12A,
+};
+// code
void DisableWildEncounters(bool8 disabled)
{
sWildEncountersDisabled = disabled;
diff --git a/src/window.c b/src/window.c
index 40dfd5aa5..589557d43 100644
--- a/src/window.c
+++ b/src/window.c
@@ -406,7 +406,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height)
}
}
-void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height)
+void BlitBitmapToWindow(u8 windowId, const u8 *pixels, u16 x, u16 y, u16 width, u16 height)
{
BlitBitmapRectToWindow(windowId, pixels, 0, 0, width, height, x, y, width, height);
}
diff --git a/sym_common.txt b/sym_common.txt
index dacc91d10..0249fc4e9 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -7,33 +7,7 @@
.include "link.o"
.include "link_rfu.o"
.include "rtc.o"
-
-gPreBattleCallback1: @ 3005D00
- .space 0x4
-
-gBattleMainFunc: @ 3005D04
- .space 0xC
-
-gBattleResults: @ 3005D10
- .space 0x44
-
-gLeveledUpInBattle: @ 3005D54
- .space 0xC
-
-gBattleBankFunc: @ 3005D60
- .space 0x10
-
-gHealthBoxesIds: @ 3005D70
- .space 0x4
-
-gMultiUsePlayerCursor: @ 3005D74
- .space 0x4
-
-gNumberOfMovesToChoose: @ 3005D78
- .space 0x4
-
-gUnknown_03005D7C: @ 3005D7C
- .space 0x4
+ .include "battle_main.o"
gRngValue: @ 3005D80
.space 0x4
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 5fd9142ee..b23151a19 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -178,303 +178,9 @@ gBattle_WIN1V: @ 2022E2A
.space 0x2
.include "src/battle_message.o"
+ .include "src/battle_main.o"
-gUnknown_02022F88: @ 2022F88
- .space 0x64
-
-gBattleTypeFlags: @ 2022FEC
- .space 0x4
-
-gBattleTerrain: @ 2022FF0
- .space 0x4
-
-gUnknown_02022FF4: @ 2022FF4
- .space 0x4
-
-gUnknown_02022FF8: @ 2022FF8
- .space 0x60
-
-gUnknown_02023058: @ 2023058
- .space 0x4
-
-gUnknown_0202305C: @ 202305C
- .space 0x4
-
-gUnknown_02023060: @ 2023060
- .space 0x4
-
-gBattleBufferA: @ 2023064
- .space 0x800
-
-gBattleBufferB: @ 2023864
- .space 0x800
-
-gActiveBank: @ 2024064
- .space 0x4
-
-gBattleExecBuffer: @ 2024068
- .space 0x4
-
-gNoOfAllBanks: @ 202406C
- .space 0x2
-
-gBattlePartyID: @ 202406E
- .space 0x8
-
-gBanksByIdentity: @ 2024076
- .space 0x4
-
-gActionsByTurnOrder: @ 202407A
- .space 0x4
-
-gBanksByTurnOrder: @ 202407E
- .space 0x4
-
-gCurrentTurnActionNumber: @ 2024082
- .space 0x1
-
-gCurrentActionFuncId: @ 2024083
- .space 0x1
-
-gBattleMons: @ 2024084
- .space 0x160
-
-gBankSpriteIds: @ 20241E4
- .space 0x4
-
-gCurrMovePos: @ 20241E8
- .space 0x1
-
-gUnknown_020241E9: @ 20241E9
- .space 0x1
-
-gCurrentMove: @ 20241EA
- .space 0x2
-
-gChosenMove: @ 20241EC
- .space 0x2
-
-gRandomMove: @ 20241EE
- .space 0x2
-
-gBattleMoveDamage: @ 20241F0
- .space 0x4
-
-gHpDealt: @ 20241F4
- .space 0x4
-
-gTakenDmg: @ 20241F8
- .space 0x10
-
-gLastUsedItem: @ 2024208
- .space 0x2
-
-gLastUsedAbility: @ 202420A
- .space 0x1
-
-gBankAttacker: @ 202420B
- .space 0x1
-
-gBankTarget: @ 202420C
- .space 0x1
-
-gBank1: @ 202420D
- .space 0x1
-
-gEffectBank: @ 202420E
- .space 0x1
-
-gStringBank: @ 202420F
- .space 0x1
-
-gAbsentBankFlags: @ 2024210
- .space 0x1
-
-gCritMultiplier: @ 2024211
- .space 0x1
-
-gMultiHitCounter: @ 2024212
- .space 0x2
-
-gBattlescriptCurrInstr: @ 2024214
- .space 0x8
-
-gActionForBanks: @ 202421C
- .space 0x4
-
-gSelectionBattleScripts: @ 2024220
- .space 0x10
-
-gPalaceSelectionBattleScripts: @ 2024230
- .space 0x10
-
-gLastPrintedMoves: @ 2024240
- .space 0x8
-
-gLastMoves: @ 2024248
- .space 0x8
-
-gLastLandedMoves: @ 2024250
- .space 0x8
-
-gLastHitByType: @ 2024258
- .space 0x8
-
-gLastResultingMoves: @ 2024260
- .space 0x8
-
-gLockedMoves: @ 2024268
- .space 0x8
-
-gLastHitBy: @ 2024270
- .space 0x4
-
-gChosenMovesByBanks: @ 2024274
- .space 0x8
-
-gBattleMoveFlags: @ 202427C
- .space 0x4
-
-gHitMarker: @ 2024280
- .space 0x4
-
-gUnknown_02024284: @ 2024284
- .space 0x4
-
-gTakenDmgBanks: @ 2024288
- .space 0x4
-
-gUnknown_0202428C: @ 202428C
- .space 0x2
-
-gSideAffecting: @ 202428E
- .space 0x6
-
-gSideTimers: @ 2024294
- .space 0x18
-
-gStatuses3: @ 20242AC
- .space 0x10
-
-gDisableStructs: @ 20242BC
- .space 0x70
-
-gPauseCounterBattle: @ 202432C
- .space 0x2
-
-gPaydayMoney: @ 202432E
- .space 0x2
-
-gRandomTurnNumber: @ 2024330
- .space 0x2
-
-gBattleCommunication: @ 2024332
- .space 0x1
-
-gUnknown_02024333: @ 2024333
- .space 0x7
-
-gBattleOutcome: @ 202433A
- .space 0x2
-
-gProtectStructs: @ 202433C
- .space 0x40
-
-gSpecialStatuses: @ 202437C
- .space 0x50
-
-gBattleWeather: @ 20243CC
- .space 0x4
-
-gWishFutureKnock: @ 20243D0
- .space 0x2C
-
-gUnknown_020243FC: @ 20243FC
- .space 0x2
-
-gSentPokesToOpponent: @ 20243FE
- .space 0x2
-
-gDynamicBasePower: @ 2024400
- .space 0x2
-
-gExpShareExp: @ 2024402
- .space 0x2
-
-gEnigmaBerries: @ 2024404
- .space 0x70
-
-gBattleScripting: @ 2024474
- .space 0x28
-
-gBattleStruct: @ 202449C
- .space 0x4
-
-gLinkBattleSendBuffer: @ 20244A0
- .space 0x4
-
-gLinkBattleRecvBuffer: @ 20244A4
- .space 0x4
-
-gBattleResources: @ 20244A8
- .space 0x4
-
-gActionSelectionCursor: @ 20244AC
- .space 0x4
-
-gMoveSelectionCursor: @ 20244B0
- .space 0x4
-
-gUnknown_020244B4: @ 20244B4
- .space 0x4
-
-gBankInMenu: @ 20244B8
- .space 0x1
-
-gDoingBattleAnim: @ 20244B9
- .space 0x3
-
-gTransformedPersonalities: @ 20244BC
- .space 0x10
-
-gPlayerDpadHoldFrames: @ 20244CC
- .space 0x4
-
-gBattleSpritesDataPtr: @ 20244D0
- .space 0x4
-
-gMonSpritesGfxPtr: @ 20244D4
- .space 0x4
-
-gUnknown_020244D8: @ 20244D8
- .space 0x4
-
-gUnknown_020244DC: @ 20244DC
- .space 0x4
-
-gBattleMovePower: @ 20244E0
- .space 0x2
-
-gMoveToLearn: @ 20244E2
- .space 0x2
-
-gBattleMonForms: @ 20244E4
- .space 0x4
-
-sLearningMoveTableID: @ 20244E8
- .space 0x1
-
-gPlayerPartyCount: @ 20244E9
- .space 0x1
-
-gEnemyPartyCount: @ 20244EA
- .space 0x2
-
-gPlayerParty: @ 20244EC
- .space 600
-
-gEnemyParty: @ 2024744
- .space 600
+ .include "src/pokemon_1.o"
gUnknown_0202499C: @ 202499C
.space 0x18
@@ -598,25 +304,6 @@ gUnknown_020375D6: @ 20375D6
.include "src/event_data.o"
.include "src/start_menu.o"
-
-gUnknown_02037619: @ 2037619
- .space 0x1
-
-gUnknown_0203761A: @ 203761A
- .space 0x2
-
-gUnknown_0203761C: @ 203761C
- .space 0x4
-
-gUnknown_02037620: @ 2037620
- .space 0x1
-
-gUnknown_02037621: @ 2037621
- .space 0x1
-
-gUnknown_02037622: @ 2037622
- .space 0x2
-
.include "src/tileset_anims.o"
.include "src/palette.o"
.include "src/sound.o"
@@ -1104,7 +791,7 @@ gUnknown_0203AB98: @ 203AB98
.include "src/coins.o"
.include "src/battle_transition.o"
-gAbilitiesPerBank: @ 203ABA4
+gBattlerAbilities: @ 203ABA4
.space 0x4
gStringInfo: @ 203ABA8
@@ -1205,10 +892,7 @@ gUnknown_0203BCE8: @ 203BCE8
.include "src/lottery_corner.o"
.include "src/diploma.o"
-
-gUnknown_0203BCF4: @ 203BCF4
- .space 0x4
-
+ .include "src/berry_tag_screen.o"
.include "src/mystery_event_menu.o"
.include "src/save_failed_screen.o"
@@ -1248,36 +932,9 @@ gUnknown_0203CD80: @ 203CD80
gUnknown_0203CD88: @ 203CD88
.space 0x4
-gUnknown_0203CD8C: @ 203CD8C
- .space 0x1
-
-gUnknown_0203CD8D: @ 203CD8D
- .space 0x3
-
-gUnknown_0203CD90: @ 203CD90
- .space 0xC
-
-gUnknown_0203CD9C: @ 203CD9C
- .space 0x2
-
-gUnknown_0203CD9E: @ 203CD9E
- .space 0x1
-
-gUnknown_0203CD9F: @ 203CD9F
- .space 0x1
-
-gUnknown_0203CDA0: @ 203CDA0
- .space 0x4
-
-gUnknown_0203CDA4: @ 203CDA4
- .space 0x4
-
-gUnknown_0203CDA8: @ 203CDA8
- .space 0x4
-
-gUnknown_0203CDAC: @ 203CDAC
- .space 0x80
+ .include "src/menu.o"
+ .align 2
gUnknown_0203CE2C: @ 203CE2C
.space 0x4
@@ -1348,12 +1005,7 @@ gUnknown_0203CE8C: @ 203CE8C
.space 0x10
.include "src/unk_text_util.o"
-
-gUnknown_0203CEBC: @ 203CEBC
- .space 0x4
-
-gUnknown_0203CEC0: @ 203CEC0
- .space 0x4
+ .include "src/item_icon.o"
gUnknown_0203CEC4: @ 203CEC4
.space 0x4
@@ -1466,4 +1118,4 @@ gUnknown_0203CF58: @ 203CF58
gUnknown_0203CF5C: @ 203CF5C
.space 0x4
-gUnknown_0203CF60: @ 203CF60
+ .include "src/rayquaza_scene.o"