summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/battle_frontier_1.s20
-rwxr-xr-xasm/battle_frontier_2.s2
-rw-r--r--asm/battle_setup.s3550
-rwxr-xr-xasm/battle_tower.s6
-rw-r--r--asm/battle_transition.s12
-rw-r--r--asm/bike.s2
-rw-r--r--asm/field_control_avatar.s10
-rw-r--r--asm/field_effect.s26
-rw-r--r--asm/field_player_avatar.s2
-rw-r--r--asm/field_screen.s32
-rw-r--r--asm/fldeff_80F9BCC.s6
-rwxr-xr-xasm/item_menu.s2
-rw-r--r--asm/macros/event.inc6
-rw-r--r--asm/map_obj_8097404.s8
-rw-r--r--asm/map_obj_lock.s4
-rw-r--r--asm/overworld.s30
-rwxr-xr-xasm/pokenav.s14
-rw-r--r--asm/rom6.s2
-rw-r--r--asm/script_pokemon_util_80F87D8.s6
-rw-r--r--asm/start_menu.s2
-rwxr-xr-xasm/trainer_rematch.s4
-rw-r--r--asm/trainer_see.s159
-rw-r--r--constants/battle_constants.inc4
-rw-r--r--data/battle_scripts_1.s4
-rw-r--r--data/battle_setup.s190
-rw-r--r--data/event_scripts.s88
-rw-r--r--data/script_cmd_table.inc4
-rw-r--r--data/scripts/cable_club.inc4
-rw-r--r--data/scripts/maps/AbandonedShip_Rooms2_1F.inc4
-rw-r--r--data/scripts/maps/AbandonedShip_Rooms_1F.inc2
-rw-r--r--data/scripts/maps/AncientTomb.inc2
-rw-r--r--data/scripts/maps/BirthIsland_Exterior.inc2
-rw-r--r--data/scripts/maps/DesertRuins.inc2
-rw-r--r--data/scripts/maps/DewfordTown_Gym.inc2
-rw-r--r--data/scripts/maps/FarawayIsland_Interior.inc2
-rw-r--r--data/scripts/maps/FortreeCity_Gym.inc2
-rw-r--r--data/scripts/maps/IslandCave.inc2
-rw-r--r--data/scripts/maps/JaggedPass.inc4
-rw-r--r--data/scripts/maps/LavaridgeTown_Gym_1F.inc6
-rw-r--r--data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc2
-rw-r--r--data/scripts/maps/MarineCave_End.inc2
-rw-r--r--data/scripts/maps/MauvilleCity_Gym.inc2
-rw-r--r--data/scripts/maps/MeteorFalls_1F_2R.inc6
-rw-r--r--data/scripts/maps/MossdeepCity_Gym.inc2
-rw-r--r--data/scripts/maps/MtChimney.inc4
-rw-r--r--data/scripts/maps/MtPyre_3F.inc2
-rw-r--r--data/scripts/maps/MtPyre_6F.inc2
-rw-r--r--data/scripts/maps/NavelRock_Bottom.inc2
-rw-r--r--data/scripts/maps/NavelRock_Top.inc2
-rw-r--r--data/scripts/maps/PetalburgCity.inc2
-rw-r--r--data/scripts/maps/PetalburgCity_Gym.inc2
-rw-r--r--data/scripts/maps/PetalburgWoods.inc6
-rw-r--r--data/scripts/maps/Route101.inc2
-rw-r--r--data/scripts/maps/Route102.inc6
-rw-r--r--data/scripts/maps/Route103.inc6
-rw-r--r--data/scripts/maps/Route104.inc18
-rw-r--r--data/scripts/maps/Route105.inc2
-rw-r--r--data/scripts/maps/Route106.inc2
-rw-r--r--data/scripts/maps/Route107.inc2
-rw-r--r--data/scripts/maps/Route108.inc2
-rw-r--r--data/scripts/maps/Route109.inc4
-rw-r--r--data/scripts/maps/Route110.inc8
-rw-r--r--data/scripts/maps/Route111.inc6
-rw-r--r--data/scripts/maps/Route112.inc2
-rw-r--r--data/scripts/maps/Route113.inc4
-rw-r--r--data/scripts/maps/Route114.inc4
-rw-r--r--data/scripts/maps/Route115.inc6
-rw-r--r--data/scripts/maps/Route116.inc12
-rw-r--r--data/scripts/maps/Route117.inc12
-rw-r--r--data/scripts/maps/Route118.inc4
-rw-r--r--data/scripts/maps/Route119.inc4
-rw-r--r--data/scripts/maps/Route120.inc4
-rw-r--r--data/scripts/maps/Route121.inc6
-rw-r--r--data/scripts/maps/Route123.inc6
-rw-r--r--data/scripts/maps/Route124.inc6
-rw-r--r--data/scripts/maps/Route125.inc2
-rw-r--r--data/scripts/maps/Route126.inc2
-rw-r--r--data/scripts/maps/Route127.inc2
-rw-r--r--data/scripts/maps/Route128.inc4
-rw-r--r--data/scripts/maps/RustboroCity.inc2
-rw-r--r--data/scripts/maps/RustboroCity_Gym.inc2
-rw-r--r--data/scripts/maps/SkyPillar_Top.inc2
-rw-r--r--data/scripts/maps/SootopolisCity_Gym_1F.inc2
-rw-r--r--data/scripts/maps/SouthernIsland_Interior.inc2
-rw-r--r--data/scripts/maps/TerraCave_End.inc2
-rw-r--r--data/scripts/maps/VictoryRoad_1F.inc2
-rw-r--r--data/scripts/players_house.inc2
-rw-r--r--data/specials.inc30
-rw-r--r--include/battle.h24
-rw-r--r--include/battle_setup.h87
-rw-r--r--include/battle_transition.h50
-rw-r--r--include/constants/flags.h4
-rw-r--r--include/constants/trainers.h1129
-rwxr-xr-xinclude/event_scripts.h8
-rwxr-xr-xinclude/field_map_obj.h2
-rw-r--r--include/global.h25
-rw-r--r--include/pokemon.h1
-rw-r--r--include/pokemon_3.h2
-rw-r--r--include/safari_zone.h2
-rw-r--r--include/secret_base.h1
-rw-r--r--include/songs.h42
-rw-r--r--include/strings.h1
-rw-r--r--include/trainer_classes.h74
-rw-r--r--include/trainer_front_sprites.h101
-rw-r--r--include/trainer_ids.h7
-rw-r--r--include/trainer_see.h15
-rw-r--r--ld_script.txt5
-rw-r--r--src/battle_2.c36
-rw-r--r--src/battle_message.c7
-rw-r--r--src/battle_script_commands.c9
-rw-r--r--src/battle_setup.c1884
-rw-r--r--src/load_save.c6
-rw-r--r--src/pokemon_2.c2
-rw-r--r--src/pokemon_3.c87
-rw-r--r--src/recorded_battle.c2
-rw-r--r--src/safari_zone.c2
-rw-r--r--src/scrcmd.c32
-rw-r--r--src/secret_base.c2
-rw-r--r--src/trainer_see.c68
-rw-r--r--sym_common.txt4
-rw-r--r--sym_ewram.txt50
121 files changed, 3689 insertions, 4531 deletions
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s
index 973e87fbb..fd372f81b 100755
--- a/asm/battle_frontier_1.s
+++ b/asm/battle_frontier_1.s
@@ -13791,7 +13791,7 @@ sub_8195FF8: @ 8195FF8
push {r4-r6,lr}
adds r5, r0, 0
movs r4, 0
- ldr r6, =gUnknown_085500A4
+ ldr r6, =gRematchTable
_08196000:
movs r1, 0xAE
lsls r1, 1
@@ -13887,7 +13887,7 @@ task_prev_quest: @ 81960A8
cmp r0, 0
bne _081960C2
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
bl sub_808B864
bl sub_808BCF4
_081960C2:
@@ -14659,7 +14659,7 @@ sub_8196710: @ 8196710
thumb_func_start sub_819672C
sub_819672C: @ 819672C
push {lr}
- ldr r1, =gUnknown_085500A4
+ ldr r1, =gRematchTable
lsls r0, 4
adds r0, r1
ldrh r2, [r0, 0xA]
@@ -14677,10 +14677,10 @@ sub_8196748: @ 8196748
push {r4-r6,lr}
movs r5, 0
movs r6, 0
- ldr r4, =gUnknown_085500A4
+ ldr r4, =gRematchTable
_08196750:
ldrh r0, [r4]
- bl HasTrainerAlreadyBeenFought
+ bl HasTrainerBeenFought
lsls r0, 24
cmp r0, 0
beq _0819675E
@@ -14703,10 +14703,10 @@ sub_8196774: @ 8196774
adds r7, r0, 0
movs r4, 0
movs r6, 0
- ldr r5, =gUnknown_085500A4
+ ldr r5, =gRematchTable
_0819677E:
ldrh r0, [r5]
- bl HasTrainerAlreadyBeenFought
+ bl HasTrainerBeenFought
lsls r0, 24
cmp r0, 0
beq _0819679A
@@ -14766,7 +14766,7 @@ _081967EC:
adds r4, r0, 0
movs r7, 0x1
adds r0, r5, 0
- bl sub_80B1E94
+ bl UpdateRematchIfDefeated
b _08196832
_0819680A:
bl Random
@@ -15270,7 +15270,7 @@ sub_8196B98: @ 8196B98
adds r7, r0, 0
cmp r1, 0xFF
beq _08196C5C
- ldr r1, =gUnknown_085500A4
+ ldr r1, =gRematchTable
lsls r0, r2, 4
adds r2, r0, r1
ldrh r4, [r2, 0xA]
@@ -15373,7 +15373,7 @@ sub_8196C70: @ 8196C70
lsls r1, 2
adds r1, r2
ldrh r0, [r1]
- bl sub_80B2250
+ bl GetLastBeatenRematchTrainerId
lsls r0, 16
lsrs r0, 16
ldr r5, =gTrainers
diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s
index d90fa94f0..ead4750e1 100755
--- a/asm/battle_frontier_2.s
+++ b/asm/battle_frontier_2.s
@@ -12380,7 +12380,7 @@ _081A0C8E:
sub_81A0C9C: @ 81A0C9C
push {lr}
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
bl sub_808B864
bl sub_808BCF4
movs r0, 0
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
deleted file mode 100644
index f77e7a5d0..000000000
--- a/asm/battle_setup.s
+++ /dev/null
@@ -1,3550 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start task01_battle_start
-task01_battle_start: @ 80B05F0
- push {r4,r5,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
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B0614
- cmp r0, 0x1
- beq _080B062E
- b _080B0652
- .pool
-_080B0614:
- bl c3_80A0DD8_is_running
- cmp r0, 0
- bne _080B0652
- ldrb r0, [r4, 0x2]
- bl sub_8145EF4
- bl sub_81BE72C
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080B0652
-_080B062E:
- bl IsBattleTransitionDone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B0652
- bl overworld_free_bg_tilemaps
- ldr r0, =CB2_InitBattle
- bl SetMainCallback2
- bl prev_quest_postbuffer_cursor_backup_reset
- bl overworld_poison_timer_set
- adds r0, r5, 0
- bl DestroyTask
-_080B0652:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task01_battle_start
-
- thumb_func_start task_add_01_battle_start
-task_add_01_battle_start: @ 80B065C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r5, 16
- ldr r0, =task01_battle_start
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- adds r0, r5, 0
- bl PlayMapChosenOrBattleBGM
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_add_01_battle_start
-
- thumb_func_start BattleSetup_StartWildBattle
-BattleSetup_StartWildBattle: @ 80B0698
- push {lr}
- bl GetSafariZoneFlag
- cmp r0, 0
- beq _080B06A8
- bl sub_80B077C
- b _080B06AC
-_080B06A8:
- bl sub_80B06BC
-_080B06AC:
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartWildBattle
-
- thumb_func_start BattleSetup_StartBattlePikeWildBattle
-BattleSetup_StartBattlePikeWildBattle: @ 80B06B0
- push {lr}
- bl sub_80B07B4
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartBattlePikeWildBattle
-
- thumb_func_start sub_80B06BC
-sub_80B06BC: @ 80B06BC
- push {r4,lr}
- bl ScriptContext2_Enable
- bl player_bitmagic
- bl sub_808BCF4
- ldr r1, =gMain
- ldr r0, =sub_80B0AF8
- str r0, [r1, 0x8]
- ldr r4, =gBattleTypeFlags
- movs r0, 0
- str r0, [r4]
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B06F2
- ldr r0, =0x0000400e
- movs r1, 0
- bl VarSet
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 14
- orrs r0, r1
- str r0, [r4]
-_080B06F2:
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B06BC
-
- thumb_func_start BattleSetup_StartRoamerBattle
-BattleSetup_StartRoamerBattle: @ 80B072C
- push {lr}
- bl ScriptContext2_Enable
- bl player_bitmagic
- bl sub_808BCF4
- ldr r1, =gMain
- ldr r0, =sub_80B0AF8
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 3
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end BattleSetup_StartRoamerBattle
-
- thumb_func_start sub_80B077C
-sub_80B077C: @ 80B077C
- push {lr}
- bl ScriptContext2_Enable
- bl player_bitmagic
- bl sub_808BCF4
- ldr r1, =gMain
- ldr r0, =sub_80FC190
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B077C
-
- thumb_func_start sub_80B07B4
-sub_80B07B4: @ 80B07B4
- push {lr}
- bl ScriptContext2_Enable
- bl player_bitmagic
- bl sub_808BCF4
- ldr r1, =gMain
- ldr r0, =sub_80B0AF8
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 13
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B07B4
-
- thumb_func_start task_add_01_battle_start_with_music_and_stats
-task_add_01_battle_start_with_music_and_stats: @ 80B0804
- push {lr}
- bl reads_trainer_data_byte1_byte0x18
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x9
- bl IncrementGameStat
- bl sub_80B1234
- pop {r0}
- bx r0
- thumb_func_end task_add_01_battle_start_with_music_and_stats
-
- thumb_func_start sub_80B0828
-sub_80B0828: @ 80B0828
- push {lr}
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B0846
- movs r0, 0xA
- bl sub_80B100C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- b _080B0856
-_080B0846:
- movs r0, 0xB
- bl sub_80B100C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
-_080B0856:
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x9
- bl IncrementGameStat
- bl sub_80B1234
- pop {r0}
- bx r0
- thumb_func_end sub_80B0828
-
- thumb_func_start sub_80B086C
-sub_80B086C: @ 80B086C
- push {lr}
- ldr r0, =gEnemyParty
- movs r1, 0xC4
- lsls r1, 1
- movs r2, 0x5
- bl CreateMaleMon
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 2
- str r0, [r1]
- movs r0, 0x8
- movs r1, 0
- bl task_add_01_battle_start
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B086C
-
- thumb_func_start BattleSetup_StartScriptedWildBattle
-BattleSetup_StartScriptedWildBattle: @ 80B08A8
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end BattleSetup_StartScriptedWildBattle
-
- thumb_func_start sub_80B08EC
-sub_80B08EC: @ 80B08EC
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 6
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B08EC
-
- thumb_func_start sub_80B0934
-sub_80B0934: @ 80B0934
- push {r4,lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r4, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 6
- str r0, [r4]
- ldr r0, =gEnemyParty
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0xCA
- lsls r0, 1
- cmp r1, r0
- beq _080B09B8
- cmp r1, r0
- bhi _080B0988
- cmp r1, 0x97
- beq _080B09F4
- cmp r1, 0x97
- bcc _080B099A
- cmp r1, 0xFA
- bhi _080B099A
- cmp r1, 0xF9
- bcc _080B099A
- ldr r1, =0x00000229
- b _080B09E6
- .pool
-_080B0988:
- movs r0, 0xCB
- lsls r0, 1
- cmp r1, r0
- beq _080B09CE
- cmp r1, r0
- bcc _080B099A
- adds r0, 0x4
- cmp r1, r0
- beq _080B09E4
-_080B099A:
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 21
- orrs r0, r1
- str r0, [r2]
- movs r1, 0xF0
- lsls r1, 1
- movs r0, 0x17
- bl task_add_01_battle_start
- b _080B09FE
- .pool
-_080B09B8:
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 22
- orrs r0, r1
- str r0, [r4]
- movs r1, 0xF0
- lsls r1, 1
- movs r0, 0x16
- bl task_add_01_battle_start
- b _080B09FE
-_080B09CE:
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 23
- orrs r0, r1
- str r0, [r4]
- movs r1, 0xEB
- lsls r1, 1
- movs r0, 0x18
- bl task_add_01_battle_start
- b _080B09FE
-_080B09E4:
- ldr r1, =0x00000227
-_080B09E6:
- movs r0, 0
- bl task_add_01_battle_start
- b _080B09FE
- .pool
-_080B09F4:
- movs r1, 0xEC
- lsls r1, 1
- movs r0, 0xA
- bl task_add_01_battle_start
-_080B09FE:
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0934
-
- thumb_func_start sub_80B0A18
-sub_80B0A18: @ 80B0A18
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0xC0
- lsls r0, 6
- str r0, [r1]
- ldr r0, =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080B0A50
- movs r1, 0xF0
- lsls r1, 1
- movs r0, 0xB
- bl task_add_01_battle_start
- b _080B0A5A
- .pool
-_080B0A50:
- movs r1, 0xF0
- lsls r1, 1
- movs r0, 0x6
- bl task_add_01_battle_start
-_080B0A5A:
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- thumb_func_end sub_80B0A18
-
- thumb_func_start sub_80B0A74
-sub_80B0A74: @ 80B0A74
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0xC0
- lsls r0, 7
- str r0, [r1]
- ldr r0, =gEnemyParty
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- adds r2, r1, 0
- movs r0, 0xC9
- lsls r0, 1
- cmp r1, r0
- beq _080B0ACC
- cmp r1, r0
- bgt _080B0ABC
- subs r0, 0x1
- cmp r1, r0
- beq _080B0AC8
- b _080B0AD4
- .pool
-_080B0ABC:
- ldr r0, =0x00000193
- cmp r2, r0
- beq _080B0AD0
- b _080B0AD4
- .pool
-_080B0AC8:
- movs r0, 0x15
- b _080B0AD6
-_080B0ACC:
- movs r0, 0x13
- b _080B0AD6
-_080B0AD0:
- movs r0, 0x14
- b _080B0AD6
-_080B0AD4:
- movs r0, 0xA
-_080B0AD6:
- ldr r1, =0x000001df
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B0A74
-
- thumb_func_start sub_80B0AF8
-sub_80B0AF8: @ 80B0AF8
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, =0x01000100
- mov r0, sp
- bl CpuSet
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- bl battle_exit_is_player_defeat
- cmp r0, 0x1
- bne _080B0B4C
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B0B4C
- bl InBattlePike
- lsls r0, 24
- cmp r0, 0
- bne _080B0B4C
- ldr r0, =c2_whiteout
- bl SetMainCallback2
- b _080B0B58
- .pool
-_080B0B4C:
- ldr r0, =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF6F0
- str r0, [r1]
-_080B0B58:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B0AF8
-
- thumb_func_start sub_80B0B6C
-sub_80B0B6C: @ 80B0B6C
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, =0x01000100
- mov r0, sp
- bl CpuSet
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- bl battle_exit_is_player_defeat
- cmp r0, 0x1
- bne _080B0BC0
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B0BB4
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- b _080B0BC6
- .pool
-_080B0BB4:
- ldr r0, =c2_whiteout
- bl SetMainCallback2
- b _080B0BC6
- .pool
-_080B0BC0:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080B0BC6:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B0B6C
-
- thumb_func_start BattleSetup_GetTerrainId
-BattleSetup_GetTerrainId: @ 80B0BD0
- push {r4,r5,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsTallGrass
- lsls r0, 24
- cmp r0, 0
- beq _080B0C06
- movs r0, 0
- b _080B0D1A
-_080B0C06:
- adds r0, r4, 0
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _080B0C16
- movs r0, 0x1
- b _080B0D1A
-_080B0C16:
- adds r0, r4, 0
- bl MetatileBehavior_IsSandOrDeepSand
- lsls r0, 24
- cmp r0, 0
- bne _080B0D18
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x17]
- subs r0, 0x1
- cmp r0, 0x8
- bhi _080B0C9C
- lsls r0, 2
- ldr r1, =_080B0C40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B0C40:
- .4byte _080B0C9C
- .4byte _080B0C9C
- .4byte _080B0C9C
- .4byte _080B0C64
- .4byte _080B0C88
- .4byte _080B0C8C
- .4byte _080B0C9C
- .4byte _080B0C74
- .4byte _080B0C74
-_080B0C64:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsMB_0B
- lsls r0, 24
- cmp r0, 0
- beq _080B0C78
-_080B0C74:
- movs r0, 0x8
- b _080B0D1A
-_080B0C78:
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _080B0CE0
- movs r0, 0x7
- b _080B0D1A
-_080B0C88:
- movs r0, 0x3
- b _080B0D1A
-_080B0C8C:
- lsls r0, r5, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _080B0CF2
- b _080B0D10
-_080B0C9C:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsDeepOrOceanWater
- lsls r0, 24
- cmp r0, 0
- bne _080B0CF2
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _080B0CE0
- adds r0, r4, 0
- bl MetatileBehavior_IsMountain
- lsls r0, 24
- cmp r0, 0
- beq _080B0CC8
- movs r0, 0x6
- b _080B0D1A
-_080B0CC8:
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _080B0CF6
- adds r0, r4, 0
- bl MetatileBehavior_GetBridgeSth
- lsls r0, 24
- cmp r0, 0
- beq _080B0CE4
-_080B0CE0:
- movs r0, 0x5
- b _080B0D1A
-_080B0CE4:
- adds r0, r4, 0
- bl MetatileBehavior_IsBridge
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B0CF6
-_080B0CF2:
- movs r0, 0x4
- b _080B0D1A
-_080B0CF6:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0xE0
- lsls r0, 5
- cmp r1, r0
- beq _080B0D18
- bl sav1_get_weather_probably
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8
- beq _080B0D18
-_080B0D10:
- movs r0, 0x9
- b _080B0D1A
- .pool
-_080B0D18:
- movs r0, 0x2
-_080B0D1A:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end BattleSetup_GetTerrainId
-
- thumb_func_start sub_80B0D24
-sub_80B0D24: @ 80B0D24
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r4, r0, 16
- bl sav1_get_flash_used_on_map
- lsls r0, 24
- cmp r0, 0
- beq _080B0D54
- movs r0, 0x2
- b _080B0D7E
-_080B0D54:
- lsls r0, r4, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _080B0D7C
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x4
- beq _080B0D78
- cmp r0, 0x5
- beq _080B0D7C
- movs r0, 0
- b _080B0D7E
- .pool
-_080B0D78:
- movs r0, 0x1
- b _080B0D7E
-_080B0D7C:
- movs r0, 0x3
-_080B0D7E:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B0D24
-
- thumb_func_start sub_80B0D88
-sub_80B0D88: @ 80B0D88
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- movs r6, 0
-_080B0D92:
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _080B0DD6
- cmp r1, 0
- beq _080B0DD6
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080B0DD6
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- adds r0, r7, r0
- lsls r0, 24
- lsrs r7, r0, 24
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080B0DDC
-_080B0DD6:
- adds r6, 0x1
- cmp r6, 0x5
- ble _080B0D92
-_080B0DDC:
- adds r0, r7, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B0D88
-
- thumb_func_start reads_trainer_data_byte0
-reads_trainer_data_byte0: @ 80B0DE8
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, =gTrainers
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r5
- adds r0, r2, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, r4
- bcs _080B0E08
- adds r4, r0, 0
-_080B0E08:
- movs r3, 0
- ldrb r0, [r2]
- cmp r0, 0x1
- beq _080B0E50
- cmp r0, 0x1
- bgt _080B0E20
- cmp r0, 0
- beq _080B0E2A
- b _080B0EC0
- .pool
-_080B0E20:
- cmp r0, 0x2
- beq _080B0E76
- cmp r0, 0x3
- beq _080B0E9C
- b _080B0EC0
-_080B0E2A:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _080B0EC0
-_080B0E38:
- lsls r0, r2, 3
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _080B0E38
- b _080B0EC0
-_080B0E50:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _080B0EC0
-_080B0E5E:
- lsls r0, r2, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _080B0E5E
- b _080B0EC0
-_080B0E76:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _080B0EC0
-_080B0E84:
- lsls r0, r2, 3
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _080B0E84
- b _080B0EC0
-_080B0E9C:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _080B0EC0
-_080B0EAA:
- lsls r0, r2, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _080B0EAA
-_080B0EC0:
- adds r0, r3, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end reads_trainer_data_byte0
-
- thumb_func_start sub_80B0EC8
-sub_80B0EC8: @ 80B0EC8
- push {r4-r6,lr}
- bl sub_80B0D24
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- ldr r0, =gEnemyParty
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_80B0D88
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _080B0F10
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B0F04
- movs r0, 0
- b _080B0F2E
- .pool
-_080B0F04:
- ldr r0, =gUnknown_0854FE88
- lsls r1, r5, 1
- b _080B0F20
- .pool
-_080B0F10:
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B0F2C
- ldr r0, =gUnknown_0854FE88
- lsls r1, r6, 1
- adds r0, 0x1
-_080B0F20:
- adds r1, r0
- ldrb r0, [r1]
- b _080B0F2E
- .pool
-_080B0F2C:
- movs r0, 0xA
-_080B0F2E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B0EC8
-
- thumb_func_start reads_trainer_data_byte1_byte0x18
-reads_trainer_data_byte1_byte0x18: @ 80B0F34
- push {r4-r6,lr}
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r1, [r4]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _080B0F98
- ldr r1, =gTrainers
- ldrh r2, [r4]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x1]
- cmp r1, 0x1F
- bne _080B0F94
- adds r1, r2, 0
- ldr r0, =0x00000105
- cmp r1, r0
- bne _080B0F6C
- movs r0, 0xC
- b _080B1000
- .pool
-_080B0F6C:
- movs r0, 0x83
- lsls r0, 1
- cmp r1, r0
- bne _080B0F78
- movs r0, 0xD
- b _080B1000
-_080B0F78:
- ldr r0, =0x00000107
- cmp r1, r0
- bne _080B0F88
- movs r0, 0xE
- b _080B1000
- .pool
-_080B0F88:
- movs r0, 0x84
- lsls r0, 1
- cmp r1, r0
- bne _080B0F98
- movs r0, 0xF
- b _080B1000
-_080B0F94:
- cmp r1, 0x26
- bne _080B0F9C
-_080B0F98:
- movs r0, 0x10
- b _080B1000
-_080B0F9C:
- cmp r1, 0x9
- beq _080B0FA8
- cmp r1, 0x35
- beq _080B0FA8
- cmp r1, 0x31
- bne _080B0FAC
-_080B0FA8:
- movs r0, 0x12
- b _080B1000
-_080B0FAC:
- cmp r1, 0x3
- beq _080B0FB8
- cmp r1, 0xD
- beq _080B0FB8
- cmp r1, 0xB
- bne _080B0FBC
-_080B0FB8:
- movs r0, 0x11
- b _080B1000
-_080B0FBC:
- ldrb r0, [r0, 0x18]
- movs r5, 0x1
- cmp r0, 0x1
- bne _080B0FC6
- movs r5, 0x2
-_080B0FC6:
- bl sub_80B0D24
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r4]
- adds r1, r5, 0
- bl reads_trainer_data_byte0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_80B0D88
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _080B0FF8
- ldr r0, =gUnknown_0854FE90
- lsls r1, r6, 1
- adds r0, 0x1
- b _080B0FFC
- .pool
-_080B0FF8:
- ldr r0, =gUnknown_0854FE90
- lsls r1, r6, 1
-_080B0FFC:
- adds r1, r0
- ldrb r0, [r1]
-_080B1000:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end reads_trainer_data_byte1_byte0x18
-
- thumb_func_start sub_80B100C
-sub_80B100C: @ 80B100C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gEnemyParty
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_80B0D88
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _080B1090
- cmp r5, 0xA
- beq _080B1048
- cmp r5, 0xA
- bgt _080B1040
- cmp r5, 0x3
- beq _080B105C
- b _080B106C
- .pool
-_080B1040:
- cmp r5, 0xD
- bgt _080B106C
- movs r0, 0x4
- b _080B1120
-_080B1048:
- ldr r4, =gUnknown_0854FEA4
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- b _080B1114
- .pool
-_080B105C:
- ldr r4, =gUnknown_0854FEA7
- bl Random
- ands r5, r0
- lsls r0, r5, 16
- b _080B111A
- .pool
-_080B106C:
- ldr r0, =0x000040ce
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3
- beq _080B10EC
- ldr r4, =gUnknown_0854FE98
- bl Random
- lsls r0, 16
- lsrs r0, 16
- b _080B1112
- .pool
-_080B1090:
- cmp r5, 0xA
- beq _080B10A6
- cmp r5, 0xA
- bgt _080B109E
- cmp r5, 0x3
- beq _080B10B8
- b _080B10C8
-_080B109E:
- cmp r5, 0xD
- bgt _080B10C8
- movs r0, 0x3
- b _080B1120
-_080B10A6:
- ldr r4, =gUnknown_0854FEA4
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- b _080B1114
- .pool
-_080B10B8:
- ldr r4, =gUnknown_0854FEA7
- bl Random
- ands r5, r0
- lsls r0, r5, 16
- b _080B111A
- .pool
-_080B10C8:
- ldr r0, =0x000040ce
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3
- beq _080B10EC
- ldr r4, =gUnknown_0854FE98
- bl Random
- lsls r0, 16
- lsrs r0, 16
- b _080B1112
- .pool
-_080B10EC:
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r2, =0x00000cb2
- adds r0, r1, r2
- ldrh r0, [r0]
- lsls r2, r0, 2
- ldr r3, =0x00000cb4
- adds r1, r3
- adds r2, r1, r2
- lsls r0, 1
- adds r0, 0x1
- lsls r0, 1
- adds r1, r0
- ldrh r0, [r1]
- ldrh r2, [r2]
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gUnknown_0854FE98
-_080B1112:
- movs r1, 0xC
-_080B1114:
- bl __umodsi3
- lsls r0, 16
-_080B111A:
- lsrs r0, 16
- adds r0, r4
- ldrb r0, [r0]
-_080B1120:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B100C
-
- thumb_func_start sub_80B1138
-sub_80B1138: @ 80B1138
- push {lr}
- ldr r0, =CB2_ChooseStarter
- bl SetMainCallback2
- ldr r1, =gMain
- ldr r0, =sub_80B1158
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1138
-
- thumb_func_start sub_80B1158
-sub_80B1158: @ 80B1158
- push {lr}
- sub sp, 0x8
- ldr r0, =0x00004023
- bl GetVarPointer
- ldr r2, =gSpecialVar_Result
- ldrh r1, [r2]
- strh r1, [r0]
- ldrh r0, [r2]
- bl GetStarterPokemon
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0x5
- movs r2, 0
- movs r3, 0
- bl ScriptGiveMon
- bl ResetTasks
- bl PlayBattleBGM
- ldr r0, =sub_80B11A8
- bl SetMainCallback2
- movs r0, 0
- bl sub_8145F10
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1158
-
- thumb_func_start sub_80B11A8
-sub_80B11A8: @ 80B11A8
- push {lr}
- bl UpdatePaletteFade
- bl RunTasks
- bl IsBattleTransitionDone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B11F0
- ldr r1, =gBattleTypeFlags
- movs r0, 0x10
- str r0, [r1]
- ldr r1, =gMain
- ldr r0, =sub_80B1204
- str r0, [r1, 0x8]
- bl FreeAllWindowBuffers
- ldr r0, =CB2_InitBattle
- bl SetMainCallback2
- bl prev_quest_postbuffer_cursor_backup_reset
- bl overworld_poison_timer_set
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
-_080B11F0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B11A8
-
- thumb_func_start sub_80B1204
-sub_80B1204: @ 80B1204
- push {lr}
- bl sav1_reset_battle_music_maybe
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1204
-
- thumb_func_start sub_80B1218
-sub_80B1218: @ 80B1218
- push {lr}
- movs r0, 0x8
- bl GetGameStat
- movs r1, 0x3C
- bl __umodsi3
- cmp r0, 0
- bne _080B122E
- bl sub_81DA57C
-_080B122E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1218
-
- thumb_func_start sub_80B1234
-sub_80B1234: @ 80B1234
- push {lr}
- movs r0, 0x9
- bl GetGameStat
- movs r1, 0x14
- bl __umodsi3
- cmp r0, 0
- bne _080B124A
- bl sub_81DA57C
-_080B124A:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1234
-
- thumb_func_start TrainerBattleLoadArg32
-@ u32 TrainerBattleLoadArg32(u8 *arg)
-TrainerBattleLoadArg32: @ 80B1250
- adds r2, r0, 0
- ldrb r0, [r2]
- ldrb r1, [r2, 0x1]
- lsls r1, 8
- orrs r0, r1
- ldrb r1, [r2, 0x2]
- lsls r1, 16
- orrs r0, r1
- ldrb r1, [r2, 0x3]
- lsls r1, 24
- orrs r0, r1
- bx lr
- thumb_func_end TrainerBattleLoadArg32
-
- thumb_func_start TrainerBattleLoadArg16
-@ u16 TrainerBattleLoadArg16(u8 *arg)
-TrainerBattleLoadArg16: @ 80B1268
- adds r1, r0, 0
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- lsls r1, 8
- orrs r0, r1
- bx lr
- thumb_func_end TrainerBattleLoadArg16
-
- thumb_func_start TrainerBattleLoadArg8
-@ u8 TrainerBattleLoadArg8(u8 *arg)
-TrainerBattleLoadArg8: @ 80B1274
- ldrb r0, [r0]
- bx lr
- thumb_func_end TrainerBattleLoadArg8
-
- thumb_func_start trainerflag_opponent
-trainerflag_opponent: @ 80B1278
- ldr r1, =gTrainerBattleOpponent_A
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end trainerflag_opponent
-
- thumb_func_start sub_80B1290
-sub_80B1290: @ 80B1290
- ldr r1, =gTrainerBattleOpponent_B
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end sub_80B1290
-
- thumb_func_start battle_exit_is_player_defeat
-battle_exit_is_player_defeat: @ 80B12A8
- push {lr}
- subs r0, 0x1
- cmp r0, 0x6
- bhi _080B12E0
- lsls r0, 2
- ldr r1, =_080B12C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B12C0:
- .4byte _080B12E0
- .4byte _080B12DC
- .4byte _080B12DC
- .4byte _080B12E0
- .4byte _080B12E0
- .4byte _080B12E0
- .4byte _080B12E0
-_080B12DC:
- movs r0, 0x1
- b _080B12E2
-_080B12E0:
- movs r0, 0
-_080B12E2:
- pop {r1}
- bx r1
- thumb_func_end battle_exit_is_player_defeat
-
- thumb_func_start ResetTrainerOpponentIds
-ResetTrainerOpponentIds: @ 80B12E8
- ldr r0, =gTrainerBattleOpponent_A
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gTrainerBattleOpponent_B
- strh r1, [r0]
- bx lr
- .pool
- thumb_func_end ResetTrainerOpponentIds
-
- thumb_func_start InitTrainerBattleVariables
-@ void InitTrainerBattleVariables()
-InitTrainerBattleVariables: @ 80B12FC
- push {lr}
- ldr r0, =gUnknown_02038BC8
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02038BFC
- ldrb r1, [r0]
- cmp r1, 0
- bne _080B132C
- ldr r0, =gUnknown_02038BD4
- str r1, [r0]
- ldr r0, =gUnknown_02038BDC
- str r1, [r0]
- ldr r0, =gUnknown_02038BF0
- b _080B1338
- .pool
-_080B132C:
- ldr r0, =gUnknown_02038BD8
- movs r1, 0
- str r1, [r0]
- ldr r0, =gUnknown_02038BE0
- str r1, [r0]
- ldr r0, =gUnknown_02038BF4
-_080B1338:
- str r1, [r0]
- ldr r1, =gUnknown_02038BD0
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_02038BE4
- movs r1, 0
- str r1, [r0]
- ldr r0, =gUnknown_02038BE8
- str r1, [r0]
- ldr r0, =gUnknown_02038BEC
- str r1, [r0]
- pop {r0}
- bx r0
- .pool
- thumb_func_end InitTrainerBattleVariables
-
- thumb_func_start TrainerBattleLoadArgs
-@ void TrainerBattleLoadArgs(struct TrainerBattleArgSpec *argSpecs, u8 *args)
-TrainerBattleLoadArgs: @ 80B1370
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
-_080B1376:
- ldrb r0, [r4, 0x4]
- cmp r0, 0x6
- bhi _080B13E8
- lsls r0, 2
- ldr r1, =_080B138C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B138C:
- .4byte _080B13A8
- .4byte _080B13B6
- .4byte _080B13C4
- .4byte _080B13D2
- .4byte _080B13DA
- .4byte _080B13E2
- .4byte _080B13EC
-_080B13A8:
- adds r0, r5, 0
- bl TrainerBattleLoadArg8
- ldr r1, [r4]
- strb r0, [r1]
- adds r5, 0x1
- b _080B13E8
-_080B13B6:
- adds r0, r5, 0
- bl TrainerBattleLoadArg16
- ldr r1, [r4]
- strh r0, [r1]
- adds r5, 0x2
- b _080B13E8
-_080B13C4:
- adds r0, r5, 0
- bl TrainerBattleLoadArg32
- ldr r1, [r4]
- str r0, [r1]
- adds r5, 0x4
- b _080B13E8
-_080B13D2:
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1]
- b _080B13E8
-_080B13DA:
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1]
- b _080B13E8
-_080B13E2:
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1]
-_080B13E8:
- adds r4, 0x8
- b _080B1376
-_080B13EC:
- ldr r0, [r4]
- str r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end TrainerBattleLoadArgs
-
- thumb_func_start battle_80801F0
-battle_80801F0: @ 80B13F8
- push {lr}
- ldr r0, =gUnknown_02038BD0
- ldrh r1, [r0]
- cmp r1, 0
- beq _080B141A
- ldr r0, =gSpecialVar_LastTalked
- strh r1, [r0]
- lsls r0, r1, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl GetFieldObjectIdByLocalIdAndMap
- ldr r1, =gSelectedMapObject
- strb r0, [r1]
-_080B141A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end battle_80801F0
-
- thumb_func_start BattleSetup_ConfigureTrainerBattle
-@ u8 *BattleSetup_ConfigureTrainerBattle(u8 *args)
-BattleSetup_ConfigureTrainerBattle: @ 80B1430
- push {r4,r5,lr}
- adds r5, r0, 0
- bl InitTrainerBattleVariables
- ldr r4, =gUnknown_02038BC8
- adds r0, r5, 0
- bl TrainerBattleLoadArg8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- ldrh r0, [r4]
- subs r0, 0x1
- cmp r0, 0xB
- bls _080B1450
- b _080B15F4
-_080B1450:
- lsls r0, 2
- ldr r1, =_080B1464
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B1464:
- .4byte _080B14CC
- .4byte _080B14B0
- .4byte _080B1494
- .4byte _080B14A8
- .4byte _080B1514
- .4byte _080B14D4
- .4byte _080B14EC
- .4byte _080B14D4
- .4byte _080B153C
- .4byte _080B1590
- .4byte _080B1598
- .4byte _080B15A8
-_080B1494:
- ldr r0, =gUnknown_0854FF84
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- ldr r0, =EventScript_2713C2
- b _080B161E
- .pool
-_080B14A8:
- ldr r0, =gUnknown_0854FF3C
- b _080B14D6
- .pool
-_080B14B0:
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B14C4
- ldr r0, =gUnknown_0854FEF4
- b _080B15FE
- .pool
-_080B14C4:
- ldr r0, =gUnknown_0855005C
- b _080B1616
- .pool
-_080B14CC:
- ldr r0, =gUnknown_0854FEF4
- b _080B15FE
- .pool
-_080B14D4:
- ldr r0, =gUnknown_0854FFCC
-_080B14D6:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r0, =EventScript_27138A
- b _080B161E
- .pool
-_080B14EC:
- ldr r0, =gUnknown_0854FF3C
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r0, [r4]
- bl sub_80B2234
- strh r0, [r4]
- ldr r0, =EventScript_2713F8
- b _080B161E
- .pool
-_080B1514:
- ldr r0, =gUnknown_0854FEAC
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r0, [r4]
- bl sub_80B2234
- strh r0, [r4]
- ldr r0, =EventScript_2713D1
- b _080B161E
- .pool
-_080B153C:
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B156C
- ldr r0, =gUnknown_0854FEAC
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl sub_81A9AA8
- ldr r1, =gTrainerBattleOpponent_A
- b _080B157E
- .pool
-_080B156C:
- ldr r0, =gUnknown_08550014
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl sub_81A9AA8
-_080B157C:
- ldr r1, =gTrainerBattleOpponent_B
-_080B157E:
- strh r0, [r1]
- b _080B161C
- .pool
-_080B1590:
- ldr r0, =gUnknown_0854FEAC
- b _080B159A
- .pool
-_080B1598:
- ldr r0, =gUnknown_08550014
-_080B159A:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- movs r0, 0
- b _080B161E
- .pool
-_080B15A8:
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B15D8
- ldr r0, =gUnknown_0854FEAC
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl battle_init
- ldr r1, =gTrainerBattleOpponent_A
- b _080B157E
- .pool
-_080B15D8:
- ldr r0, =gUnknown_08550014
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl battle_init
- b _080B157C
- .pool
-_080B15F4:
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B1614
- ldr r0, =gUnknown_0854FEAC
-_080B15FE:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- b _080B161C
- .pool
-_080B1614:
- ldr r0, =gUnknown_08550014
-_080B1616:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
-_080B161C:
- ldr r0, =EventScript_271362
-_080B161E:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end BattleSetup_ConfigureTrainerBattle
-
- thumb_func_start SingleTrainerWantsBattle
-@ void SingleTrainerWantsBattle(u8 trainerFieldObjectId, u8 *trainerScript)
-SingleTrainerWantsBattle: @ 80B162C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSelectedMapObject
- strb r0, [r2]
- ldr r4, =gSpecialVar_LastTalked
- ldr r3, =gMapObjects
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r0, [r2, 0x8]
- strh r0, [r4]
- adds r1, 0x1
- adds r0, r1, 0
- bl BattleSetup_ConfigureTrainerBattle
- ldr r0, =EventScript_271354
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SingleTrainerWantsBattle
-
- thumb_func_start TwoTrainersWantBattle
-@ void TwoTrainersWantBattle(u8 trainerFieldObjectId, u8 *trainerScript)
-TwoTrainersWantBattle: @ 80B1670
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSelectedMapObject
- strb r0, [r2]
- ldr r4, =gSpecialVar_LastTalked
- ldr r3, =gMapObjects
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r0, [r2, 0x8]
- strh r0, [r4]
- adds r1, 0x1
- adds r0, r1, 0
- bl BattleSetup_ConfigureTrainerBattle
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end TwoTrainersWantBattle
-
- thumb_func_start TwoTrainersWantBattleExecuteScript
-@ void TwoTrainersWantBattleExecuteScript()
-TwoTrainersWantBattleExecuteScript: @ 80B16A4
- push {lr}
- ldr r0, =EventScript_271354
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .pool
- thumb_func_end TwoTrainersWantBattleExecuteScript
-
- thumb_func_start GetTrainerFlagFromScriptPointer
-@ u8 GetTrainerFlagFromScriptPointer(u8 *scriptPointer)
-GetTrainerFlagFromScriptPointer: @ 80B16B8
- push {lr}
- adds r0, 0x2
- bl TrainerBattleLoadArg16
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetTrainerFlagFromScriptPointer
-
- thumb_func_start sub_80B16D8
-sub_80B16D8: @ 80B16D8
- push {r4,lr}
- ldr r0, =gSelectedMapObject
- ldrb r0, [r0]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, =gMapObjects
- adds r4, r0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl npc_running_behaviour_by_direction
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl npc_set_running_behaviour_etc
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B16D8
-
- thumb_func_start sub_80B170C
-sub_80B170C: @ 80B170C
- ldr r0, =gUnknown_02038BC8
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_80B170C
-
- thumb_func_start check_trainer_flag
-@ pokescrcmd
-check_trainer_flag: @ 80B1718
- push {lr}
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B1734
- ldr r0, =gSelectedMapObject
- ldrb r0, [r0]
- bl GetBattlePyramidTrainerFlag
- b _080B1752
- .pool
-_080B1734:
- bl InTrainerHill
- cmp r0, 0
- bne _080B174A
- bl trainerflag_opponent
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- b _080B1752
-_080B174A:
- ldr r0, =gSelectedMapObject
- ldrb r0, [r0]
- bl GetTrainerHillTrainerFlag
-_080B1752:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end check_trainer_flag
-
- thumb_func_start rom_npc_set_flag_for_script_id
-rom_npc_set_flag_for_script_id: @ 80B1760
- push {lr}
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r0, [r0]
- cmp r0, 0
- beq _080B1776
- bl sub_80B1290
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
-_080B1776:
- bl trainerflag_opponent
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end rom_npc_set_flag_for_script_id
-
- thumb_func_start sub_80B178C
-sub_80B178C: @ 80B178C
- push {lr}
- bl trainerflag_opponent
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end sub_80B178C
-
- thumb_func_start HasTrainerAlreadyBeenFought
-HasTrainerAlreadyBeenFought: @ 80B17A0
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end HasTrainerAlreadyBeenFought
-
- thumb_func_start trainer_flag_set
-trainer_flag_set: @ 80B17B8
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end trainer_flag_set
-
- thumb_func_start trainer_flag_clear
-trainer_flag_clear: @ 80B17CC
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagClear
- pop {r0}
- bx r0
- thumb_func_end trainer_flag_clear
-
- thumb_func_start BattleSetup_StartTrainerBattle
-BattleSetup_StartTrainerBattle: @ 80B17E0
- push {r4,lr}
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080B17FC
- ldr r1, =gBattleTypeFlags
- ldr r0, =0x00008009
- b _080B1800
- .pool
-_080B17FC:
- ldr r1, =gBattleTypeFlags
- movs r0, 0x8
-_080B1800:
- str r0, [r1]
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B1884
- ldr r0, =0x0000400e
- movs r1, 0
- bl VarSet
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 14
- orrs r0, r1
- str r0, [r2]
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080B1864
- movs r0, 0x1
- bl sub_816306C
- ldr r4, =gEnemyParty + 100
- adds r0, r4, 0
- bl ZeroMonData
- adds r0, r4, 0
- adds r0, 0x64
- bl ZeroMonData
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, r1
- bl ZeroMonData
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r4, r1
- bl ZeroMonData
- b _080B187A
- .pool
-_080B1864:
- movs r0, 0x1
- bl sub_8163048
- ldr r4, =gEnemyParty + 100
- adds r0, r4, 0
- bl ZeroMonData
- adds r4, 0x64
- adds r0, r4, 0
- bl ZeroMonData
-_080B187A:
- bl sub_81A9B04
- b _080B18B8
- .pool
-_080B1884:
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080B18B8
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 19
- orrs r0, r1
- str r0, [r2]
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080B18B0
- bl sub_81D639C
- b _080B18B4
- .pool
-_080B18B0:
- bl sub_81D6384
-_080B18B4:
- bl sub_81D61E8
-_080B18B8:
- ldr r1, =gUnknown_02038BF9
- ldr r2, =gUnknown_030060A8
- ldrb r0, [r2]
- strb r0, [r1]
- movs r1, 0
- strb r1, [r2]
- ldr r0, =gUnknown_02038BF8
- strb r1, [r0]
- ldr r1, =gUnknown_03006080
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gMain
- ldr r0, =sub_80B1918
- str r0, [r1, 0x8]
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B18E8
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080B1908
-_080B18E8:
- bl sub_80B0828
- b _080B190C
- .pool
-_080B1908:
- bl task_add_01_battle_start_with_music_and_stats
-_080B190C:
- bl ScriptContext1_Stop
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartTrainerBattle
-
- thumb_func_start sub_80B1918
-sub_80B1918: @ 80B1918
- push {lr}
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _080B1946
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- bl battle_exit_is_player_defeat
- cmp r0, 0x1
- bne _080B1968
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B1946
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080B195C
-_080B1946:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- b _080B198A
- .pool
-_080B195C:
- ldr r0, =c2_whiteout
- bl SetMainCallback2
- b _080B198A
- .pool
-_080B1968:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B198A
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- bne _080B198A
- bl sub_80B20BC
- bl rom_npc_set_flag_for_script_id
-_080B198A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1918
-
- thumb_func_start sub_80B1994
-sub_80B1994: @ 80B1994
- push {lr}
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _080B19B4
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- b _080B19E2
- .pool
-_080B19B4:
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- bl battle_exit_is_player_defeat
- cmp r0, 0x1
- bne _080B19D0
- ldr r0, =c2_whiteout
- bl SetMainCallback2
- b _080B19E2
- .pool
-_080B19D0:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- bl sub_80B20BC
- bl rom_npc_set_flag_for_script_id
- bl sub_80B22BC
-_080B19E2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1994
-
- thumb_func_start sub_80B19EC
-sub_80B19EC: @ 80B19EC
- push {lr}
- ldr r1, =gBattleTypeFlags
- movs r0, 0x8
- str r0, [r1]
- ldr r1, =gMain
- ldr r0, =sub_80B1994
- str r0, [r1, 0x8]
- bl task_add_01_battle_start_with_music_and_stats
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B19EC
-
- thumb_func_start sub_80B1A14
-sub_80B1A14: @ 80B1A14
- push {lr}
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B1A7C
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _080B1A44
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl sub_81A9AA8
- lsls r0, 16
- lsrs r0, 16
- bl sub_81A9EDC
- b _080B1AD8
- .pool
-_080B1A44:
- ldr r3, =gMapObjects
- ldr r2, =gUnknown_03006090
- ldr r0, =gUnknown_02038BFC
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x8]
- bl sub_81A9AA8
- lsls r0, 16
- lsrs r0, 16
- bl sub_81A9EDC
- b _080B1AD8
- .pool
-_080B1A7C:
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080B1AEC
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _080B1AAC
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl battle_init
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x2
- bl sub_81D572C
- b _080B1AD8
- .pool
-_080B1AAC:
- ldr r3, =gMapObjects
- ldr r2, =gUnknown_03006090
- ldr r0, =gUnknown_02038BFC
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x8]
- bl battle_init
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x2
- bl sub_81D572C
-_080B1AD8:
- bl sub_80982B8
- b _080B1AF4
- .pool
-_080B1AEC:
- bl sub_80B1C7C
- bl ShowFieldMessage
-_080B1AF4:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1A14
-
- thumb_func_start BattleSetup_GetScriptAddrAfterBattle
-BattleSetup_GetScriptAddrAfterBattle: @ 80B1AF8
- push {lr}
- ldr r0, =gUnknown_02038BEC
- ldr r0, [r0]
- cmp r0, 0
- bne _080B1B04
- ldr r0, =EventScript_2C8436
-_080B1B04:
- pop {r1}
- bx r1
- .pool
- thumb_func_end BattleSetup_GetScriptAddrAfterBattle
-
- thumb_func_start BattleSetup_GetTrainerPostBattleScript
-BattleSetup_GetTrainerPostBattleScript: @ 80B1B10
- push {lr}
- ldr r1, =gUnknown_02038BF8
- ldrb r2, [r1]
- cmp r2, 0
- beq _080B1B3C
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gUnknown_02038BF4
- ldr r2, [r0]
- cmp r2, 0
- beq _080B1B54
- ldr r1, =gUnknown_03006080
- movs r0, 0x1
- strh r0, [r1]
- adds r0, r2, 0
- b _080B1B56
- .pool
-_080B1B3C:
- ldr r0, =gUnknown_02038BF0
- ldr r1, [r0]
- cmp r1, 0
- beq _080B1B54
- ldr r0, =gUnknown_03006080
- strh r2, [r0]
- adds r0, r1, 0
- b _080B1B56
- .pool
-_080B1B54:
- ldr r0, =LavaridgeTown_Gym_1F_EventScript_2742E6
-_080B1B56:
- pop {r1}
- bx r1
- .pool
- thumb_func_end BattleSetup_GetTrainerPostBattleScript
-
- thumb_func_start special_trainer_unable_to_battle
-special_trainer_unable_to_battle: @ 80B1B60
- push {lr}
- bl sub_80B1D18
- bl ShowFieldMessage
- pop {r0}
- bx r0
- thumb_func_end special_trainer_unable_to_battle
-
- thumb_func_start SetUpTrainerEncounterMusic
-@ void SetUpTrainerEncounterMusic()
-SetUpTrainerEncounterMusic: @ 80B1B70
- push {lr}
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B1B88
- ldr r0, =gTrainerBattleOpponent_A
- b _080B1B8A
- .pool
-_080B1B88:
- ldr r0, =gTrainerBattleOpponent_B
-_080B1B8A:
- ldrh r1, [r0]
- ldr r0, =gUnknown_02038BC8
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080B1C62
- cmp r0, 0x8
- beq _080B1C62
- adds r0, r1, 0
- bl GetTrainerEncounterMusicId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD
- bhi _080B1C5C
- lsls r0, 2
- ldr r1, =_080B1BBC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B1BBC:
- .4byte _080B1BF4
- .4byte _080B1BFA
- .4byte _080B1C04
- .4byte _080B1C5C
- .4byte _080B1C0C
- .4byte _080B1C12
- .4byte _080B1C1C
- .4byte _080B1C24
- .4byte _080B1C2C
- .4byte _080B1C34
- .4byte _080B1C3C
- .4byte _080B1C42
- .4byte _080B1C4C
- .4byte _080B1C54
-_080B1BF4:
- movs r0, 0xBE
- lsls r0, 1
- b _080B1C5E
-_080B1BFA:
- ldr r0, =0x00000197
- b _080B1C5E
- .pool
-_080B1C04:
- ldr r0, =0x0000017b
- b _080B1C5E
- .pool
-_080B1C0C:
- movs r0, 0xD0
- lsls r0, 1
- b _080B1C5E
-_080B1C12:
- ldr r0, =0x000001a1
- b _080B1C5E
- .pool
-_080B1C1C:
- ldr r0, =0x000001a3
- b _080B1C5E
- .pool
-_080B1C24:
- ldr r0, =0x000001b9
- b _080B1C5E
- .pool
-_080B1C2C:
- ldr r0, =0x00000181
- b _080B1C5E
- .pool
-_080B1C34:
- ldr r0, =0x000001c1
- b _080B1C5E
- .pool
-_080B1C3C:
- movs r0, 0xE1
- lsls r0, 1
- b _080B1C5E
-_080B1C42:
- ldr r0, =0x000001c3
- b _080B1C5E
- .pool
-_080B1C4C:
- ldr r0, =0x000001c5
- b _080B1C5E
- .pool
-_080B1C54:
- ldr r0, =0x0000018d
- b _080B1C5E
- .pool
-_080B1C5C:
- ldr r0, =0x000001a7
-_080B1C5E:
- bl PlayNewMapMusic
-_080B1C62:
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetUpTrainerEncounterMusic
-
- thumb_func_start ReturnEmptyStringIfNull
-@ u8 *ReturnEmptyStringIfNull(u8 *str)
-ReturnEmptyStringIfNull: @ 80B1C6C
- push {lr}
- cmp r0, 0
- bne _080B1C74
- ldr r0, =gText_EmptyString2
-_080B1C74:
- pop {r1}
- bx r1
- .pool
- thumb_func_end ReturnEmptyStringIfNull
-
- thumb_func_start sub_80B1C7C
-sub_80B1C7C: @ 80B1C7C
- push {lr}
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B1C94
- ldr r0, =gUnknown_02038BD8
- b _080B1C96
- .pool
-_080B1C94:
- ldr r0, =gUnknown_02038BD4
-_080B1C96:
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B1C7C
-
- thumb_func_start GetTrainer1LoseText
-GetTrainer1LoseText: @ 80B1CA4
- push {r4,lr}
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _080B1CBC
- bl sub_80EA250
- b _080B1CC0
- .pool
-_080B1CBC:
- ldr r0, =gUnknown_02038BDC
- ldr r0, [r0]
-_080B1CC0:
- ldr r4, =gStringVar4
- bl ReturnEmptyStringIfNull
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetTrainer1LoseText
-
- thumb_func_start GetTrainer2LoseText
-GetTrainer2LoseText: @ 80B1CE0
- push {r4,lr}
- ldr r4, =gStringVar4
- ldr r0, =gUnknown_02038BE0
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetTrainer2LoseText
-
- thumb_func_start sub_80B1D04
-sub_80B1D04: @ 80B1D04
- push {lr}
- ldr r0, =gUnknown_02038BE4
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B1D04
-
- thumb_func_start sub_80B1D18
-sub_80B1D18: @ 80B1D18
- push {lr}
- ldr r0, =gUnknown_02038BE8
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B1D18
-
- thumb_func_start sub_80B1D2C
-sub_80B1D2C: @ 80B1D2C
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- movs r3, 0
- adds r2, r0, 0
-_080B1D36:
- ldrh r0, [r2]
- cmp r0, r1
- bne _080B1D40
- adds r0, r3, 0
- b _080B1D4C
-_080B1D40:
- adds r2, 0x10
- adds r3, 0x1
- cmp r3, 0x4D
- ble _080B1D36
- movs r0, 0x1
- negs r0, r0
-_080B1D4C:
- pop {r1}
- bx r1
- thumb_func_end sub_80B1D2C
-
- thumb_func_start sub_80B1D50
-sub_80B1D50: @ 80B1D50
- push {r4,r5,lr}
- lsls r1, 16
- lsrs r5, r1, 16
- movs r4, 0
- adds r2, r0, 0
-_080B1D5A:
- movs r1, 0
- ldrh r0, [r2]
- cmp r0, 0
- beq _080B1D80
- movs r3, 0
-_080B1D64:
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, r5
- bne _080B1D70
- adds r0, r4, 0
- b _080B1D8C
-_080B1D70:
- adds r3, 0x2
- adds r1, 0x1
- cmp r1, 0x4
- bgt _080B1D80
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- bne _080B1D64
-_080B1D80:
- adds r2, 0x10
- adds r4, 0x1
- cmp r4, 0x4D
- ble _080B1D5A
- movs r0, 0x1
- negs r0, r0
-_080B1D8C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B1D50
-
- thumb_func_start sub_80B1D94
-sub_80B1D94: @ 80B1D94
- push {lr}
- cmp r0, 0x48
- ble _080B1D9E
- movs r0, 0x1
- b _080B1DB8
-_080B1D9E:
- cmp r0, 0x40
- bne _080B1DB6
- movs r0, 0x7E
- bl FlagGet
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _080B1DB2
- movs r1, 0x1
-_080B1DB2:
- adds r0, r1, 0
- b _080B1DB8
-_080B1DB6:
- movs r0, 0
-_080B1DB8:
- pop {r1}
- bx r1
- thumb_func_end sub_80B1D94
-
- thumb_func_start sub_80B1DBC
-sub_80B1DBC: @ 80B1DBC
- push {r4-r6,lr}
- adds r6, r1, 0
- movs r5, 0x1
- lsls r1, r6, 4
- adds r1, r0
- adds r4, r1, 0x2
- b _080B1DCE
-_080B1DCA:
- adds r4, 0x2
- adds r5, 0x1
-_080B1DCE:
- cmp r5, 0x4
- bgt _080B1DE2
- ldrh r0, [r4]
- cmp r0, 0
- beq _080B1DE2
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- bne _080B1DCA
-_080B1DE2:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009ca
- adds r0, r1
- adds r0, r6
- strb r5, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1DBC
-
- thumb_func_start sub_80B1DFC
-sub_80B1DFC: @ 80B1DFC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- movs r7, 0
- movs r5, 0
- adds r4, r6, 0
- adds r4, 0xA
-_080B1E1A:
- ldrh r0, [r4]
- cmp r0, r9
- bne _080B1E74
- ldrh r0, [r4, 0x2]
- cmp r0, r8
- bne _080B1E74
- adds r0, r5, 0
- bl sub_80B1D94
- cmp r0, 0
- bne _080B1E74
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009ca
- adds r0, r1
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B1E72
- movs r1, 0xAE
- lsls r1, 1
- adds r0, r5, r1
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080B1E74
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bhi _080B1E74
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80B1DBC
-_080B1E72:
- movs r7, 0x1
-_080B1E74:
- adds r4, 0x10
- adds r5, 0x1
- cmp r5, 0x40
- ble _080B1E1A
- adds r0, r7, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B1DFC
-
- thumb_func_start sub_80B1E94
-sub_80B1E94: @ 80B1E94
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gUnknown_085500A4
- lsls r0, r4, 4
- adds r0, r5
- ldrh r0, [r0]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B1EB4
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80B1DBC
-_080B1EB4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1E94
-
- thumb_func_start sub_80B1EC0
-sub_80B1EC0: @ 80B1EC0
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- movs r1, 0
- adds r3, r0, 0
- adds r3, 0xA
- ldr r5, =gSaveBlock1Ptr
-_080B1ED2:
- ldrh r0, [r3]
- cmp r0, r4
- bne _080B1EF8
- ldrh r0, [r3, 0x2]
- cmp r0, r2
- bne _080B1EF8
- ldr r0, [r5]
- ldr r6, =0x000009ca
- adds r0, r6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B1EF8
- movs r0, 0x1
- b _080B1F02
- .pool
-_080B1EF8:
- adds r3, 0x10
- adds r1, 0x1
- cmp r1, 0x4D
- ble _080B1ED2
- movs r0, 0
-_080B1F02:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B1EC0
-
- thumb_func_start sub_80B1F08
-sub_80B1F08: @ 80B1F08
- push {r4,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- movs r1, 0
- adds r3, r0, 0
- adds r3, 0xA
-_080B1F18:
- ldrh r0, [r3]
- cmp r0, r4
- bne _080B1F28
- ldrh r0, [r3, 0x2]
- cmp r0, r2
- bne _080B1F28
- movs r0, 0x1
- b _080B1F32
-_080B1F28:
- adds r3, 0x10
- adds r1, 0x1
- cmp r1, 0x4D
- ble _080B1F18
- movs r0, 0
-_080B1F32:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B1F08
-
- thumb_func_start sub_80B1F38
-sub_80B1F38: @ 80B1F38
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D2C
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080B1F6C
- cmp r1, 0x63
- bgt _080B1F6C
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000009ca
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B1F6C
- movs r0, 0x1
- b _080B1F6E
- .pool
-_080B1F6C:
- movs r0, 0
-_080B1F6E:
- pop {r1}
- bx r1
- thumb_func_end sub_80B1F38
-
- thumb_func_start sub_80B1F74
-sub_80B1F74: @ 80B1F74
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D50
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080B1FA8
- cmp r1, 0x63
- bgt _080B1FA8
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000009ca
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B1FA8
- movs r0, 0x1
- b _080B1FAA
- .pool
-_080B1FA8:
- movs r0, 0
-_080B1FAA:
- pop {r1}
- bx r1
- thumb_func_end sub_80B1F74
-
- thumb_func_start sub_80B1FB0
-sub_80B1FB0: @ 80B1FB0
- push {r4-r7,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D2C
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080B1FD8
- movs r0, 0
- b _080B1FFE
-_080B1FCA:
- subs r0, r6, 0x1
- lsls r0, 1
- adds r0, r7, r0
- ldrh r0, [r0]
- b _080B1FFE
-_080B1FD4:
- ldrh r0, [r5]
- b _080B1FFE
-_080B1FD8:
- lsls r0, r1, 4
- adds r7, r4, r0
- movs r6, 0x1
- adds r5, r7, 0x2
- adds r4, r5, 0
-_080B1FE2:
- ldrh r0, [r4]
- cmp r0, 0
- beq _080B1FCA
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- beq _080B1FD4
- adds r4, 0x2
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _080B1FE2
- ldrh r0, [r7, 0x8]
-_080B1FFE:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80B1FB0
-
- thumb_func_start sub_80B2004
-sub_80B2004: @ 80B2004
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D2C
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080B2032
- movs r0, 0
- b _080B2054
-_080B201E:
- subs r0, r5, 0x1
- lsls r0, 1
- adds r0, r6, r0
- ldrh r0, [r0]
- b _080B2054
-_080B2028:
- subs r0, r5, 0x1
- lsls r0, 1
- adds r0, r6, r0
- ldrh r0, [r0]
- b _080B2054
-_080B2032:
- lsls r0, r1, 4
- adds r6, r4, r0
- movs r5, 0x1
- adds r4, r6, 0x2
-_080B203A:
- ldrh r0, [r4]
- cmp r0, 0
- beq _080B201E
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- beq _080B2028
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x4
- ble _080B203A
- ldrh r0, [r6, 0x8]
-_080B2054:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B2004
-
- thumb_func_start sub_80B205C
-sub_80B205C: @ 80B205C
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D50
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080B207E
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000009ca
- adds r0, r2
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080B207E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B205C
-
- thumb_func_start sub_80B208C
-sub_80B208C: @ 80B208C
- push {r4,lr}
- adds r3, r0, 0
- movs r1, 0
- movs r4, 0xAE
- lsls r4, 1
- ldr r2, =gUnknown_085500A4
-_080B2098:
- ldrh r0, [r2]
- cmp r0, r3
- bne _080B20A8
- adds r0, r1, r4
- b _080B20B2
- .pool
-_080B20A8:
- adds r2, 0x10
- adds r1, 0x1
- cmp r1, 0x4D
- ble _080B2098
- ldr r0, =0x0000ffff
-_080B20B2:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B208C
-
- thumb_func_start sub_80B20BC
-sub_80B20BC: @ 80B20BC
- push {lr}
- ldr r0, =0x0000012f
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080B20E2
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r0, [r0]
- bl sub_80B208C
- adds r1, r0, 0
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _080B20E2
- lsls r0, r1, 16
- lsrs r0, 16
- bl FlagSet
-_080B20E2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B20BC
-
- thumb_func_start sub_80B20F4
-sub_80B20F4: @ 80B20F4
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D2C
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080B211E
- lsls r0, r1, 4
- adds r0, r4
- ldrh r0, [r0, 0x2]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- beq _080B211E
- movs r0, 0x1
- b _080B2120
-_080B211E:
- movs r0, 0
-_080B2120:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B20F4
-
- thumb_func_start sub_80B2128
-sub_80B2128: @ 80B2128
- push {r4-r6,lr}
- movs r6, 0
- movs r5, 0
- ldr r4, =gUnknown_08550584
-_080B2130:
- ldrh r0, [r4]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B214C
- adds r6, 0x1
- cmp r6, 0x4
- ble _080B214C
- movs r0, 0x1
- b _080B2156
- .pool
-_080B214C:
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x7
- bls _080B2130
- movs r0, 0
-_080B2156:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B2128
-
- thumb_func_start sub_80B215C
-sub_80B215C: @ 80B215C
- push {lr}
- bl sub_80B2128
- cmp r0, 0
- beq _080B2184
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000009c8
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0xFE
- bls _080B2180
- movs r0, 0xFF
- b _080B2182
- .pool
-_080B2180:
- adds r0, 0x1
-_080B2182:
- strh r0, [r1]
-_080B2184:
- pop {r0}
- bx r0
- thumb_func_end sub_80B215C
-
- thumb_func_start sub_80B2188
-sub_80B2188: @ 80B2188
- push {lr}
- bl sub_80B2128
- cmp r0, 0
- beq _080B21AC
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009c8
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xFE
- bls _080B21AC
- movs r0, 0x1
- b _080B21AE
- .pool
-_080B21AC:
- movs r0, 0
-_080B21AE:
- pop {r1}
- bx r1
- thumb_func_end sub_80B2188
-
- thumb_func_start sub_80B21B4
-sub_80B21B4: @ 80B21B4
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- bl sub_80B2188
- cmp r0, 0
- beq _080B21E0
- ldr r0, =gUnknown_085500A4
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_80B1DFC
- cmp r0, 0x1
- bne _080B21E0
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009c8
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
-_080B21E0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B21B4
-
- thumb_func_start sub_80B21F4
-sub_80B21F4: @ 80B21F4
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gUnknown_085500A4
- adds r1, r3, 0
- bl sub_80B1EC0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B21F4
-
- thumb_func_start sub_80B2214
-sub_80B2214: @ 80B2214
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gUnknown_085500A4
- adds r1, r3, 0
- bl sub_80B1F08
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B2214
-
- thumb_func_start sub_80B2234
-sub_80B2234: @ 80B2234
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, =gUnknown_085500A4
- bl sub_80B1FB0
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B2234
-
- thumb_func_start sub_80B2250
-sub_80B2250: @ 80B2250
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, =gUnknown_085500A4
- bl sub_80B2004
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B2250
-
- thumb_func_start sub_80B226C
-sub_80B226C: @ 80B226C
- push {r4,r5,lr}
- ldr r5, =gUnknown_085500A4
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r1, [r4]
- adds r0, r5, 0
- bl sub_80B1F38
- lsls r0, 24
- cmp r0, 0
- bne _080B2298
- ldrh r1, [r4]
- adds r0, r5, 0
- bl sub_80B20F4
- lsls r0, 24
- lsrs r0, 24
- b _080B229A
- .pool
-_080B2298:
- movs r0, 0x1
-_080B229A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B226C
-
- thumb_func_start sub_80B22A0
-sub_80B22A0: @ 80B22A0
- push {lr}
- ldr r0, =gUnknown_085500A4
- ldr r1, =gTrainerBattleOpponent_A
- ldrh r1, [r1]
- bl sub_80B1F74
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B22A0
-
- thumb_func_start sub_80B22BC
-sub_80B22BC: @ 80B22BC
- push {lr}
- ldr r0, =gUnknown_085500A4
- ldr r1, =gTrainerBattleOpponent_A
- ldrh r1, [r1]
- bl sub_80B205C
- bl rom_npc_set_flag_for_script_id
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B22BC
-
- thumb_func_start CheckIfMultipleTrainersWantBattle
-CheckIfMultipleTrainersWantBattle: @ 80B22D8
- push {lr}
- ldr r1, =gUnknown_02038BF9
- ldrb r0, [r1]
- cmp r0, 0x1
- bls _080B2300
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gUnknown_02038BF8
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, =gSpecialVar_Result
- movs r0, 0x1
- b _080B230A
- .pool
-_080B2300:
- ldr r1, =gUnknown_02038BF8
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gSpecialVar_Result
- movs r0, 0
-_080B230A:
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end CheckIfMultipleTrainersWantBattle
-
- thumb_func_start sub_80B2318
-sub_80B2318: @ 80B2318
- push {r4-r7,lr}
- lsls r0, 16
- ldr r7, =gUnknown_085500A4
- lsrs r4, r0, 12
- adds r6, r4, r7
- ldrh r0, [r6]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080B2338
- movs r0, 0
- b _080B2364
- .pool
-_080B2338:
- movs r5, 0x1
- adds r0, r4, 0x2
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, 0
- beq _080B2360
- adds r4, r6, 0x2
-_080B2346:
- ldrh r0, [r4]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- beq _080B2360
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x4
- bgt _080B2360
- ldrh r0, [r4]
- cmp r0, 0
- bne _080B2346
-_080B2360:
- lsls r0, r5, 16
- lsrs r0, 16
-_080B2364:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80B2318
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 42dcb431a..96769dcbf 100755
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -3534,7 +3534,7 @@ _08163E10:
bl sub_80B100C
lsls r0, 24
lsrs r0, 24
- bl sub_8145EF4
+ bl BattleTransition_StartOnField
b _08163E68
.pool
_08163E2C:
@@ -3544,7 +3544,7 @@ _08163E2C:
ldr r5, =0x00000c03
adds r0, r5, 0
bl sub_8165404
- ldr r4, =gUnknown_02038BFC
+ ldr r4, =gApproachingTrainerId
movs r0, 0
strb r0, [r4]
ldr r0, =MossdeepCity_SpaceCenter_2F_EventScript_224157 + 1
@@ -3561,7 +3561,7 @@ _08163E2C:
movs r0, 0
bl PlayMapChosenOrBattleBGM
movs r0, 0x12
- bl sub_8145EF4
+ bl BattleTransition_StartOnField
_08163E68:
add sp, 0x4
pop {r4-r6}
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index 6ffa17320..b7f2746ec 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -57,8 +57,8 @@ TestBattleTransition: @ 8145EDC
.pool
thumb_func_end TestBattleTransition
- thumb_func_start sub_8145EF4
-sub_8145EF4: @ 8145EF4
+ thumb_func_start BattleTransition_StartOnField
+BattleTransition_StartOnField: @ 8145EF4
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -69,17 +69,17 @@ sub_8145EF4: @ 8145EF4
pop {r0}
bx r0
.pool
- thumb_func_end sub_8145EF4
+ thumb_func_end BattleTransition_StartOnField
- thumb_func_start sub_8145F10
-sub_8145F10: @ 8145F10
+ thumb_func_start BattleTransition_Start
+BattleTransition_Start: @ 8145F10
push {lr}
lsls r0, 24
lsrs r0, 24
bl LaunchBattleTransitionTask
pop {r0}
bx r0
- thumb_func_end sub_8145F10
+ thumb_func_end BattleTransition_Start
thumb_func_start IsBattleTransitionDone
IsBattleTransitionDone: @ 8145F20
diff --git a/asm/bike.s b/asm/bike.s
index b5d40a312..89791b987 100644
--- a/asm/bike.s
+++ b/asm/bike.s
@@ -2004,7 +2004,7 @@ GetOnOffBike: @ 811A080
beq _0811A0B0
movs r0, 0x1
bl SetPlayerAvatarTransitionFlags
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
bl sub_8085784
b _0811A0C4
.pool
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 29164ed7b..9252b79d2 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -721,7 +721,7 @@ TryGetInvisibleMapObjectScript: @ 809C458
ldr r2, [r0, 0x8]
cmp r2, 0
bne _0809C490
- ldr r0, =EventScript_2C8436
+ ldr r0, =EventScript_TestSignpostMsg
b _0809C532
.pool
_0809C490:
@@ -1365,7 +1365,7 @@ per_step_scripts: @ 809C9F4
bne _0809CA04
b _0809CB24
_0809CA04:
- bl sub_80B215C
+ bl IncrementRematchStepCounter
bl AdjustFriendship_step
bl sub_81D4998
ldr r0, =gPlayerAvatar
@@ -1531,8 +1531,8 @@ _0809CB72:
.pool
thumb_func_end AdjustFriendship_step
- thumb_func_start overworld_poison_timer_set
-overworld_poison_timer_set: @ 809CB80
+ thumb_func_start ResetPoisonStepCounter
+ResetPoisonStepCounter: @ 809CB80
push {lr}
ldr r0, =0x0000402b
movs r1, 0
@@ -1540,7 +1540,7 @@ overworld_poison_timer_set: @ 809CB80
pop {r0}
bx r0
.pool
- thumb_func_end overworld_poison_timer_set
+ thumb_func_end ResetPoisonStepCounter
thumb_func_start overworld_poison_step
overworld_poison_step: @ 809CB94
diff --git a/asm/field_effect.s b/asm/field_effect.s
index bfa563af1..170aa6a63 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -1961,7 +1961,7 @@ mapldr_080842E8: @ 80B69FC
movs r1, 0
bl CreateTask
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gFieldCallback
movs r0, 0
str r0, [r1]
@@ -2057,7 +2057,7 @@ mapldr_08084390: @ 80B6AA4
bl FieldObjectTurn
_080B6AE6:
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gFieldCallback
movs r0, 0
str r0, [r1]
@@ -2116,7 +2116,7 @@ sub_80B6B68: @ 80B6B68
bl sub_8085784
bl pal_fill_for_maplights
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r0, =sub_80B6B94
movs r1, 0
bl CreateTask
@@ -2534,7 +2534,7 @@ _080B6E9A:
sub_80B6EC0: @ 80B6EC0
push {r4,lr}
adds r4, r0, 0
- bl player_bitmagic
+ bl FreezeMapObjects
bl CameraObjectReset2
ldrb r0, [r4, 0xA]
bl sub_80E1558
@@ -3476,7 +3476,7 @@ sub_80B764C: @ 80B764C
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
- bl player_bitmagic
+ bl FreezeMapObjects
bl CameraObjectReset2
movs r0, 0
bl SetCameraPanningCallback
@@ -3807,7 +3807,7 @@ sub_80B78EC: @ 80B78EC
adds r5, r0, 0
adds r4, r1, 0
bl CameraObjectReset2
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gPlayerAvatar
movs r0, 0x1
strb r0, [r1, 0x6]
@@ -4055,7 +4055,7 @@ sub_80B7AE8: @ 80B7AE8
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
- bl player_bitmagic
+ bl FreezeMapObjects
bl CameraObjectReset2
ldr r1, =gPlayerAvatar
movs r0, 0x1
@@ -4287,7 +4287,7 @@ _080B7CC4:
sub_80B7CC8: @ 80B7CC8
push {lr}
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r0, =sub_80B7CE4
movs r1, 0x50
bl CreateTask
@@ -4461,7 +4461,7 @@ mapldr_080859D4: @ 80B7E48
bl sub_8085784
bl pal_fill_for_maplights
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gFieldCallback
movs r0, 0
str r0, [r1]
@@ -4672,7 +4672,7 @@ sub_80B800C: @ 80B800C
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
bl CameraObjectReset2
bl player_get_direction_lower_nybble
lsls r0, 24
@@ -4906,7 +4906,7 @@ mapldr_08085D88: @ 80B8200
bl sub_8085784
bl pal_fill_for_maplights
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gFieldCallback
movs r0, 0
str r0, [r1]
@@ -6295,7 +6295,7 @@ sub_80B8D44: @ 80B8D44
ldr r0, =gFieldEffectArguments
ldr r0, [r0]
strh r0, [r1, 0x26]
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
ldr r0, =0x0000016d
bl Overworld_ChangeMusicTo
movs r0, 0
@@ -6334,7 +6334,7 @@ sub_80B8DB4: @ 80B8DB4
push {r6}
adds r4, r0, 0
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r5, =gPlayerAvatar
movs r0, 0x1
strb r0, [r5, 0x6]
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index ae405f127..62681e7fb 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -3896,7 +3896,7 @@ sub_808C750: @ 808C750
lsls r4, 24
lsrs r4, 24
bl ScriptContext2_Enable
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
bl Overworld_ChangeMusicToDefault
ldr r2, =gPlayerAvatar
ldrb r1, [r2]
diff --git a/asm/field_screen.s b/asm/field_screen.s
index a579efe73..408f131c7 100644
--- a/asm/field_screen.s
+++ b/asm/field_screen.s
@@ -7527,15 +7527,15 @@ SetSav1Weather: @ 80AED7C
.pool
thumb_func_end SetSav1Weather
- thumb_func_start sav1_get_weather_probably
-sav1_get_weather_probably: @ 80AEDAC
+ thumb_func_start GetSav1Weather
+GetSav1Weather: @ 80AEDAC
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
adds r0, 0x2E
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sav1_get_weather_probably
+ thumb_func_end GetSav1Weather
thumb_func_start sub_80AEDBC
sub_80AEDBC: @ 80AEDBC
@@ -7565,7 +7565,7 @@ sub_80AEDBC: @ 80AEDBC
sub_80AEDF0: @ 80AEDF0
push {lr}
bl SetSav1Weather
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r0, 24
bl weather_set
@@ -7577,7 +7577,7 @@ sub_80AEDF0: @ 80AEDF0
sub_80AEE08: @ 80AEE08
push {lr}
bl SetSav1Weather
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r0, 24
bl sub_80AB104
@@ -7588,7 +7588,7 @@ sub_80AEE08: @ 80AEE08
thumb_func_start DoCurrentWeather
DoCurrentWeather: @ 80AEE20
push {r4,r5,lr}
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xF
@@ -7632,7 +7632,7 @@ _080AEE6E:
thumb_func_start sub_80AEE84
sub_80AEE84: @ 80AEE84
push {r4,r5,lr}
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xF
@@ -8382,7 +8382,7 @@ _080AF46C:
_080AF480:
movs r0, 0
bl sub_80AF0F4
- bl player_bitmagic
+ bl FreezeMapObjects
adds r0, r6, 0
adds r1, r7, 0
bl PlayerGetDestCoords
@@ -8508,7 +8508,7 @@ _080AF580:
_080AF58A:
movs r0, 0
bl sub_80AF0F4
- bl player_bitmagic
+ bl FreezeMapObjects
adds r0, r6, 0
adds r1, r7, 0
bl PlayerGetDestCoords
@@ -8583,7 +8583,7 @@ task_map_chg_seq_0807E2CC: @ 80AF610
b _080AF65A
.pool
_080AF634:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
ldrh r0, [r4, 0x8]
adds r0, 0x1
@@ -9062,7 +9062,7 @@ _080AFA34:
beq _080AFA6C
b _080AFA7C
_080AFA3A:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
b _080AFA64
_080AFA44:
@@ -9133,7 +9133,7 @@ _080AFAC0:
.4byte _080AFBB8
.4byte _080AFBD4
_080AFAD4:
- bl player_bitmagic
+ bl FreezeMapObjects
adds r0, r4, 0
adds r1, r6, 0
bl PlayerGetDestCoords
@@ -9290,7 +9290,7 @@ _080AFC1C:
beq _080AFC46
b _080AFC56
_080AFC22:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
b _080AFC3E
_080AFC2C:
@@ -9877,7 +9877,7 @@ sub_80B009C: @ 80B009C
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
- bl sav1_get_flash_used_on_map
+ bl Overworld_GetFlashLevel
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -9982,7 +9982,7 @@ task0A_mpl_807E31C: @ 80B0160
b _080B01B6
.pool
_080B0184:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
bl sub_808D194
ldrh r0, [r4, 0x8]
@@ -10033,7 +10033,7 @@ _080B01E4:
beq _080B022A
b _080B023A
_080B01EE:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
movs r0, 0x2D
bl PlaySE
diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s
index 369bef809..a1e4f4ff6 100644
--- a/asm/fldeff_80F9BCC.s
+++ b/asm/fldeff_80F9BCC.s
@@ -2275,8 +2275,8 @@ overworld_poison_effect: @ 80FAEA8
.pool
thumb_func_end overworld_poison_effect
- thumb_func_start c3_80A0DD8_is_running
-c3_80A0DD8_is_running: @ 80FAEC0
+ thumb_func_start FieldPoisonEffectIsRunning
+FieldPoisonEffectIsRunning: @ 80FAEC0
push {lr}
ldr r0, =task50_overworld_poison_effect
bl FuncIsActiveTask
@@ -2285,7 +2285,7 @@ c3_80A0DD8_is_running: @ 80FAEC0
pop {r1}
bx r1
.pool
- thumb_func_end c3_80A0DD8_is_running
+ thumb_func_end FieldPoisonEffectIsRunning
thumb_func_start sub_80FAED4
sub_80FAED4: @ 80FAED4
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 3a87f71d0..1be72593a 100755
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -4748,7 +4748,7 @@ _081AD550:
cmp r6, 0x1
bne _081AD5C4
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
bl sub_808B864
bl sub_808BCF4
ldr r2, =gSpecialVar_ItemId
diff --git a/asm/macros/event.inc b/asm/macros/event.inc
index 69cdb38e5..a88db5f1f 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -663,11 +663,13 @@
.byte 0x5d
.endm
- .macro ontrainerbattleend
+ @ Goes to address after the trainerbattle command (called by the battle functions, see battle_setup.c)
+ .macro gotopostbattlescript
.byte 0x5e
.endm
- .macro ontrainerbattleendgoto
+ @ Goes to address specified in the trainerbattle command (called by the battle functions, see battle_setup.c)
+ .macro gotobeatenscript
.byte 0x5f
.endm
diff --git a/asm/map_obj_8097404.s b/asm/map_obj_8097404.s
index 96ffc2254..4a6ae9945 100644
--- a/asm/map_obj_8097404.s
+++ b/asm/map_obj_8097404.s
@@ -82,9 +82,9 @@ _0809748E:
bx r1
thumb_func_end sub_8097404
- thumb_func_start player_bitmagic
-@ void player_bitmagic()
-player_bitmagic: @ 8097494
+ thumb_func_start FreezeMapObjects
+@ void FreezeMapObjects()
+FreezeMapObjects: @ 8097494
push {r4,r5,lr}
movs r4, 0
ldr r5, =gMapObjects
@@ -113,7 +113,7 @@ _080974B8:
pop {r0}
bx r0
.pool
- thumb_func_end player_bitmagic
+ thumb_func_end FreezeMapObjects
thumb_func_start sub_80974D0
sub_80974D0: @ 80974D0
diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s
index 2270051c2..f7a33e508 100644
--- a/asm/map_obj_lock.s
+++ b/asm/map_obj_lock.s
@@ -62,7 +62,7 @@ _080983E2:
thumb_func_start ScriptFreezeMapObjects
ScriptFreezeMapObjects: @ 80983E8
push {lr}
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r0, =sub_80983A4
movs r1, 0x50
bl CreateTask
@@ -348,7 +348,7 @@ sub_8098630: @ 8098630
bl sub_80B47E0
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_030060A8
+ ldr r0, =gNoOfApproachingTrainers
ldrb r0, [r0]
cmp r0, 0x2
bne _080986E0
diff --git a/asm/overworld.s b/asm/overworld.s
index ea03b8a8d..7e91b8054 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -1381,12 +1381,12 @@ _080850C8:
bl prev_quest_postbuffer_cursor_backup_reset
adds r0, r6, 0
adds r1, r5, 0
- bl sub_80B21B4
+ bl TryUpdateRandomTrainerRematches
bl DoTimeBasedEvents
bl sub_80AEDBC
bl sub_8085B2C
bl update_sav1_flash_used_on_map
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
bl mapheader_run_script_with_tag_x3
bl not_trainer_hill_battle_pyramid
ldr r0, [r4]
@@ -1478,7 +1478,7 @@ _080851A2:
asrs r1, 24
lsls r1, 16
lsrs r1, 16
- bl sub_80B21B4
+ bl TryUpdateRandomTrainerRematches
cmp r7, 0x1
beq _080851EE
bl DoTimeBasedEvents
@@ -1491,7 +1491,7 @@ _080851EE:
bl FlagClear
_08085200:
bl update_sav1_flash_used_on_map
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
bl mapheader_run_script_with_tag_x3
bl UpdateLocationHistoryForRoamer
bl RoamerMoveToOtherLocationSet
@@ -1880,15 +1880,15 @@ _080854FE:
.pool
thumb_func_end Overworld_SetFlashLevel
- thumb_func_start sav1_get_flash_used_on_map
-sav1_get_flash_used_on_map: @ 8085514
+ thumb_func_start Overworld_GetFlashLevel
+Overworld_GetFlashLevel: @ 8085514
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
adds r0, 0x30
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sav1_get_flash_used_on_map
+ thumb_func_end Overworld_GetFlashLevel
thumb_func_start sub_8085524
sub_8085524: @ 8085524
@@ -2133,7 +2133,7 @@ sav1_map_get_music: @ 80856D4
lsls r0, 5
cmp r1, r0
bne _080856FC
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x8
@@ -2272,15 +2272,15 @@ Overworld_SetSavedMusic: @ 80857F4
.pool
thumb_func_end Overworld_SetSavedMusic
- thumb_func_start sav1_reset_battle_music_maybe
-sav1_reset_battle_music_maybe: @ 8085800
+ thumb_func_start Overworld_ClearSavedMusic
+Overworld_ClearSavedMusic: @ 8085800
ldr r0, =gSaveBlock1Ptr
ldr r1, [r0]
movs r0, 0
strh r0, [r1, 0x2C]
bx lr
.pool
- thumb_func_end sav1_reset_battle_music_maybe
+ thumb_func_end Overworld_ClearSavedMusic
thumb_func_start sub_8085810
sub_8085810: @ 8085810
@@ -3192,8 +3192,8 @@ CB2_NewGame: @ 8085EF8
.pool
thumb_func_end CB2_NewGame
- thumb_func_start c2_whiteout
-c2_whiteout: @ 8085F58
+ thumb_func_start CB2_WhiteOut
+CB2_WhiteOut: @ 8085F58
push {lr}
sub sp, 0x4
ldr r1, =gMain
@@ -3232,7 +3232,7 @@ _08085FB0:
pop {r0}
bx r0
.pool
- thumb_func_end c2_whiteout
+ thumb_func_end CB2_WhiteOut
thumb_func_start c2_load_new_map
c2_load_new_map: @ 8085FCC
@@ -3661,7 +3661,7 @@ sub_80863B0: @ 80863B0
b _080863F0
.pool
_080863D4:
- bl sav1_get_flash_used_on_map
+ bl Overworld_GetFlashLevel
lsls r0, 24
lsrs r0, 24
cmp r0, 0
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 532d7599b..8b38def62 100755
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -8089,7 +8089,7 @@ _081CB0C0:
thumb_func_start sub_81CB0C8
sub_81CB0C8: @ 81CB0C8
push {lr}
- ldr r1, =gUnknown_085500A4
+ ldr r1, =gRematchTable
lsls r0, 4
adds r0, r1
ldrh r2, [r0, 0xA]
@@ -20738,7 +20738,7 @@ _081D15B6:
thumb_func_start sub_81D15BC
sub_81D15BC: @ 81D15BC
- ldr r1, =gUnknown_085500A4
+ ldr r1, =gRematchTable
lsls r0, 4
adds r0, r1
ldrh r0, [r0]
@@ -20751,7 +20751,7 @@ sub_81D15CC: @ 81D15CC
push {lr}
adds r3, r0, 0
movs r1, 0
- ldr r2, =gUnknown_085500A4
+ ldr r2, =gRematchTable
_081D15D4:
ldrh r0, [r2]
cmp r0, r3
@@ -21440,7 +21440,7 @@ _081D1A24:
cmp r0, 0
bne _081D1A1C
adds r0, r7, 0
- bl sub_80B2318
+ bl CountBattledRematchTeams
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -30343,8 +30343,8 @@ _081D6176:
.pool
thumb_func_end sub_81D6134
- thumb_func_start battle_init
-battle_init: @ 81D6180
+ thumb_func_start sub_81D6180
+sub_81D6180: @ 81D6180
lsls r0, 24
ldr r1, =gSaveBlock2Ptr
ldr r1, [r1]
@@ -30355,7 +30355,7 @@ battle_init: @ 81D6180
ldrh r0, [r1]
bx lr
.pool
- thumb_func_end battle_init
+ thumb_func_end sub_81D6180
thumb_func_start GetTrainerHillTrainerFlag
@ u8 GetTrainerHillTrainerFlag(u8 fieldObjectId)
diff --git a/asm/rom6.s b/asm/rom6.s
index 0c464c14f..f2fabec35 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -4180,7 +4180,7 @@ _0813785A:
thumb_func_start sp0C8_whiteout_maybe
sp0C8_whiteout_maybe: @ 813787C
push {lr}
- ldr r0, =c2_whiteout
+ ldr r0, =CB2_WhiteOut
bl SetMainCallback2
movs r0, 0
pop {r1}
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index 3a3cf4269..e093ea149 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -1359,8 +1359,8 @@ ScriptGiveEgg: @ 80F92C8
bx r1
thumb_func_end ScriptGiveEgg
- thumb_func_start sub_80F92F8
-sub_80F92F8: @ 80F92F8
+ thumb_func_start HasEnoughMonsForDoubleBattle
+HasEnoughMonsForDoubleBattle: @ 80F92F8
push {lr}
bl GetMonsStateToDoubles
lsls r0, 24
@@ -1382,7 +1382,7 @@ _080F9318:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80F92F8
+ thumb_func_end HasEnoughMonsForDoubleBattle
thumb_func_start sub_80F9320
sub_80F9320: @ 80F9320
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 787c0de23..6182c3c27 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -356,7 +356,7 @@ sub_809FA9C: @ 809FA9C
bl is_c1_link_related_active
cmp r0, 0
bne _0809FAB2
- bl player_bitmagic
+ bl FreezeMapObjects
bl sub_808B864
bl sub_808BCF4
_0809FAB2:
diff --git a/asm/trainer_rematch.s b/asm/trainer_rematch.s
index b814934a3..1c874f28f 100755
--- a/asm/trainer_rematch.s
+++ b/asm/trainer_rematch.s
@@ -178,14 +178,14 @@ sub_81DA6CC: @ 81DA6CC
push {r4-r6,lr}
adds r5, r0, 0
movs r4, 0
- ldr r6, =gUnknown_085500A4
+ ldr r6, =gRematchTable
_081DA6D4:
lsls r0, r4, 1
lsls r1, r5, 4
adds r0, r1
adds r0, r6
ldrh r0, [r0]
- bl HasTrainerAlreadyBeenFought
+ bl HasTrainerBeenFought
lsls r0, 24
cmp r0, 0
bne _081DA6F0
diff --git a/asm/trainer_see.s b/asm/trainer_see.s
index ad6cc370e..16398f9a4 100644
--- a/asm/trainer_see.s
+++ b/asm/trainer_see.s
@@ -5,133 +5,6 @@
.text
- thumb_func_start CheckForTrainersWantingBattle
-@ bool8 CheckForTrainersWantingBattle()
-CheckForTrainersWantingBattle: @ 80B3BE8
- push {r4-r7,lr}
- ldr r0, =gUnknown_030060A8
- movs r1, 0
- strb r1, [r0]
- ldr r0, =gUnknown_02038BFC
- strb r1, [r0]
- movs r4, 0
- ldr r6, =gMapObjects
-_080B3BF8:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, r0, r6
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _080B3C38
- ldrb r0, [r1, 0x7]
- cmp r0, 0x1
- beq _080B3C12
- cmp r0, 0x3
- bne _080B3C38
-_080B3C12:
- adds r0, r4, 0
- bl CheckIfTrainerWantsBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080B3C42
- cmp r0, 0
- beq _080B3C38
- ldr r0, =gUnknown_030060A8
- ldrb r1, [r0]
- adds r5, r0, 0
- cmp r1, 0x1
- bhi _080B3C88
- bl GetMonsStateToDoubles_2
- lsls r0, 24
- cmp r0, 0
- bne _080B3C42
-_080B3C38:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080B3BF8
-_080B3C42:
- ldr r0, =gUnknown_030060A8
- ldrb r4, [r0]
- adds r5, r0, 0
- cmp r4, 0x1
- bne _080B3C88
- bl ResetTrainerOpponentIds
- ldr r2, =gUnknown_03006090
- ldrb r0, [r5]
- subs r0, 0x1
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x4
- adds r1, r2
- ldr r1, [r1]
- bl SingleTrainerWantsBattle
- ldr r0, =gUnknown_030060AC
- strb r4, [r0]
- movs r0, 0x1
- b _080B3CF4
- .pool
-_080B3C88:
- ldrb r0, [r5]
- cmp r0, 0x2
- bne _080B3CEC
- bl ResetTrainerOpponentIds
- movs r4, 0
- ldrb r5, [r5]
- cmp r4, r5
- bcs _080B3CC6
- ldr r6, =gUnknown_03006090
- adds r7, r6, 0x4
- ldr r5, =gUnknown_02038BFC
-_080B3CA0:
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r0, r1, r6
- ldrb r0, [r0]
- adds r1, r7
- ldr r1, [r1]
- bl TwoTrainersWantBattle
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r4, r0
- bcc _080B3CA0
-_080B3CC6:
- bl TwoTrainersWantBattleExecuteScript
- ldr r1, =gUnknown_02038BFC
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gUnknown_030060AC
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
- b _080B3CF4
- .pool
-_080B3CEC:
- ldr r1, =gUnknown_030060AC
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
-_080B3CF4:
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end CheckForTrainersWantingBattle
-
thumb_func_start CheckIfTrainerWantsBattle
@ u8 CheckIfTrainerWantsBattle(u8 trainerFieldObjectId)
CheckIfTrainerWantsBattle: @ 80B3D00
@@ -203,8 +76,8 @@ _080B3D7C:
movs r1, 0x2
mov r9, r1
_080B3D8A:
- ldr r2, =gUnknown_03006090
- ldr r4, =gUnknown_030060A8
+ ldr r2, =gApproachingTrainers
+ ldr r4, =gNoOfApproachingTrainers
ldrb r1, [r4]
lsls r0, r1, 1
adds r0, r1
@@ -608,8 +481,8 @@ TrainerApproachPlayer: @ 80B406C
ldr r0, =c3_8081EDC
movs r1, 0x50
bl CreateTask
- ldr r4, =gUnknown_03006090
- ldr r3, =gUnknown_030060A8
+ ldr r4, =gApproachingTrainers
+ ldr r3, =gNoOfApproachingTrainers
ldrb r2, [r3]
lsls r1, r2, 1
adds r1, r2
@@ -645,16 +518,16 @@ TrainerApproachPlayer: @ 80B406C
sub_80B40C8: @ 80B40C8
push {r4,r5,lr}
adds r2, r0, 0
- ldr r0, =gUnknown_02038BFC
+ ldr r0, =gApproachingTrainerId
ldrb r0, [r0]
cmp r0, 0
bne _080B40E4
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r5, [r0, 0x8]
b _080B40E8
.pool
_080B40E4:
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r5, [r0, 0x14]
_080B40E8:
ldr r4, =c3_8081EDC
@@ -1290,11 +1163,11 @@ sub_80B45BC: @ 80B45BC
thumb_func_start sub_80B45D0
sub_80B45D0: @ 80B45D0
push {lr}
- ldr r0, =gUnknown_030060A8
+ ldr r0, =gNoOfApproachingTrainers
ldrb r0, [r0]
cmp r0, 0x2
bne _080B4610
- ldr r1, =gUnknown_02038BFC
+ ldr r1, =gApproachingTrainerId
ldrb r0, [r1]
cmp r0, 0
bne _080B460C
@@ -1304,7 +1177,7 @@ sub_80B45D0: @ 80B45D0
movs r0, 0x1
strh r0, [r1]
bl UnfreezeMapObjects
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0, 0xC]
bl sub_80974D0
b _080B4616
@@ -1531,16 +1404,16 @@ _080B47B2:
thumb_func_start sub_80B47BC
sub_80B47BC: @ 80B47BC
push {lr}
- ldr r0, =gUnknown_02038BFC
+ ldr r0, =gApproachingTrainerId
ldrb r0, [r0]
cmp r0, 0
beq _080B47D4
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0, 0xC]
b _080B47D8
.pool
_080B47D4:
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0]
_080B47D8:
pop {r1}
@@ -1560,12 +1433,12 @@ sub_80B47E0: @ 80B47E0
_080B47EE:
cmp r0, 0
beq _080B47FC
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0, 0xC]
b _080B4800
.pool
_080B47FC:
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0]
_080B4800:
pop {r1}
@@ -1580,7 +1453,7 @@ sub_80B4808: @ 80B4808
ldrb r0, [r0]
cmp r0, 0x1
bne _080B4870
- ldr r2, =gUnknown_03006090
+ ldr r2, =gApproachingTrainers
ldr r0, =gUnknown_03006080
ldrh r1, [r0]
lsls r0, r1, 1
diff --git a/constants/battle_constants.inc b/constants/battle_constants.inc
index 34f16a8c9..7309d68cd 100644
--- a/constants/battle_constants.inc
+++ b/constants/battle_constants.inc
@@ -19,7 +19,7 @@
.set BATTLE_TYPE_PALACE, 0x20000
.set BATTLE_TYPE_ARENA, 0x40000
.set BATTLE_TYPE_FACTORY, 0x80000
- .set BATTLE_TYPE_x100000, 0x100000
+ .set BATTLE_TYPE_PIKE, 0x100000
.set BATTLE_TYPE_PYRAMID, 0x200000
.set BATTLE_TYPE_INGAME_PARTNER, 0x400000
.set BATTLE_TYPE_x800000, 0x800000
@@ -28,7 +28,7 @@
.set BATTLE_TYPE_x4000000, 0x4000000
.set BATTLE_TYPE_SECRET_BASE, 0x8000000
.set BATTLE_TYPE_GROUDON, 0x10000000
- .set BATTLE_TYPE_KYORGE, 0x20000000
+ .set BATTLE_TYPE_KYOGRE, 0x20000000
.set BATTLE_TYPE_RAYQUAZA, 0x40000000
.set BATTLE_TYPE_x80000000, 0x80000000
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index ef6df1584..4efa72858 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -2870,7 +2870,7 @@ BattleScript_FaintedMonTryChooseAnother::
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_x100000 | BATTLE_TYPE_PYRAMID, 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
@@ -2965,7 +2965,7 @@ BattleScript_PayDayMoneyAndPickUpItems::
BattleScript_LocalBattleLost::
jumpifbattletype BATTLE_TYPE_DOME, BattleScript_CheckDomeDrew
- jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText
+ 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
diff --git a/data/battle_setup.s b/data/battle_setup.s
deleted file mode 100644
index d5043aae9..000000000
--- a/data/battle_setup.s
+++ /dev/null
@@ -1,190 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0854FE88:: @ 854FE88
- .byte 0x08, 0x09, 0x05, 0x0a, 0x00, 0x0a, 0x07, 0x06
-
-gUnknown_0854FE90:: @ 854FE90
- .byte 0x04, 0x0b, 0x02, 0x03, 0x00, 0x0a, 0x01, 0x06
-
-gUnknown_0854FE98:: @ 854FE98
- .byte 0x1d, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29
-
-gUnknown_0854FEA4:: @ 854FEA4
- .byte 0x1f, 0x20, 0x21
-
-gUnknown_0854FEA7:: @ 854FEA7
- .byte 0x1d, 0x1f, 0x20, 0x21, 0x00
-
- .align 2
-gUnknown_0854FEAC:: @ 854FEAC
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000002
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF0, 0x00000005
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0854FEF4:: @ 854FEF4
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000002
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF0, 0x00000002
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0854FF3C:: @ 854FF3C
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000002
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000002
- .4byte gUnknown_02038BF0, 0x00000005
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0854FF84:: @ 854FF84
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000005
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF0, 0x00000005
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0854FFCC:: @ 854FFCC
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000002
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000002
- .4byte gUnknown_02038BF0, 0x00000002
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_08550014:: @ 8550014
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_B, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD8, 0x00000002
- .4byte gUnknown_02038BE0, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF4, 0x00000005
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0855005C:: @ 855005C
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_B, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD8, 0x00000002
- .4byte gUnknown_02038BE0, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF4, 0x00000002
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_085500A4:: @ 85500A4
- .2byte 0x0025, 0x0028, 0x0029, 0x002a, 0x002b, 0x0000, 0x0021, 0x0000
- .2byte 0x02e1, 0x032c, 0x032d, 0x032e, 0x032f, 0x0000, 0x0014, 0x0000
- .2byte 0x002c, 0x002f, 0x0030, 0x0031, 0x0032, 0x0000, 0x001a, 0x0000
- .2byte 0x0039, 0x003c, 0x003d, 0x003e, 0x003f, 0x0000, 0x0018, 0x0000
- .2byte 0x0040, 0x0043, 0x0044, 0x0045, 0x0046, 0x0000, 0x0018, 0x0000
- .2byte 0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x0000, 0x0027, 0x0000
- .2byte 0x02ff, 0x033c, 0x033d, 0x033e, 0x033f, 0x0000, 0x0024, 0x0000
- .2byte 0x005e, 0x0065, 0x0066, 0x0067, 0x0068, 0x0000, 0x001a, 0x0000
- .2byte 0x004e, 0x0054, 0x0055, 0x0056, 0x0057, 0x0000, 0x001a, 0x0000
- .2byte 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0018, 0x0014, 0x0000
- .2byte 0x0072, 0x0078, 0x0079, 0x007a, 0x007b, 0x0000, 0x0013, 0x0000
- .2byte 0x0090, 0x034c, 0x034d, 0x034e, 0x034f, 0x0018, 0x0038, 0x0000
- .2byte 0x007f, 0x0084, 0x0085, 0x0086, 0x0087, 0x0000, 0x0024, 0x0000
- .2byte 0x0088, 0x008b, 0x008c, 0x008d, 0x008e, 0x0000, 0x0013, 0x0000
- .2byte 0x008f, 0x0093, 0x0094, 0x0095, 0x0096, 0x0000, 0x001d, 0x0000
- .2byte 0x009b, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x0000, 0x0016, 0x0000
- .2byte 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x0000, 0x001e, 0x0000
- .2byte 0x02a0, 0x0338, 0x0339, 0x033a, 0x033b, 0x0000, 0x002a, 0x0000
- .2byte 0x00c3, 0x0340, 0x0341, 0x0342, 0x0343, 0x0000, 0x0026, 0x0000
- .2byte 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x0000, 0x0021, 0x0000
- .2byte 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x0000, 0x001d, 0x0000
- .2byte 0x00d8, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0018, 0x000d, 0x0000
- .2byte 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x0018, 0x0001, 0x0000
- .2byte 0x00e2, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x0000, 0x0023, 0x0000
- .2byte 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x0000, 0x0026, 0x0000
- .2byte 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0000, 0x0026, 0x0000
- .2byte 0x00fe, 0x0101, 0x0102, 0x0103, 0x0104, 0x0000, 0x0024, 0x0000
- .2byte 0x0118, 0x011a, 0x011b, 0x011c, 0x011d, 0x0000, 0x001f, 0x0000
- .2byte 0x0111, 0x0114, 0x0115, 0x0116, 0x0117, 0x0000, 0x001f, 0x0000
- .2byte 0x011f, 0x0120, 0x0121, 0x0122, 0x0123, 0x0000, 0x0020, 0x0000
- .2byte 0x012e, 0x012f, 0x0130, 0x0131, 0x0132, 0x0000, 0x0019, 0x0000
- .2byte 0x0125, 0x0127, 0x0128, 0x0129, 0x012a, 0x0000, 0x0012, 0x0000
- .2byte 0x0133, 0x0134, 0x0135, 0x0136, 0x0137, 0x0000, 0x001e, 0x0000
- .2byte 0x0139, 0x013a, 0x013b, 0x013c, 0x013d, 0x0018, 0x000c, 0x0000
- .2byte 0x013e, 0x0148, 0x0149, 0x014a, 0x014b, 0x0000, 0x0011, 0x0000
- .2byte 0x0153, 0x015a, 0x015b, 0x015c, 0x015d, 0x0000, 0x0015, 0x0000
- .2byte 0x0178, 0x017b, 0x017c, 0x017d, 0x017e, 0x0000, 0x002b, 0x0000
- .2byte 0x0171, 0x0172, 0x0173, 0x0174, 0x0175, 0x0000, 0x0020, 0x0000
- .2byte 0x0166, 0x0168, 0x0169, 0x016a, 0x016b, 0x0000, 0x0019, 0x0000
- .2byte 0x016c, 0x016d, 0x016e, 0x016f, 0x0170, 0x0000, 0x0020, 0x0000
- .2byte 0x0182, 0x0184, 0x0185, 0x0186, 0x0187, 0x0000, 0x002b, 0x0000
- .2byte 0x0161, 0x0162, 0x0163, 0x0164, 0x0165, 0x0000, 0x0019, 0x0000
- .2byte 0x0179, 0x0334, 0x0335, 0x0336, 0x0337, 0x0000, 0x0029, 0x0000
- .2byte 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x0018, 0x0001, 0x0000
- .2byte 0x0196, 0x0199, 0x019a, 0x019b, 0x019c, 0x0000, 0x0023, 0x0000
- .2byte 0x01a3, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x0000, 0x001c, 0x0000
- .2byte 0x01ab, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x0000, 0x001e, 0x0000
- .2byte 0x01b2, 0x01b5, 0x01b6, 0x01b7, 0x01b8, 0x0000, 0x001c, 0x0000
- .2byte 0x01c1, 0x01d1, 0x01d2, 0x01d3, 0x01d4, 0x0000, 0x0027, 0x0000
- .2byte 0x01da, 0x01dd, 0x01de, 0x01df, 0x01e0, 0x0018, 0x000d, 0x0000
- .2byte 0x01e1, 0x01e2, 0x01e7, 0x01e8, 0x01e9, 0x0000, 0x0012, 0x0000
- .2byte 0x01ec, 0x01f1, 0x01f2, 0x01f3, 0x01f4, 0x0000, 0x0028, 0x0000
- .2byte 0x02e4, 0x0330, 0x0331, 0x0332, 0x0333, 0x0000, 0x0017, 0x0000
- .2byte 0x0200, 0x0203, 0x0204, 0x0205, 0x0206, 0x0000, 0x0019, 0x0000
- .2byte 0x0221, 0x0224, 0x0225, 0x0226, 0x0227, 0x0000, 0x0020, 0x0000
- .2byte 0x021a, 0x021d, 0x021e, 0x021f, 0x0220, 0x0000, 0x0020, 0x0000
- .2byte 0x0009, 0x0348, 0x0349, 0x034a, 0x034b, 0x0018, 0x0011, 0x0000
- .2byte 0x022f, 0x0232, 0x0233, 0x0234, 0x0235, 0x0000, 0x0022, 0x0000
- .2byte 0x0228, 0x022b, 0x022c, 0x022d, 0x022e, 0x0000, 0x0022, 0x0000
- .2byte 0x025c, 0x025f, 0x0260, 0x0261, 0x0262, 0x0000, 0x0013, 0x0000
- .2byte 0x026d, 0x026e, 0x026f, 0x0270, 0x0271, 0x0018, 0x000b, 0x0000
- .2byte 0x0273, 0x027c, 0x027d, 0x027e, 0x027f, 0x0000, 0x001b, 0x0000
- .2byte 0x0001, 0x0344, 0x0345, 0x0346, 0x0347, 0x0018, 0x000c, 0x0000
- .2byte 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0018, 0x003e, 0x0000
- .2byte 0x0291, 0x0292, 0x0293, 0x0294, 0x0294, 0x0018, 0x002b, 0x0000
- .2byte 0x0109, 0x0302, 0x0303, 0x0304, 0x0305, 0x0000, 0x0003, 0x0000
- .2byte 0x010a, 0x0306, 0x0307, 0x0308, 0x0309, 0x0000, 0x000b, 0x0000
- .2byte 0x010b, 0x030a, 0x030b, 0x030c, 0x030d, 0x0000, 0x0002, 0x0000
- .2byte 0x010c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0000, 0x000c, 0x0000
- .2byte 0x010d, 0x0312, 0x0313, 0x0314, 0x0315, 0x0000, 0x0000, 0x0000
- .2byte 0x010e, 0x0316, 0x0317, 0x0318, 0x0319, 0x0000, 0x0004, 0x0000
- .2byte 0x010f, 0x031a, 0x031b, 0x031c, 0x031d, 0x0000, 0x0006, 0x0000
- .2byte 0x0110, 0x031e, 0x031f, 0x0320, 0x0321, 0x0000, 0x0007, 0x0000
- .2byte 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0000, 0x0008, 0x0000
- .2byte 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0000, 0x0008, 0x0000
- .2byte 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0000, 0x0008, 0x0000
- .2byte 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0000, 0x0008, 0x0000
- .2byte 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x0000, 0x0008, 0x0000
-
- .align 2
-gUnknown_08550584:: @ 8550584
- .2byte 0x0867, 0x0868, 0x0869, 0x086a, 0x086b, 0x086c, 0x086d, 0x086e
-
diff --git a/data/event_scripts.s b/data/event_scripts.s
index d05eb1965..8bd35d0d1 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -846,101 +846,101 @@ EventScript_271356:: @ 8271356
special SetUpTrainerEncounterMusic
special sub_80B45AC
waitstate
- goto EventScript_27143C
+ goto EventScript_ShowTrainerIntroMsg
EventScript_271362:: @ 8271362
lock
faceplayer
- applymovement 0x800F, Movement_27143A
+ applymovement VAR_LAST_TALKED, Movement_27143A
waitmovement 0
- specialvar VAR_RESULT, check_trainer_flag
+ specialvar VAR_RESULT, GetTrainerFlag
compare_var_to_value VAR_RESULT, 0
goto_if 5, EventScript_271389
special SetUpTrainerEncounterMusic
special sub_80B16D8
- goto EventScript_27143C
+ goto EventScript_ShowTrainerIntroMsg
EventScript_271389:: @ 8271389
- ontrainerbattleend
+ gotopostbattlescript
-EventScript_27138A:: @ 827138A
+EventScript_TryDoDoubleTrainerBattle:: @ 827138A
lock
faceplayer
call EventScript_27142F
- specialvar VAR_RESULT, check_trainer_flag
+ specialvar VAR_RESULT, GetTrainerFlag
compare_var_to_value VAR_RESULT, 0
goto_if 5, EventScript_2713C1
- special sub_80F92F8
+ special HasEnoughMonsForDoubleBattle
compare_var_to_value VAR_RESULT, 0
- goto_if 5, EventScript_2713BA
+ goto_if 5, EventScript_NotEnoughMonsForDoubleBattle
special SetUpTrainerEncounterMusic
special sub_80B16D8
- goto EventScript_27143C
+ goto EventScript_ShowTrainerIntroMsg
-EventScript_2713BA:: @ 82713BA
- special special_trainer_unable_to_battle
+EventScript_NotEnoughMonsForDoubleBattle:: @ 82713BA
+ special ShowTrainerCantBattleSpeech
waitmessage
waitbuttonpress
release
end
EventScript_2713C1:: @ 82713C1
- ontrainerbattleend
+ gotopostbattlescript
EventScript_2713C2:: @ 82713C2
- applymovement 0x800F, Movement_27143A
+ applymovement VAR_LAST_TALKED, Movement_27143A
waitmovement 0
special SetUpTrainerEncounterMusic
trainerbattlebegin
- ontrainerbattleend
+ gotopostbattlescript
EventScript_2713D1:: @ 82713D1
call EventScript_27142F
- specialvar VAR_RESULT, sub_80B22A0
+ specialvar VAR_RESULT, IsTrainerReadyForRematch
compare_var_to_value VAR_RESULT, 0
goto_eq EventScript_2713F7
special SetUpTrainerEncounterMusic
special sub_80B16D8
- special sub_80B1A14
+ special ShowTrainerIntroSpeech
waitmessage
waitbuttonpress
- special sub_80B19EC
+ special BattleSetup_StartRematchBattle
waitstate
releaseall
end
EventScript_2713F7:: @ 82713F7
- ontrainerbattleend
+ gotopostbattlescript
-EventScript_2713F8:: @ 82713F8
- specialvar VAR_RESULT, sub_80B22A0
+EventScript_TryDoDoubleRematchBattle:: @ 82713F8
+ specialvar VAR_RESULT, IsTrainerReadyForRematch
compare_var_to_value VAR_RESULT, 0
goto_eq EventScript_271427
- special sub_80F92F8
+ special HasEnoughMonsForDoubleBattle
compare_var_to_value VAR_RESULT, 0
- goto_if 5, EventScript_271428
+ goto_if 5, EventScript_NotEnoughMonsForDoubleRematchBattle
special SetUpTrainerEncounterMusic
special sub_80B16D8
- special sub_80B1A14
+ special ShowTrainerIntroSpeech
waitmessage
waitbuttonpress
- special sub_80B19EC
+ special BattleSetup_StartRematchBattle
waitstate
releaseall
end
EventScript_271427:: @ 8271427
- ontrainerbattleend
+ gotopostbattlescript
-EventScript_271428:: @ 8271428
- special special_trainer_unable_to_battle
+EventScript_NotEnoughMonsForDoubleRematchBattle:: @ 8271428
+ special ShowTrainerCantBattleSpeech
waitmessage
waitbuttonpress
release
end
EventScript_27142F:: @ 827142F
- applymovement 0x800F, Movement_27143A
+ applymovement VAR_LAST_TALKED, Movement_27143A
waitmovement 0
return
@@ -948,18 +948,18 @@ Movement_27143A: @ 827143A
step_59
step_end
-EventScript_27143C:: @ 827143C
- special sub_80B1A14
+EventScript_ShowTrainerIntroMsg:: @ 827143C
+ special ShowTrainerIntroSpeech
waitmessage
waitbuttonpress
special sub_80B45D0
compare_var_to_value VAR_RESULT, 1
goto_eq EventScript_271356
- goto EventScript_271454
+ goto EventScript_DoTrainerBattle
-EventScript_271454:: @ 8271454
+EventScript_DoTrainerBattle:: @ 8271454
trainerbattlebegin
- specialvar VAR_RESULT, sub_80B170C
+ specialvar VAR_RESULT, GetTrainerBattleMode
compare_var_to_value VAR_RESULT, 0
goto_eq EventScript_271491
compare_var_to_value VAR_RESULT, 2
@@ -972,7 +972,7 @@ EventScript_271454:: @ 8271454
goto_eq EventScript_271491
EventScript_271491:: @ 8271491
- ontrainerbattleendgoto
+ gotobeatenscript
releaseall
end
@@ -2272,7 +2272,7 @@ Route101_EventScript_272141:: @ 8272141
Route103_EventScript_272141:: @ 8272141
lock
faceplayer
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_if 0, Route101_EventScript_272155
checkflag FLAG_0x119
goto_if 0, Route101_EventScript_1FA2D2
@@ -4086,15 +4086,15 @@ Std_8:: @ 82742C9
delay 30
return
-LavaridgeTown_Gym_1F_EventScript_2742E6:: @ 82742E6
- special CheckIfMultipleTrainersWantBattle
+EventScript_TryGetTrainerScript:: @ 82742E6
+ special ShouldTryGetTrainerScript
compare_var_to_value VAR_RESULT, 1
- goto_eq LavaridgeTown_Gym_1F_EventScript_2742F6
+ goto_eq EventScript_GotoTrainerScript
releaseall
end
-LavaridgeTown_Gym_1F_EventScript_2742F6:: @ 82742F6
- ontrainerbattleendgoto
+EventScript_GotoTrainerScript:: @ 82742F6
+ gotobeatenscript
releaseall
end
@@ -13973,12 +13973,12 @@ EventScript_2C83F0:: @ 82C83F0
closemessage
end
-Text_2C840A:: @ 82C840A
+Text_ThisIsATestSignpostMsg:: @ 82C840A
.string "This is a test message.\n"
.string "This is a signpost.$"
-EventScript_2C8436:: @ 82C8436
- msgbox Text_2C840A, 3
+EventScript_TestSignpostMsg:: @ 82C8436
+ msgbox Text_ThisIsATestSignpostMsg, 3
end
.string "It’s very disappointing…$"
diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc
index b33db9218..96f42dfb0 100644
--- a/data/script_cmd_table.inc
+++ b/data/script_cmd_table.inc
@@ -94,8 +94,8 @@ gScriptCmdTable:: @ 81DB67C
.4byte ScrCmd_turnobject
.4byte ScrCmd_trainerbattle
.4byte ScrCmd_dotrainerbattle
- .4byte ScrCmd_ontrainerbattleend
- .4byte ScrCmd_ontrainerbattleendgoto
+ .4byte ScrCmd_gotopostbattlescript
+ .4byte ScrCmd_gotobeatenscript
.4byte ScrCmd_checktrainerflag
.4byte ScrCmd_settrainerflag
.4byte ScrCmd_cleartrainerflag
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index 71e3303b5..bfea16d8f 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -409,7 +409,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276F23:: @ 8276F23
end
OldaleTown_PokemonCenter_2F_EventScript_276F2E:: @ 8276F2E
- special sub_80F92F8
+ special HasEnoughMonsForDoubleBattle
compare_var_to_value VAR_RESULT, 0
goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_276F47
setvar VAR_0x8004, 2
@@ -1194,7 +1194,7 @@ OldaleTown_PokemonCenter_2F_EventScript_27788E:: @ 827788E
end
OldaleTown_PokemonCenter_2F_EventScript_277899:: @ 8277899
- special sub_80F92F8
+ special HasEnoughMonsForDoubleBattle
compare_var_to_value VAR_RESULT, 0
goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_2778B2
setvar VAR_0x8004, 1
diff --git a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
index 7d86c6f3f..0b687aaeb 100644
--- a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
+++ b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
@@ -3,7 +3,7 @@ AbandonedShip_Rooms2_1F_MapScripts:: @ 82380A6
AbandonedShip_Rooms2_1F_EventScript_2380A7:: @ 82380A7
trainerbattle 6, TRAINER_KIRA_AND_DAN_1, 0, AbandonedShip_Rooms2_1F_Text_23819D, AbandonedShip_Rooms2_1F_Text_2381DA, AbandonedShip_Rooms2_1F_Text_238257, AbandonedShip_Rooms2_1F_EventScript_2380D7
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq AbandonedShip_Rooms2_1F_EventScript_2380F0
msgbox AbandonedShip_Rooms2_1F_Text_23820F, 4
@@ -26,7 +26,7 @@ AbandonedShip_Rooms2_1F_EventScript_2380F0:: @ 82380F0
AbandonedShip_Rooms2_1F_EventScript_23810B:: @ 823810B
trainerbattle 6, TRAINER_KIRA_AND_DAN_1, 0, AbandonedShip_Rooms2_1F_Text_2382A4, AbandonedShip_Rooms2_1F_Text_2382F4, AbandonedShip_Rooms2_1F_Text_23836F, AbandonedShip_Rooms2_1F_EventScript_23813B
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq AbandonedShip_Rooms2_1F_EventScript_238154
msgbox AbandonedShip_Rooms2_1F_Text_23830A, 4
diff --git a/data/scripts/maps/AbandonedShip_Rooms_1F.inc b/data/scripts/maps/AbandonedShip_Rooms_1F.inc
index 025b497dd..beaea9b34 100644
--- a/data/scripts/maps/AbandonedShip_Rooms_1F.inc
+++ b/data/scripts/maps/AbandonedShip_Rooms_1F.inc
@@ -12,7 +12,7 @@ AbandonedShip_Rooms_1F_EventScript_237A9C:: @ 8237A9C
AbandonedShip_Rooms_1F_EventScript_237AB3:: @ 8237AB3
trainerbattle 2, TRAINER_THALIA_1, 0, AbandonedShip_Rooms_1F_Text_237B76, AbandonedShip_Rooms_1F_Text_237BB8, AbandonedShip_Rooms_1F_EventScript_237ADF
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq AbandonedShip_Rooms_1F_EventScript_237AFE
msgbox AbandonedShip_Rooms_1F_Text_237BDB, 4
diff --git a/data/scripts/maps/AncientTomb.inc b/data/scripts/maps/AncientTomb.inc
index 85a1d708d..240a40fd8 100644
--- a/data/scripts/maps/AncientTomb.inc
+++ b/data/scripts/maps/AncientTomb.inc
@@ -72,7 +72,7 @@ AncientTomb_EventScript_23905A:: @ 823905A
waitmoncry
setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0A74
+ special StartRegiBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/BirthIsland_Exterior.inc b/data/scripts/maps/BirthIsland_Exterior.inc
index 8ea18a673..8c298c85a 100644
--- a/data/scripts/maps/BirthIsland_Exterior.inc
+++ b/data/scripts/maps/BirthIsland_Exterior.inc
@@ -88,7 +88,7 @@ BirthIsland_Exterior_EventScript_267FC1:: @ 8267FC1
setvar VAR_0x8006, 0
special DoScriptedWildBattle
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/DesertRuins.inc b/data/scripts/maps/DesertRuins.inc
index bb2f6d23d..afbd24903 100644
--- a/data/scripts/maps/DesertRuins.inc
+++ b/data/scripts/maps/DesertRuins.inc
@@ -72,7 +72,7 @@ DesertRuins_EventScript_22DA02:: @ 822DA02
waitmoncry
setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0A74
+ special StartRegiBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/DewfordTown_Gym.inc b/data/scripts/maps/DewfordTown_Gym.inc
index a3f996f25..5e9b5fa7d 100644
--- a/data/scripts/maps/DewfordTown_Gym.inc
+++ b/data/scripts/maps/DewfordTown_Gym.inc
@@ -157,7 +157,7 @@ DewfordTown_Gym_EventScript_1FC7C1:: @ 81FC7C1
DewfordTown_Gym_EventScript_1FC7C2:: @ 81FC7C2
trainerbattle 1, TRAINER_BRAWLY_1, 0, DewfordTown_Gym_Text_1FCF44, DewfordTown_Gym_Text_1FD008, DewfordTown_Gym_EventScript_1FC7F7
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq DewfordTown_Gym_EventScript_1FC89C
checkflag FLAG_0x0A6
diff --git a/data/scripts/maps/FarawayIsland_Interior.inc b/data/scripts/maps/FarawayIsland_Interior.inc
index f49d938a7..e86a2da52 100644
--- a/data/scripts/maps/FarawayIsland_Interior.inc
+++ b/data/scripts/maps/FarawayIsland_Interior.inc
@@ -145,7 +145,7 @@ FarawayIsland_Interior_EventScript_267DF2:: @ 8267DF2
setvar VAR_0x8006, 0
special DoScriptedWildBattle
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc
index e3990cd23..67d5a21eb 100644
--- a/data/scripts/maps/FortreeCity_Gym.inc
+++ b/data/scripts/maps/FortreeCity_Gym.inc
@@ -17,7 +17,7 @@ FortreeCity_Gym_EventScript_2165C4:: @ 82165C4
FortreeCity_Gym_EventScript_2165C8:: @ 82165C8
trainerbattle 1, TRAINER_WINONA_1, 0, FortreeCity_Gym_Text_216D75, FortreeCity_Gym_Text_216E60, FortreeCity_Gym_EventScript_2165FD
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq FortreeCity_Gym_EventScript_21668D
checkflag FLAG_0x0AA
diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc
index 69a3ef76a..4d6a4fda9 100644
--- a/data/scripts/maps/IslandCave.inc
+++ b/data/scripts/maps/IslandCave.inc
@@ -104,7 +104,7 @@ IslandCave_EventScript_238F58:: @ 8238F58
waitmoncry
setwildbattle SPECIES_REGICE, 40, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0A74
+ special StartRegiBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/JaggedPass.inc b/data/scripts/maps/JaggedPass.inc
index 1fb3b316e..4cc415b30 100644
--- a/data/scripts/maps/JaggedPass.inc
+++ b/data/scripts/maps/JaggedPass.inc
@@ -104,7 +104,7 @@ JaggedPass_EventScript_230785:: @ 8230785
JaggedPass_EventScript_23079C:: @ 823079C
trainerbattle 2, TRAINER_DIANA_1, 0, JaggedPass_Text_230974, JaggedPass_Text_2309B5, JaggedPass_EventScript_2307C8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq JaggedPass_EventScript_2307E4
msgbox JaggedPass_Text_2309D8, 4
@@ -128,7 +128,7 @@ JaggedPass_EventScript_2307E4:: @ 82307E4
JaggedPass_EventScript_2307FB:: @ 82307FB
trainerbattle 2, TRAINER_ETHAN_1, 0, JaggedPass_Text_230B10, JaggedPass_Text_230B50, JaggedPass_EventScript_230827
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq JaggedPass_EventScript_230843
msgbox JaggedPass_Text_230B93, 4
diff --git a/data/scripts/maps/LavaridgeTown_Gym_1F.inc b/data/scripts/maps/LavaridgeTown_Gym_1F.inc
index 55ae851e0..581f4ca1d 100644
--- a/data/scripts/maps/LavaridgeTown_Gym_1F.inc
+++ b/data/scripts/maps/LavaridgeTown_Gym_1F.inc
@@ -60,7 +60,7 @@ LavaridgeTown_Gym_1F_EventScript_1FE78B:: @ 81FE78B
LavaridgeTown_Gym_1F_EventScript_1FE78C:: @ 81FE78C
trainerbattle 1, TRAINER_FLANNERY_1, 0, LavaridgeTown_Gym_1F_Text_1FF0DC, LavaridgeTown_Gym_1F_Text_1FF233, LavaridgeTown_Gym_1F_EventScript_1FE7C1
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq LavaridgeTown_Gym_1F_EventScript_1FE864
checkflag FLAG_0x0A8
@@ -127,9 +127,9 @@ LavaridgeTown_Gym_1F_EventScript_1FE89A:: @ 81FE89A
LavaridgeTown_Gym_B1F_EventScript_1FE89A:: @ 81FE89A
call LavaridgeTown_Gym_1F_EventScript_1FE705
release
- special CheckIfMultipleTrainersWantBattle
+ special ShouldTryGetTrainerScript
compare_var_to_value VAR_RESULT, 1
- goto_eq LavaridgeTown_Gym_1F_EventScript_2742F6
+ goto_eq EventScript_GotoTrainerScript
end
LavaridgeTown_Gym_1F_EventScript_1FE8AF:: @ 81FE8AF
diff --git a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
index cef69c7b2..1dd35ab18 100644
--- a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
+++ b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
@@ -482,7 +482,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_1FA25A:: @ 81FA25A
goto_eq LittlerootTown_ProfessorBirchsLab_EventScript_1FA28A
compare_var_to_value VAR_0x40D3, 2
goto_eq LittlerootTown_ProfessorBirchsLab_EventScript_1FA294
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1FA29E
checkflag FLAG_0x119
goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1FA2D2
diff --git a/data/scripts/maps/MarineCave_End.inc b/data/scripts/maps/MarineCave_End.inc
index dc2e2b3a0..fafc10b63 100644
--- a/data/scripts/maps/MarineCave_End.inc
+++ b/data/scripts/maps/MarineCave_End.inc
@@ -38,7 +38,7 @@ MarineCave_End_EventScript_23B01B:: @ 823B01B
setvar VAR_LAST_TALKED, 1
setwildbattle SPECIES_KYOGRE, 70, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
setvar VAR_0x4001, 0
diff --git a/data/scripts/maps/MauvilleCity_Gym.inc b/data/scripts/maps/MauvilleCity_Gym.inc
index 899550337..dd2d502db 100644
--- a/data/scripts/maps/MauvilleCity_Gym.inc
+++ b/data/scripts/maps/MauvilleCity_Gym.inc
@@ -77,7 +77,7 @@ MauvilleCity_Gym_EventScript_20DEE7:: @ 820DEE7
MauvilleCity_Gym_EventScript_20DEEB:: @ 820DEEB
trainerbattle 1, TRAINER_WATTSON_1, 0, MauvilleCity_Gym_Text_20E602, MauvilleCity_Gym_Text_20E734, MauvilleCity_Gym_EventScript_20DF2B
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MauvilleCity_Gym_EventScript_20DFDE
checkflag FLAG_0x0A7
diff --git a/data/scripts/maps/MeteorFalls_1F_2R.inc b/data/scripts/maps/MeteorFalls_1F_2R.inc
index 8cf171209..12e84c761 100644
--- a/data/scripts/maps/MeteorFalls_1F_2R.inc
+++ b/data/scripts/maps/MeteorFalls_1F_2R.inc
@@ -3,7 +3,7 @@ MeteorFalls_1F_2R_MapScripts:: @ 822C4DD
MeteorFalls_1F_2R_EventScript_22C4DE:: @ 822C4DE
trainerbattle 2, TRAINER_NICOLAS_1, 0, MeteorFalls_1F_2R_Text_22C608, MeteorFalls_1F_2R_Text_22C678, MeteorFalls_1F_2R_EventScript_22C50A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MeteorFalls_1F_2R_EventScript_22C529
msgbox MeteorFalls_1F_2R_Text_22C6A3, 4
@@ -28,7 +28,7 @@ MeteorFalls_1F_2R_EventScript_22C529:: @ 822C529
MeteorFalls_1F_2R_EventScript_22C540:: @ 822C540
trainerbattle 6, TRAINER_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_22C843, MeteorFalls_1F_2R_Text_22C89C, MeteorFalls_1F_2R_Text_22C92B, MeteorFalls_1F_2R_EventScript_22C570
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MeteorFalls_1F_2R_EventScript_22C589
msgbox MeteorFalls_1F_2R_Text_22C8C1, 4
@@ -51,7 +51,7 @@ MeteorFalls_1F_2R_EventScript_22C589:: @ 822C589
MeteorFalls_1F_2R_EventScript_22C5A4:: @ 822C5A4
trainerbattle 6, TRAINER_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_22C9E6, MeteorFalls_1F_2R_Text_22CA44, MeteorFalls_1F_2R_Text_22CACD, MeteorFalls_1F_2R_EventScript_22C5D4
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MeteorFalls_1F_2R_EventScript_22C5ED
msgbox MeteorFalls_1F_2R_Text_22CA70, 4
diff --git a/data/scripts/maps/MossdeepCity_Gym.inc b/data/scripts/maps/MossdeepCity_Gym.inc
index 89c243767..dfcb14721 100644
--- a/data/scripts/maps/MossdeepCity_Gym.inc
+++ b/data/scripts/maps/MossdeepCity_Gym.inc
@@ -50,7 +50,7 @@ MossdeepCity_Gym_EventScript_220885:: @ 8220885
MossdeepCity_Gym_EventScript_220898:: @ 8220898
trainerbattle 8, TRAINER_TATE_AND_LIZA_1, 0, MossdeepCity_Gym_Text_221783, MossdeepCity_Gym_Text_2218EC, MossdeepCity_Gym_Text_221BCE, MossdeepCity_Gym_EventScript_2208D1
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MossdeepCity_Gym_EventScript_22097E
checkflag FLAG_0x0AB
diff --git a/data/scripts/maps/MtChimney.inc b/data/scripts/maps/MtChimney.inc
index d7a2ed83a..b93fbd3ec 100644
--- a/data/scripts/maps/MtChimney.inc
+++ b/data/scripts/maps/MtChimney.inc
@@ -488,7 +488,7 @@ MtChimney_EventScript_22F141:: @ 822F141
MtChimney_EventScript_22F14A:: @ 822F14A
trainerbattle 2, TRAINER_SHELBY_1, 0, MtChimney_Text_23001D, MtChimney_Text_230076, MtChimney_EventScript_22F176
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MtChimney_EventScript_22F195
msgbox MtChimney_Text_2300A2, 4
@@ -533,7 +533,7 @@ MtChimney_EventScript_22F1F1:: @ 822F1F1
MtChimney_EventScript_22F208:: @ 822F208
trainerbattle 2, TRAINER_SAWYER_1, 0, MtChimney_Text_2304B3, MtChimney_Text_2304F7, MtChimney_EventScript_22F234
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MtChimney_EventScript_22F253
msgbox MtChimney_Text_230519, 4
diff --git a/data/scripts/maps/MtPyre_3F.inc b/data/scripts/maps/MtPyre_3F.inc
index ad99e6c9a..7c95a8d84 100644
--- a/data/scripts/maps/MtPyre_3F.inc
+++ b/data/scripts/maps/MtPyre_3F.inc
@@ -13,7 +13,7 @@ MtPyre_3F_EventScript_23176A:: @ 823176A
MtPyre_3F_EventScript_231781:: @ 8231781
trainerbattle 2, TRAINER_GABRIELLE_1, 0, MtPyre_3F_Text_231952, MtPyre_3F_Text_23196A, MtPyre_3F_EventScript_2317AD
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MtPyre_3F_EventScript_2317CC
msgbox MtPyre_3F_Text_23199B, 4
diff --git a/data/scripts/maps/MtPyre_6F.inc b/data/scripts/maps/MtPyre_6F.inc
index 36a727daa..6c61221d5 100644
--- a/data/scripts/maps/MtPyre_6F.inc
+++ b/data/scripts/maps/MtPyre_6F.inc
@@ -3,7 +3,7 @@ MtPyre_6F_MapScripts:: @ 8231D3A
MtPyre_6F_EventScript_231D3B:: @ 8231D3B
trainerbattle 2, TRAINER_VALERIE_1, 0, MtPyre_6F_Text_231DB4, MtPyre_6F_Text_231DE2, MtPyre_6F_EventScript_231D67
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MtPyre_6F_EventScript_231D86
msgbox MtPyre_6F_Text_231DFC, 4
diff --git a/data/scripts/maps/NavelRock_Bottom.inc b/data/scripts/maps/NavelRock_Bottom.inc
index 055697d23..5167af41a 100644
--- a/data/scripts/maps/NavelRock_Bottom.inc
+++ b/data/scripts/maps/NavelRock_Bottom.inc
@@ -61,7 +61,7 @@ NavelRock_Bottom_EventScript_2692A2:: @ 82692A2
setvar VAR_0x8006, 0
special DoScriptedWildBattle
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/NavelRock_Top.inc b/data/scripts/maps/NavelRock_Top.inc
index 01c9a1523..edebb3976 100644
--- a/data/scripts/maps/NavelRock_Top.inc
+++ b/data/scripts/maps/NavelRock_Top.inc
@@ -65,7 +65,7 @@ NavelRock_Top_EventScript_26916F:: @ 826916F
setvar VAR_0x8006, 0
special DoScriptedWildBattle
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
setvar VAR_LAST_TALKED, 1
diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc
index e223bf414..ad7e2f1cb 100644
--- a/data/scripts/maps/PetalburgCity.inc
+++ b/data/scripts/maps/PetalburgCity.inc
@@ -36,7 +36,7 @@ PetalburgCity_EventScript_1DC32E:: @ 81DC32E
applymovement 255, PetalburgCity_Movement_1DC430
waitmovement 0
msgbox PetalburgCity_Text_1EC1F8, 4
- special sub_80B086C
+ special StartWallyTutorialBattle
waitstate
msgbox PetalburgCity_Text_1EC271, 4
applymovementat 2, PetalburgCity_Movement_2725A4, PETALBURG_CITY
diff --git a/data/scripts/maps/PetalburgCity_Gym.inc b/data/scripts/maps/PetalburgCity_Gym.inc
index e6cdd1334..3c119a227 100644
--- a/data/scripts/maps/PetalburgCity_Gym.inc
+++ b/data/scripts/maps/PetalburgCity_Gym.inc
@@ -62,7 +62,7 @@ PetalburgCity_Gym_EventScript_204955:: @ 8204955
PetalburgCity_Gym_EventScript_20495D:: @ 820495D
setorcopyvar 0x8015, 269
- specialvar VAR_RESULT, sub_80B22A0
+ specialvar VAR_RESULT, IsTrainerReadyForRematch
compare_var_to_value VAR_RESULT, 1
goto_eq PetalburgCity_Gym_EventScript_204985
compare_var_to_value VAR_0x4085, 8
diff --git a/data/scripts/maps/PetalburgWoods.inc b/data/scripts/maps/PetalburgWoods.inc
index a6b018134..64cf94754 100644
--- a/data/scripts/maps/PetalburgWoods.inc
+++ b/data/scripts/maps/PetalburgWoods.inc
@@ -279,7 +279,7 @@ PetalburgWoods_EventScript_22E26D:: @ 822E26D
PetalburgWoods_EventScript_22E284:: @ 822E284
trainerbattle 2, TRAINER_JAMES_1, 0, PetalburgWoods_Text_22E827, PetalburgWoods_Text_22E86B, PetalburgWoods_EventScript_22E2C5
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq PetalburgWoods_EventScript_22E31B
setvar VAR_0x8004, 621
@@ -293,7 +293,7 @@ PetalburgWoods_EventScript_22E284:: @ 822E284
PetalburgWoods_EventScript_22E2C5:: @ 822E2C5
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq PetalburgWoods_EventScript_22E2D6
release
end
@@ -308,7 +308,7 @@ PetalburgWoods_EventScript_22E2D6:: @ 822E2D6
end
PetalburgWoods_EventScript_22E2EF:: @ 822E2EF
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq PetalburgWoods_EventScript_22E302
msgbox PetalburgWoods_Text_22E889, 4
release
diff --git a/data/scripts/maps/Route101.inc b/data/scripts/maps/Route101.inc
index 27c83f3d0..6536952c4 100644
--- a/data/scripts/maps/Route101.inc
+++ b/data/scripts/maps/Route101.inc
@@ -225,7 +225,7 @@ Route101_EventScript_1EBE16:: @ 81EBE16
setobjectxy 255, 6, 13
applymovement 255, Route101_Movement_2725A4
waitmovement 0
- special sub_80B1138
+ special ChooseStarter
waitstate
applymovement 2, Route101_Movement_1EBE8D
waitmovement 0
diff --git a/data/scripts/maps/Route102.inc b/data/scripts/maps/Route102.inc
index 00c8c309f..99e9f610c 100644
--- a/data/scripts/maps/Route102.inc
+++ b/data/scripts/maps/Route102.inc
@@ -19,7 +19,7 @@ Route102_EventScript_1EC0FC:: @ 81EC0FC
Route102_EventScript_1EC105:: @ 81EC105
trainerbattle 2, TRAINER_CALVIN_1, 0, Route102_Text_294513, Route102_Text_29457C, Route102_EventScript_1EC146
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route102_EventScript_1EC19C
setvar VAR_0x8004, 318
@@ -33,7 +33,7 @@ Route102_EventScript_1EC105:: @ 81EC105
Route102_EventScript_1EC146:: @ 81EC146
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route102_EventScript_1EC157
release
end
@@ -48,7 +48,7 @@ Route102_EventScript_1EC157:: @ 81EC157
end
Route102_EventScript_1EC170:: @ 81EC170
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route102_EventScript_1EC183
msgbox Route102_Text_2945AC, 4
release
diff --git a/data/scripts/maps/Route103.inc b/data/scripts/maps/Route103.inc
index 4dd68204a..dcfa8cde3 100644
--- a/data/scripts/maps/Route103.inc
+++ b/data/scripts/maps/Route103.inc
@@ -209,7 +209,7 @@ Route103_EventScript_1EC5F4:: @ 81EC5F4
Route103_EventScript_1EC60B:: @ 81EC60B
trainerbattle 6, TRAINER_AMY_AND_LIV_1, 0, Route103_Text_2949F9, Route103_Text_294A3D, Route103_Text_294AAE, Route103_EventScript_1EC63A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route103_EventScript_1EC653
msgbox Route103_Text_294A52, 6
@@ -231,7 +231,7 @@ Route103_EventScript_1EC653:: @ 81EC653
Route103_EventScript_1EC66E:: @ 81EC66E
trainerbattle 6, TRAINER_AMY_AND_LIV_1, 0, Route103_Text_294AFD, Route103_Text_294B22, Route103_Text_294BD0, Route103_EventScript_1EC69D
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route103_EventScript_1EC6B6
msgbox Route103_Text_294B40, 6
@@ -258,7 +258,7 @@ Route103_EventScript_1EC6D1:: @ 81EC6D1
Route103_EventScript_1EC6E8:: @ 81EC6E8
trainerbattle 2, TRAINER_MIGUEL_1, 0, Route103_Text_294EDF, Route103_Text_294F21, Route103_EventScript_1EC714
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route103_EventScript_1EC733
msgbox Route103_Text_294F42, 4
diff --git a/data/scripts/maps/Route104.inc b/data/scripts/maps/Route104.inc
index 8c4138f11..df209ced9 100644
--- a/data/scripts/maps/Route104.inc
+++ b/data/scripts/maps/Route104.inc
@@ -882,7 +882,7 @@ Route104_EventScript_1ED376:: @ 81ED376
Route104_EventScript_1ED38D:: @ 81ED38D
trainerbattle 2, TRAINER_HALEY_1, 0, Route104_Text_29563A, Route104_Text_29566F, Route104_EventScript_1ED3CE
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route104_EventScript_1ED424
setvar VAR_0x8004, 604
@@ -896,7 +896,7 @@ Route104_EventScript_1ED38D:: @ 81ED38D
Route104_EventScript_1ED3CE:: @ 81ED3CE
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED3DF
release
end
@@ -911,7 +911,7 @@ Route104_EventScript_1ED3DF:: @ 81ED3DF
end
Route104_EventScript_1ED3F8:: @ 81ED3F8
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED40B
msgbox Route104_Text_295689, 4
release
@@ -933,7 +933,7 @@ Route104_EventScript_1ED424:: @ 81ED424
Route104_EventScript_1ED43B:: @ 81ED43B
trainerbattle 2, TRAINER_WINSTON_1, 0, Route104_Text_295870, Route104_Text_2958AD, Route104_EventScript_1ED47C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route104_EventScript_1ED4D2
setvar VAR_0x8004, 136
@@ -947,7 +947,7 @@ Route104_EventScript_1ED43B:: @ 81ED43B
Route104_EventScript_1ED47C:: @ 81ED47C
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED48D
release
end
@@ -962,7 +962,7 @@ Route104_EventScript_1ED48D:: @ 81ED48D
end
Route104_EventScript_1ED4A6:: @ 81ED4A6
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED4B9
msgbox Route104_Text_2958C1, 4
release
@@ -984,7 +984,7 @@ Route104_EventScript_1ED4D2:: @ 81ED4D2
Route104_EventScript_1ED4E9:: @ 81ED4E9
trainerbattle 2, TRAINER_CINDY_1, 0, Route104_Text_295A7E, Route104_Text_295ABB, Route104_EventScript_1ED52A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route104_EventScript_1ED580
setvar VAR_0x8004, 114
@@ -998,7 +998,7 @@ Route104_EventScript_1ED4E9:: @ 81ED4E9
Route104_EventScript_1ED52A:: @ 81ED52A
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED53B
release
end
@@ -1013,7 +1013,7 @@ Route104_EventScript_1ED53B:: @ 81ED53B
end
Route104_EventScript_1ED554:: @ 81ED554
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED567
msgbox Route104_Text_295AC3, 4
release
diff --git a/data/scripts/maps/Route105.inc b/data/scripts/maps/Route105.inc
index 72b35e7b0..b527fc7a8 100644
--- a/data/scripts/maps/Route105.inc
+++ b/data/scripts/maps/Route105.inc
@@ -63,7 +63,7 @@ Route105_EventScript_1EE2BD:: @ 81EE2BD
Route105_EventScript_1EE2D4:: @ 81EE2D4
trainerbattle 2, TRAINER_ANDRES_1, 0, Route105_Text_2960A9, Route105_Text_2960DB, Route105_EventScript_1EE300
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route105_EventScript_1EE31F
msgbox Route105_Text_2960FA, 4
diff --git a/data/scripts/maps/Route106.inc b/data/scripts/maps/Route106.inc
index 3bb5e27e7..8b0df4336 100644
--- a/data/scripts/maps/Route106.inc
+++ b/data/scripts/maps/Route106.inc
@@ -17,7 +17,7 @@ Route106_EventScript_1EE4AA:: @ 81EE4AA
Route106_EventScript_1EE4C1:: @ 81EE4C1
trainerbattle 2, TRAINER_ELLIOT_1, 0, Route106_Text_296327, Route106_Text_29635C, Route106_EventScript_1EE4ED
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route106_EventScript_1EE50C
msgbox Route106_Text_29638C, 4
diff --git a/data/scripts/maps/Route107.inc b/data/scripts/maps/Route107.inc
index 736eaa8ee..0f144a6bb 100644
--- a/data/scripts/maps/Route107.inc
+++ b/data/scripts/maps/Route107.inc
@@ -8,7 +8,7 @@ Route107_EventScript_1EE595:: @ 81EE595
Route107_EventScript_1EE5AC:: @ 81EE5AC
trainerbattle 2, TRAINER_TONY_1, 0, Route107_Text_2967AD, Route107_Text_2967D8, Route107_EventScript_1EE5D8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route107_EventScript_1EE5F7
msgbox Route107_Text_2967FF, 4
diff --git a/data/scripts/maps/Route108.inc b/data/scripts/maps/Route108.inc
index d88f63ca1..5c416d7dd 100644
--- a/data/scripts/maps/Route108.inc
+++ b/data/scripts/maps/Route108.inc
@@ -28,7 +28,7 @@ Route108_EventScript_1EE6E6:: @ 81EE6E6
Route108_EventScript_1EE6FD:: @ 81EE6FD
trainerbattle 2, TRAINER_CORY_1, 0, Route108_Text_296F5D, Route108_Text_296F93, Route108_EventScript_1EE729
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route108_EventScript_1EE748
msgbox Route108_Text_296FB0, 4
diff --git a/data/scripts/maps/Route109.inc b/data/scripts/maps/Route109.inc
index 4cdd835ff..da36de73c 100644
--- a/data/scripts/maps/Route109.inc
+++ b/data/scripts/maps/Route109.inc
@@ -397,7 +397,7 @@ Route109_EventScript_1EEA82:: @ 81EEA82
Route109_EventScript_1EEA99:: @ 81EEA99
trainerbattle 2, TRAINER_RICKY_1, 0, Route109_Text_29733B, Route109_Text_297379, Route109_EventScript_1EEAC5
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route109_EventScript_1EEAE4
msgbox Route109_Text_297380, 4
@@ -422,7 +422,7 @@ Route109_EventScript_1EEAE4:: @ 81EEAE4
Route109_EventScript_1EEAFB:: @ 81EEAFB
trainerbattle 2, TRAINER_LOLA_1, 0, Route109_Text_29749C, Route109_Text_2974CF, Route109_EventScript_1EEB27
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route109_EventScript_1EEB46
msgbox Route109_Text_2974D6, 4
diff --git a/data/scripts/maps/Route110.inc b/data/scripts/maps/Route110.inc
index 0fa78b385..f07ca623e 100644
--- a/data/scripts/maps/Route110.inc
+++ b/data/scripts/maps/Route110.inc
@@ -176,7 +176,7 @@ Route110_EventScript_1EF409:: @ 81EF409
Route110_EventScript_1EF420:: @ 81EF420
trainerbattle 2, TRAINER_EDWIN_1, 0, Route110_Text_29815E, Route110_Text_29818F, Route110_EventScript_1EF44C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route110_EventScript_1EF46B
msgbox Route110_Text_2981B3, 4
@@ -216,7 +216,7 @@ Route110_EventScript_1EF4B0:: @ 81EF4B0
Route110_EventScript_1EF4C7:: @ 81EF4C7
trainerbattle 2, TRAINER_BENJAMIN_1, 0, Route110_Text_297C63, Route110_Text_297C8A, Route110_EventScript_1EF4F3
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route110_EventScript_1EF512
msgbox Route110_Text_297CB4, 4
@@ -246,7 +246,7 @@ Route110_EventScript_1EF529:: @ 81EF529
Route110_EventScript_1EF540:: @ 81EF540
trainerbattle 2, TRAINER_ABIGAIL_1, 0, Route110_Text_297DFA, Route110_Text_297E69, Route110_EventScript_1EF56C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route110_EventScript_1EF58B
msgbox Route110_Text_297E88, 4
@@ -271,7 +271,7 @@ Route110_EventScript_1EF58B:: @ 81EF58B
Route110_EventScript_1EF5A2:: @ 81EF5A2
trainerbattle 2, TRAINER_ISABEL_1, 0, Route110_Text_298349, Route110_Text_298389, Route110_EventScript_1EF5CE
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route110_EventScript_1EF5ED
msgbox Route110_Text_2983A2, 4
diff --git a/data/scripts/maps/Route111.inc b/data/scripts/maps/Route111.inc
index c51b07b6c..18dc4c389 100644
--- a/data/scripts/maps/Route111.inc
+++ b/data/scripts/maps/Route111.inc
@@ -473,7 +473,7 @@ Route111_EventScript_1F1249:: @ 81F1249
Route111_EventScript_1F1260:: @ 81F1260
trainerbattle 2, TRAINER_DUSTY_1, 0, Route111_Text_298B08, Route111_Text_298B53, Route111_EventScript_1F128C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route111_EventScript_1F12AB
msgbox Route111_Text_298B9A, 4
@@ -513,7 +513,7 @@ Route111_EventScript_1F12F0:: @ 81F12F0
Route111_EventScript_1F1307:: @ 81F1307
trainerbattle 2, TRAINER_WILTON_1, 0, Route111_Text_298F79, Route111_Text_298FA9, Route111_EventScript_1F1333
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route111_EventScript_1F1352
msgbox Route111_Text_298FD4, 4
@@ -538,7 +538,7 @@ Route111_EventScript_1F1352:: @ 81F1352
Route111_EventScript_1F1369:: @ 81F1369
trainerbattle 2, TRAINER_BROOKE_1, 0, Route111_Text_299143, Route111_Text_299193, Route111_EventScript_1F1395
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route111_EventScript_1F13B4
msgbox Route111_Text_2991C2, 4
diff --git a/data/scripts/maps/Route112.inc b/data/scripts/maps/Route112.inc
index 066a7a347..6a9f506f6 100644
--- a/data/scripts/maps/Route112.inc
+++ b/data/scripts/maps/Route112.inc
@@ -67,7 +67,7 @@ Route112_EventScript_1F1E6A:: @ 81F1E6A
Route112_EventScript_1F1E81:: @ 81F1E81
trainerbattle 2, TRAINER_TRENT_1, 0, Route112_Text_299815, Route112_Text_29987C, Route112_EventScript_1F1EAD
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route112_EventScript_1F1ECC
msgbox Route112_Text_299896, 4
diff --git a/data/scripts/maps/Route113.inc b/data/scripts/maps/Route113.inc
index 7ee63e492..30bf10068 100644
--- a/data/scripts/maps/Route113.inc
+++ b/data/scripts/maps/Route113.inc
@@ -60,7 +60,7 @@ Route113_EventScript_1F21D7:: @ 81F21D7
Route113_EventScript_1F21EE:: @ 81F21EE
trainerbattle 2, TRAINER_MADELINE_1, 0, Route113_Text_299EA6, Route113_Text_299EF9, Route113_EventScript_1F221A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route113_EventScript_1F2239
msgbox Route113_Text_299F15, 4
@@ -85,7 +85,7 @@ Route113_EventScript_1F2239:: @ 81F2239
Route113_EventScript_1F2250:: @ 81F2250
trainerbattle 2, TRAINER_LAO_1, 0, Route113_Text_29A015, Route113_Text_29A04C, Route113_EventScript_1F227C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route113_EventScript_1F229B
msgbox Route113_Text_29A067, 4
diff --git a/data/scripts/maps/Route114.inc b/data/scripts/maps/Route114.inc
index cca7be5af..f1aaf24d2 100644
--- a/data/scripts/maps/Route114.inc
+++ b/data/scripts/maps/Route114.inc
@@ -110,7 +110,7 @@ Route114_EventScript_1F2685:: @ 81F2685
Route114_EventScript_1F269C:: @ 81F269C
trainerbattle 2, TRAINER_STEVE_1, 0, Route114_Text_29A943, Route114_Text_29A973, Route114_EventScript_1F26C8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route114_EventScript_1F26E7
msgbox Route114_Text_29A981, 4
@@ -135,7 +135,7 @@ Route114_EventScript_1F26E7:: @ 81F26E7
Route114_EventScript_1F26FE:: @ 81F26FE
trainerbattle 2, TRAINER_BERNIE_1, 0, Route114_Text_29AADB, Route114_Text_29AB1A, Route114_EventScript_1F272A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route114_EventScript_1F2749
msgbox Route114_Text_29AB36, 4
diff --git a/data/scripts/maps/Route115.inc b/data/scripts/maps/Route115.inc
index 8ea531f9d..8adf2fa04 100644
--- a/data/scripts/maps/Route115.inc
+++ b/data/scripts/maps/Route115.inc
@@ -38,7 +38,7 @@ Route115_EventScript_1F2985:: @ 81F2985
Route115_EventScript_1F298E:: @ 81F298E
trainerbattle 2, TRAINER_TIMOTHY_1, 0, Route115_Text_29B1FA, Route115_Text_29B230, Route115_EventScript_1F29BA
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route115_EventScript_1F29D9
msgbox Route115_Text_29B258, 4
@@ -68,7 +68,7 @@ Route115_EventScript_1F29F0:: @ 81F29F0
Route115_EventScript_1F2A07:: @ 81F2A07
trainerbattle 2, TRAINER_NOB_1, 0, Route115_Text_29B449, Route115_Text_29B480, Route115_EventScript_1F2A33
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route115_EventScript_1F2A52
msgbox Route115_Text_29B49D, 4
@@ -93,7 +93,7 @@ Route115_EventScript_1F2A52:: @ 81F2A52
Route115_EventScript_1F2A69:: @ 81F2A69
trainerbattle 2, TRAINER_CYNDY_1, 0, Route115_Text_29B5EF, Route115_Text_29B62D, Route115_EventScript_1F2A95
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route115_EventScript_1F2AB4
msgbox Route115_Text_29B647, 4
diff --git a/data/scripts/maps/Route116.inc b/data/scripts/maps/Route116.inc
index 359f21375..4e6a6be80 100644
--- a/data/scripts/maps/Route116.inc
+++ b/data/scripts/maps/Route116.inc
@@ -259,7 +259,7 @@ Route116_EventScript_1F2EA0:: @ 81F2EA0
Route116_EventScript_1F2EB7:: @ 81F2EB7
trainerbattle 2, TRAINER_JERRY_1, 0, Route116_Text_29BD0C, Route116_Text_29BD66, Route116_EventScript_1F2EF8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route116_EventScript_1F2F4E
setvar VAR_0x8004, 273
@@ -271,7 +271,7 @@ Route116_EventScript_1F2EB7:: @ 81F2EB7
end
Route116_EventScript_1F2EF8:: @ 81F2EF8
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route116_EventScript_1F2F03
release
end
@@ -288,7 +288,7 @@ Route116_EventScript_1F2F03:: @ 81F2F03
end
Route116_EventScript_1F2F22:: @ 81F2F22
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route116_EventScript_1F2F35
msgbox Route116_Text_29BD92, 4
release
@@ -320,7 +320,7 @@ Route116_EventScript_1F2F7C:: @ 81F2F7C
Route116_EventScript_1F2F93:: @ 81F2F93
trainerbattle 2, TRAINER_KAREN_1, 0, Route116_Text_29BFC5, Route116_Text_29BFFA, Route116_EventScript_1F2FD4
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route116_EventScript_1F302A
setvar VAR_0x8004, 280
@@ -332,7 +332,7 @@ Route116_EventScript_1F2F93:: @ 81F2F93
end
Route116_EventScript_1F2FD4:: @ 81F2FD4
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route116_EventScript_1F2FDF
release
end
@@ -349,7 +349,7 @@ Route116_EventScript_1F2FDF:: @ 81F2FDF
end
Route116_EventScript_1F2FFE:: @ 81F2FFE
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route116_EventScript_1F3011
msgbox Route116_Text_29C010, 4
release
diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc
index 01463516b..5140596d8 100644
--- a/data/scripts/maps/Route117.inc
+++ b/data/scripts/maps/Route117.inc
@@ -40,7 +40,7 @@ Route117_EventScript_1F39C7:: @ 81F39C7
Route117_EventScript_1F39D0:: @ 81F39D0
trainerbattle 2, TRAINER_ISAAC_1, 0, Route117_Text_29C43F, Route117_Text_29C47A, Route117_EventScript_1F39FC
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3A1B
msgbox Route117_Text_29C498, 4
@@ -65,7 +65,7 @@ Route117_EventScript_1F3A1B:: @ 81F3A1B
Route117_EventScript_1F3A32:: @ 81F3A32
trainerbattle 2, TRAINER_LYDIA_1, 0, Route117_Text_29C612, Route117_Text_29C659, Route117_EventScript_1F3A5E
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3A7D
msgbox Route117_Text_29C679, 4
@@ -90,7 +90,7 @@ Route117_EventScript_1F3A7D:: @ 81F3A7D
Route117_EventScript_1F3A94:: @ 81F3A94
trainerbattle 2, TRAINER_DYLAN_1, 0, Route117_Text_29C7A5, Route117_Text_29C7EB, Route117_EventScript_1F3AC0
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3ADF
msgbox Route117_Text_29C800, 4
@@ -115,7 +115,7 @@ Route117_EventScript_1F3ADF:: @ 81F3ADF
Route117_EventScript_1F3AF6:: @ 81F3AF6
trainerbattle 2, TRAINER_MARIA_1, 0, Route117_Text_29C955, Route117_Text_29C9A6, Route117_EventScript_1F3B22
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3B41
msgbox Route117_Text_29C9D0, 4
@@ -145,7 +145,7 @@ Route117_EventScript_1F3B58:: @ 81F3B58
Route117_EventScript_1F3B6F:: @ 81F3B6F
trainerbattle 6, TRAINER_ANNA_AND_MEG_1, 0, Route117_Text_29CC4A, Route117_Text_29CC8E, Route117_Text_29CD61, Route117_EventScript_1F3B9F
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3BB8
msgbox Route117_Text_29CCCB, 4
@@ -168,7 +168,7 @@ Route117_EventScript_1F3BB8:: @ 81F3BB8
Route117_EventScript_1F3BD3:: @ 81F3BD3
trainerbattle 6, TRAINER_ANNA_AND_MEG_1, 0, Route117_Text_29CD9D, Route117_Text_29CDE9, Route117_Text_29CE52, Route117_EventScript_1F3C03
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3C1C
msgbox Route117_Text_29CE17, 4
diff --git a/data/scripts/maps/Route118.inc b/data/scripts/maps/Route118.inc
index 42c3d6d57..5d46224a9 100644
--- a/data/scripts/maps/Route118.inc
+++ b/data/scripts/maps/Route118.inc
@@ -188,7 +188,7 @@ Route118_Movement_1F3F7E: @ 81F3F7E
Route118_EventScript_1F3F87:: @ 81F3F87
trainerbattle 2, TRAINER_ROSE_1, 0, Route118_Text_29D290, Route118_Text_29D2D8, Route118_EventScript_1F3FB3
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route118_EventScript_1F3FD2
msgbox Route118_Text_29D2FA, 4
@@ -223,7 +223,7 @@ Route118_EventScript_1F4000:: @ 81F4000
Route118_EventScript_1F4017:: @ 81F4017
trainerbattle 2, TRAINER_DALTON_1, 0, Route118_Text_29D6AF, Route118_Text_29D6CD, Route118_EventScript_1F4043
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route118_EventScript_1F4062
msgbox Route118_Text_29D6D8, 4
diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc
index 4436005ba..f9bbadb85 100644
--- a/data/scripts/maps/Route119.inc
+++ b/data/scripts/maps/Route119.inc
@@ -368,7 +368,7 @@ Route119_EventScript_1F47F9:: @ 81F47F9
Route119_EventScript_1F4810:: @ 81F4810
trainerbattle 2, TRAINER_JACKSON_1, 0, Route119_Text_29DC4C, Route119_Text_29DC9F, Route119_EventScript_1F483C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route119_EventScript_1F485B
msgbox Route119_Text_29DCC6, 4
@@ -393,7 +393,7 @@ Route119_EventScript_1F485B:: @ 81F485B
Route119_EventScript_1F4872:: @ 81F4872
trainerbattle 2, TRAINER_CATHERINE_1, 0, Route119_Text_29DE0F, Route119_Text_29DE5D, Route119_EventScript_1F489E
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route119_EventScript_1F48BD
msgbox Route119_Text_29DE88, 4
diff --git a/data/scripts/maps/Route120.inc b/data/scripts/maps/Route120.inc
index aaffe0f12..9651ab8ab 100644
--- a/data/scripts/maps/Route120.inc
+++ b/data/scripts/maps/Route120.inc
@@ -297,7 +297,7 @@ Route120_EventScript_1F57D7:: @ 81F57D7
Route120_EventScript_1F57EE:: @ 81F57EE
trainerbattle 2, TRAINER_ROBERT_1, 0, Route120_Text_29E6E3, Route120_Text_29E70A, Route120_EventScript_1F581A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route120_EventScript_1F5839
msgbox Route120_Text_29E726, 4
@@ -332,7 +332,7 @@ Route120_EventScript_1F5867:: @ 81F5867
Route120_EventScript_1F587E:: @ 81F587E
trainerbattle 2, TRAINER_JEFFREY_1, 0, Route120_Text_29E9D7, Route120_Text_29E9FF, Route120_EventScript_1F58AA
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route120_EventScript_1F58C9
msgbox Route120_Text_29EA08, 4
diff --git a/data/scripts/maps/Route121.inc b/data/scripts/maps/Route121.inc
index 0d1f8863e..59623b4e6 100644
--- a/data/scripts/maps/Route121.inc
+++ b/data/scripts/maps/Route121.inc
@@ -72,7 +72,7 @@ Route121_EventScript_1F5E74:: @ 81F5E74
Route121_EventScript_1F5E8B:: @ 81F5E8B
trainerbattle 2, TRAINER_WALTER_1, 0, Route121_Text_29F199, Route121_Text_29F20D, Route121_EventScript_1F5EB7
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route121_EventScript_1F5ED6
msgbox Route121_Text_29F21E, 4
@@ -112,7 +112,7 @@ Route121_EventScript_1F5F1F:: @ 81F5F1F
Route121_EventScript_1F5F3A:: @ 81F5F3A
trainerbattle 2, TRAINER_JESSICA_1, 0, Route121_Text_29F612, Route121_Text_29F641, Route121_EventScript_1F5F66
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route121_EventScript_1F5F85
msgbox Route121_Text_29F66F, 4
@@ -157,7 +157,7 @@ Route121_EventScript_1F5FE1:: @ 81F5FE1
Route121_EventScript_1F5FF8:: @ 81F5FF8
trainerbattle 2, TRAINER_CRISTIN_1, 0, Route121_Text_29F770, Route121_Text_29F7C1, Route121_EventScript_1F6024
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route121_EventScript_1F6043
msgbox Route121_Text_29F7D4, 4
diff --git a/data/scripts/maps/Route123.inc b/data/scripts/maps/Route123.inc
index 8eb397fd4..ee659a496 100644
--- a/data/scripts/maps/Route123.inc
+++ b/data/scripts/maps/Route123.inc
@@ -62,7 +62,7 @@ Route123_EventScript_1F61F3:: @ 81F61F3
Route123_EventScript_1F620A:: @ 81F620A
trainerbattle 2, TRAINER_CAMERON_1, 0, Route123_Text_29FDBA, Route123_Text_29FE1E, Route123_EventScript_1F6236
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route123_EventScript_1F6255
msgbox Route123_Text_29FE2A, 4
@@ -87,7 +87,7 @@ Route123_EventScript_1F6255:: @ 81F6255
Route123_EventScript_1F626C:: @ 81F626C
trainerbattle 2, TRAINER_JACKI_1, 0, Route123_Text_29FF61, Route123_Text_29FFD8, Route123_EventScript_1F6298
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route123_EventScript_1F62B7
msgbox Route123_Text_29FFE5, 4
@@ -162,7 +162,7 @@ Route123_EventScript_1F63A5:: @ 81F63A5
Route123_EventScript_1F63BC:: @ 81F63BC
trainerbattle 2, TRAINER_FERNANDO_1, 0, Route123_Text_2A0323, Route123_Text_2A035C, Route123_EventScript_1F63E8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route123_EventScript_1F6407
msgbox Route123_Text_2A0389, 4
diff --git a/data/scripts/maps/Route124.inc b/data/scripts/maps/Route124.inc
index 2a0298650..01687eba8 100644
--- a/data/scripts/maps/Route124.inc
+++ b/data/scripts/maps/Route124.inc
@@ -23,7 +23,7 @@ Route124_EventScript_1F659C:: @ 81F659C
Route124_EventScript_1F65B3:: @ 81F65B3
trainerbattle 2, TRAINER_JENNY_1, 0, Route124_Text_2A0B37, Route124_Text_2A0B7C, Route124_EventScript_1F65DF
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route124_EventScript_1F65FE
msgbox Route124_Text_2A0B9A, 4
@@ -58,7 +58,7 @@ Route124_EventScript_1F662C:: @ 81F662C
Route124_EventScript_1F6643:: @ 81F6643
trainerbattle 6, TRAINER_LILA_AND_ROY_1, 0, Route124_Text_2A0E87, Route124_Text_2A0EFE, Route124_Text_2A0F8C, Route124_EventScript_1F6673
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route124_EventScript_1F668C
msgbox Route124_Text_2A0F3A, 4
@@ -81,7 +81,7 @@ Route124_EventScript_1F668C:: @ 81F668C
Route124_EventScript_1F66A7:: @ 81F66A7
trainerbattle 6, TRAINER_LILA_AND_ROY_1, 0, Route124_Text_2A0FD1, Route124_Text_2A1012, Route124_Text_2A10E5, Route124_EventScript_1F66D7
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route124_EventScript_1F66F0
msgbox Route124_Text_2A103E, 4
diff --git a/data/scripts/maps/Route125.inc b/data/scripts/maps/Route125.inc
index 953bf52b2..b93e7f016 100644
--- a/data/scripts/maps/Route125.inc
+++ b/data/scripts/maps/Route125.inc
@@ -48,7 +48,7 @@ Route125_EventScript_1F67E9:: @ 81F67E9
Route125_EventScript_1F6800:: @ 81F6800
trainerbattle 2, TRAINER_ERNEST_1, 0, Route125_Text_2A16FC, Route125_Text_2A173A, Route125_EventScript_1F682C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route125_EventScript_1F684B
msgbox Route125_Text_2A1755, 4
diff --git a/data/scripts/maps/Route126.inc b/data/scripts/maps/Route126.inc
index 4678fe39d..e6f8848b7 100644
--- a/data/scripts/maps/Route126.inc
+++ b/data/scripts/maps/Route126.inc
@@ -44,7 +44,7 @@ Route126_EventScript_1F6960:: @ 81F6960
Route126_EventScript_1F6977:: @ 81F6977
trainerbattle 2, TRAINER_PABLO_1, 0, Route126_Text_2A1EA5, Route126_Text_2A1EE3, Route126_EventScript_1F69A3
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route126_EventScript_1F69C2
msgbox Route126_Text_2A1F10, 4
diff --git a/data/scripts/maps/Route127.inc b/data/scripts/maps/Route127.inc
index 9851df043..68992425e 100644
--- a/data/scripts/maps/Route127.inc
+++ b/data/scripts/maps/Route127.inc
@@ -63,7 +63,7 @@ Route127_EventScript_1F6ABF:: @ 81F6ABF
Route127_EventScript_1F6AD6:: @ 81F6AD6
trainerbattle 2, TRAINER_KOJI_1, 0, Route127_Text_2A264D, Route127_Text_2A2685, Route127_EventScript_1F6B02
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route127_EventScript_1F6B21
msgbox Route127_Text_2A26AC, 4
diff --git a/data/scripts/maps/Route128.inc b/data/scripts/maps/Route128.inc
index 1ba1b3448..21824eb41 100644
--- a/data/scripts/maps/Route128.inc
+++ b/data/scripts/maps/Route128.inc
@@ -177,7 +177,7 @@ Route128_Movement_1F6CBB: @ 81F6CBB
Route128_EventScript_1F6CBE:: @ 81F6CBE
trainerbattle 2, TRAINER_ISAIAH_1, 0, Route128_Text_2A287F, Route128_Text_2A28AB, Route128_EventScript_1F6CEA
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route128_EventScript_1F6D09
msgbox Route128_Text_2A28D7, 4
@@ -202,7 +202,7 @@ Route128_EventScript_1F6D09:: @ 81F6D09
Route128_EventScript_1F6D20:: @ 81F6D20
trainerbattle 2, TRAINER_KATELYN_1, 0, Route128_Text_2A2A1F, Route128_Text_2A2A94, Route128_EventScript_1F6D4C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route128_EventScript_1F6D6B
msgbox Route128_Text_2A2AB7, 4
diff --git a/data/scripts/maps/RustboroCity.inc b/data/scripts/maps/RustboroCity.inc
index 31182439b..14f155cee 100644
--- a/data/scripts/maps/RustboroCity.inc
+++ b/data/scripts/maps/RustboroCity.inc
@@ -52,7 +52,7 @@ RustboroCity_EventScript_1E0715:: @ 81E0715
waitmovement 0
msgbox RustboroCity_Text_1E22A5, 4
closemessage
- setflag FLAG_0x12F
+ setflag FLAG_HAS_MATCH_CALL
applymovement 15, RustboroCity_Movement_2725A4
waitmovement 0
playse SE_TK_KASYA
diff --git a/data/scripts/maps/RustboroCity_Gym.inc b/data/scripts/maps/RustboroCity_Gym.inc
index dec6a8e73..dde0cc6a6 100644
--- a/data/scripts/maps/RustboroCity_Gym.inc
+++ b/data/scripts/maps/RustboroCity_Gym.inc
@@ -3,7 +3,7 @@ RustboroCity_Gym_MapScripts:: @ 8212F30
RustboroCity_Gym_EventScript_212F31:: @ 8212F31
trainerbattle 1, TRAINER_ROXANNE_1, 0, RustboroCity_Gym_Text_21362A, RustboroCity_Gym_Text_21370B, RustboroCity_Gym_EventScript_212F66
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq RustboroCity_Gym_EventScript_212FC8
checkflag FLAG_0x0A5
diff --git a/data/scripts/maps/SkyPillar_Top.inc b/data/scripts/maps/SkyPillar_Top.inc
index d5a4e477c..7d7e575fc 100644
--- a/data/scripts/maps/SkyPillar_Top.inc
+++ b/data/scripts/maps/SkyPillar_Top.inc
@@ -53,7 +53,7 @@ SkyPillar_Top_EventScript_239722:: @ 8239722
waitmoncry
setwildbattle SPECIES_RAYQUAZA, 70, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/SootopolisCity_Gym_1F.inc b/data/scripts/maps/SootopolisCity_Gym_1F.inc
index e28d8d13f..8b6a5754e 100644
--- a/data/scripts/maps/SootopolisCity_Gym_1F.inc
+++ b/data/scripts/maps/SootopolisCity_Gym_1F.inc
@@ -87,7 +87,7 @@ SootopolisCity_Gym_1F_Movement_224F42: @ 8224F42
SootopolisCity_Gym_1F_EventScript_224F44:: @ 8224F44
trainerbattle 1, TRAINER_JUAN_1, 0, SootopolisCity_Gym_1F_Text_225268, SootopolisCity_Gym_1F_Text_225432, SootopolisCity_Gym_1F_EventScript_224F82
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq SootopolisCity_Gym_1F_EventScript_225025
checkflag FLAG_0x0AC
diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc
index 1853c08b8..aa19dc5fb 100644
--- a/data/scripts/maps/SouthernIsland_Interior.inc
+++ b/data/scripts/maps/SouthernIsland_Interior.inc
@@ -87,7 +87,7 @@ SouthernIsland_Interior_EventScript_242AD0:: @ 8242AD0
compare_var_to_value VAR_0x40D5, 0
call_if 5, SouthernIsland_Interior_EventScript_242BB7
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B08EC
+ special BattleSetup_StartLatiBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/TerraCave_End.inc b/data/scripts/maps/TerraCave_End.inc
index a39856dda..f3168036f 100644
--- a/data/scripts/maps/TerraCave_End.inc
+++ b/data/scripts/maps/TerraCave_End.inc
@@ -38,7 +38,7 @@ TerraCave_End_EventScript_23B0EC:: @ 823B0EC
setvar VAR_LAST_TALKED, 1
setwildbattle SPECIES_GROUDON, 70, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
setvar VAR_0x4001, 0
diff --git a/data/scripts/maps/VictoryRoad_1F.inc b/data/scripts/maps/VictoryRoad_1F.inc
index 8bc22aa3d..94ecc0946 100644
--- a/data/scripts/maps/VictoryRoad_1F.inc
+++ b/data/scripts/maps/VictoryRoad_1F.inc
@@ -83,7 +83,7 @@ VictoryRoad_1F_EventScript_235E2C:: @ 8235E2C
VictoryRoad_1F_EventScript_235E35:: @ 8235E35
trainerbattle 0, TRAINER_WALLY_3, 0, VictoryRoad_1F_Text_236073, VictoryRoad_1F_Text_2360DA
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq VictoryRoad_1F_EventScript_235E5C
msgbox VictoryRoad_1F_Text_2360FE, 6
diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc
index 05d93c35d..184a00a0d 100644
--- a/data/scripts/players_house.inc
+++ b/data/scripts/players_house.inc
@@ -318,7 +318,7 @@ LittlerootTown_MaysHouse_1F_EventScript_2929C5:: @ 82929C5
goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A0F
compare_var_to_value VAR_0x408C, 4
goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A0F
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A19
checkflag FLAG_0x052
goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A86
diff --git a/data/specials.inc b/data/specials.inc
index 04b38ffc6..d159df31f 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -61,17 +61,17 @@ gSpecials:: @ 81DBA64
def_special FieldObjectInteractionWaterBerryTree
def_special PlayerHasBerries
def_special IsEnigmaBerryValid
- def_special sub_80B170C
- def_special sub_80B1A14
- def_special special_trainer_unable_to_battle
- def_special check_trainer_flag
+ def_special GetTrainerBattleMode
+ def_special ShowTrainerIntroSpeech
+ def_special ShowTrainerCantBattleSpeech
+ def_special GetTrainerFlag
def_special sub_80B45AC
def_special SetUpTrainerEncounterMusic
- def_special sub_80B226C
- def_special sub_80B22A0
- def_special sub_80B19EC
+ def_special ShouldTryRematchBattle
+ def_special IsTrainerReadyForRematch
+ def_special BattleSetup_StartRematchBattle
def_special sub_80C7578
- def_special sub_80F92F8
+ def_special HasEnoughMonsForDoubleBattle
def_special TurnOffTVScreen
def_special DoTVShow
def_special DoPokeNews
@@ -166,8 +166,8 @@ gSpecials:: @ 81DBA64
def_special sub_8085784
def_special StartWallClock
def_special Special_ViewWallClock
- def_special sub_80B1138
- def_special sub_80B086C
+ def_special ChooseStarter
+ def_special StartWallyTutorialBattle
def_special ChangePokemonNickname
def_special sub_81B94B0
def_special GetFirstFreePokeblockSlot
@@ -320,9 +320,9 @@ gSpecials:: @ 81DBA64
def_special sub_8139540
def_special sub_809E1C8
def_special sub_8139560
- def_special sub_80B0A18
- def_special sub_80B0934
- def_special sub_80B0A74
+ def_special StartGroudonKyogreBattle
+ def_special BattleSetup_StartLegendaryBattle
+ def_special StartRegiBattle
def_special sub_80B16D8
def_special DoSealedChamberShakingEffect2
def_special sub_8139634
@@ -332,7 +332,7 @@ gSpecials:: @ 81DBA64
def_special sub_80F8D28
def_special sub_80F8EB8
def_special sub_8162794
- def_special sub_80B08EC
+ def_special BattleSetup_StartLatiBattle
def_special sub_8139648
def_special sub_8139668
def_special sub_80F8FA0
@@ -415,7 +415,7 @@ gSpecials:: @ 81DBA64
def_special PutLilycoveContestLadyShowOnTheAir
def_special sub_813B880
def_special sub_81A085C
- def_special CheckIfMultipleTrainersWantBattle
+ def_special ShouldTryGetTrainerScript
def_special AddMapNamePopUpWindowTask
def_special AddMapNamePopUpWindowTask
def_special sub_81BE994
diff --git a/include/battle.h b/include/battle.h
index 7c8c81f52..71dbe9a57 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -53,7 +53,7 @@
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
#define BATTLE_TYPE_FACTORY 0x80000
-#define BATTLE_TYPE_x100000 0x100000
+#define BATTLE_TYPE_PIKE 0x100000
#define BATTLE_TYPE_PYRAMID 0x200000
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
#define BATTLE_TYPE_x800000 0x800000
@@ -62,7 +62,7 @@
#define BATTLE_TYPE_x4000000 0x4000000
#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
-#define BATTLE_TYPE_KYORGE 0x20000000
+#define BATTLE_TYPE_KYOGRE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
#define BATTLE_TYPE_x80000000 0x80000000
@@ -72,8 +72,8 @@
#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_x100000 | 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_x100000)
+#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
@@ -229,9 +229,9 @@
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
-#define BATTLE_TERRAIN_ROCK 6
+#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
-#define BATTLE_TERRAIN_INSIDE 8
+#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
// array entries for battle communication
@@ -298,7 +298,6 @@ struct TrainerMonNoItemDefaultMoves
u16 species;
};
-u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
u8 GetBankSide(u8 bank);
struct TrainerMonItemDefaultMoves
@@ -328,10 +327,10 @@ struct TrainerMonItemCustomMoves
union TrainerMonPtr
{
- struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves;
- struct TrainerMonNoItemCustomMoves* NoItemCustomMoves;
- struct TrainerMonItemDefaultMoves* ItemDefaultMoves;
- struct TrainerMonItemCustomMoves* ItemCustomMoves;
+ struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
+ struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
+ struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
+ struct TrainerMonItemCustomMoves *ItemCustomMoves;
};
struct Trainer
@@ -348,9 +347,6 @@ struct Trainer
/*0x24*/ union TrainerMonPtr party;
};
-#define PARTY_FLAG_CUSTOM_MOVES 0x1
-#define PARTY_FLAG_HAS_ITEM 0x2
-
extern const struct Trainer gTrainers[];
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
diff --git a/include/battle_setup.h b/include/battle_setup.h
index 0168022cc..e4bae6fdb 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -1,18 +1,85 @@
#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
-void BattleSetup_StartScriptedWildBattle(void);
-u8 BattleSetup_GetTerrainId(void);
-u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
-void BattleSetup_StartBattlePikeWildBattle(void);
+enum
+{
+ TRAINER_BATTLE_NORMAL,
+ TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC,
+ TRAINER_BATTLE_CONTINUE_SCRIPT,
+ TRAINER_BATTLE_NORMAL_NO_INTRO_TEXT,
+ TRAINER_BATTLE_DOUBLE,
+ TRAINER_BATTLE_REMATCH,
+ TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE,
+ TRAINER_BATTLE_REMATCH_DOUBLE,
+ TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC,
+ TRAINER_BATTLE_9,
+ TRAINER_BATTLE_SET_TRAINER_A,
+ TRAINER_BATTLE_SET_TRAINER_B,
+ TRAINER_BATTLE_12,
+};
+
+#define REMATCHES_COUNT 5
+#define REMATCH_TABLE_ENTRIES 78
+#define REMATCH_WALLY_ENTRY 64
+#define REMATCH_ELITE_FOUR_ENTRIES 73
+
+struct RematchTrainer
+{
+ u16 trainerIds[REMATCHES_COUNT];
+ u16 mapGroup;
+ u16 mapNum;
+};
+
+extern const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES];
+
+extern u16 gTrainerBattleOpponent_A;
+extern u16 gTrainerBattleOpponent_B;
+extern u16 gPartnerTrainerId;
+
void BattleSetup_StartWildBattle(void);
+void BattleSetup_StartBattlePikeWildBattle(void);
void BattleSetup_StartRoamerBattle(void);
-
-u8 HasTrainerAlreadyBeenFought(u16);
-void trainer_flag_set(u16);
-void trainer_flag_clear(u16);
+void StartWallyTutorialBattle(void);
+void BattleSetup_StartScriptedWildBattle(void);
+void BattleSetup_StartLatiBattle(void);
+void BattleSetup_StartLegendaryBattle(void);
+void StartGroudonKyogreBattle(void);
+void StartRegiBattle(void);
+u8 BattleSetup_GetTerrainId(void);
+u8 sub_80B100C(s32 arg0);
+void ChooseStarter(void);
+void ResetTrainerOpponentIds(void);
+void SetMapVarsToTrainer(void);
+const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
+void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript);
+void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript);
+void SetUpTwoTrainersBattle(void);
+bool32 GetTrainerFlagFromScriptPointer(const u8 *data);
+void sub_80B16D8(void);
+u8 GetTrainerBattleMode(void);
+bool8 GetTrainerFlag(void);
+bool8 HasTrainerBeenFought(u16 trainerId);
+void SetTrainerFlag(u16 trainerId);
+void ClearTrainerFlag(u16 trainerId);
void BattleSetup_StartTrainerBattle(void);
-u8 *BattleSetup_GetScriptAddrAfterBattle(void);
-u8 *BattleSetup_GetTrainerPostBattleScript(void);
+void BattleSetup_StartRematchBattle(void);
+void ShowTrainerIntroSpeech(void);
+const u8 *BattleSetup_GetScriptAddrAfterBattle(void);
+const u8 *BattleSetup_GetTrainerPostBattleScript(void);
+void ShowTrainerCantBattleSpeech(void);
+void SetUpTrainerEncounterMusic(void);
+const u8 *GetTrainerALoseText(void);
+const u8 *GetTrainerBLoseText(void);
+const u8 *GetTrainerWonSpeech(void);
+void UpdateRematchIfDefeated(s32 rematchTableId);
+void IncrementRematchStepCounter(void);
+void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum);
+bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum);
+bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum);
+u16 GetLastBeatenRematchTrainerId(u16 trainerId);
+bool8 ShouldTryRematchBattle(void);
+bool8 IsTrainerReadyForRematch(void);
+void ShouldTryGetTrainerScript(void);
+u16 CountBattledRematchTeams(u16 trainerId);
#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/battle_transition.h b/include/battle_transition.h
index 1603f5c93..84b5e37ec 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -2,5 +2,55 @@
#define GUARD_BATTLE_TRANSITION_H
void sub_8149DFC(u8 a1);
+void BattleTransition_StartOnField(u8 transitionID);
+void BattleTransition_Start(u8 transitionID);
+bool8 IsBattleTransitionDone(void);
+
+// credits for the names go to Dyskinesia and Tetrable
+// names are naturally subject to change
+
+#define B_TRANSITION_BLUR 0
+#define B_TRANSITION_SWIRL 1
+#define B_TRANSITION_SHUFFLE 2
+#define B_TRANSITION_BIG_POKEBALL 3
+#define B_TRANSITION_POKEBALLS_TRAIL 4
+#define B_TRANSITION_CLOCKWISE_BLACKFADE 5
+#define B_TRANSITION_RIPPLE 6
+#define B_TRANSITION_WAVE 7
+#define B_TRANSITION_SLICE 8
+#define B_TRANSITION_WHITEFADE 9
+#define B_TRANSITION_GRID_SQUARES 10
+#define B_TRANSITION_SHARDS 11
+#define B_TRANSITION_SYDNEY 12
+#define B_TRANSITION_PHOEBE 13
+#define B_TRANSITION_GLACIA 14
+#define B_TRANSITION_DRAKE 15
+#define B_TRANSITION_CHAMPION 16
+// added in Emerald
+#define B_TRANSITION_AQUA 17
+#define B_TRANSITION_MAGMA 18
+#define B_TRANSITION_REGICE 19
+#define B_TRANSITION_REGISTEEL 20
+#define B_TRANSITION_REGIROCK 21
+#define B_TRANSITION_KYOGRE 22
+#define B_TRANSITION_GROUDON 23
+#define B_TRANSITION_RAYQUAZA 24
+#define B_TRANSITION_25 25
+#define B_TRANSITION_26 26
+#define B_TRANSITION_27 27
+#define B_TRANSITION_28 28
+#define B_TRANSITION_29 29
+#define B_TRANSITION_30 30
+#define B_TRANSITION_31 31
+#define B_TRANSITION_32 32
+#define B_TRANSITION_33 33
+#define B_TRANSITION_34 34
+#define B_TRANSITION_35 35
+#define B_TRANSITION_36 36
+#define B_TRANSITION_37 37
+#define B_TRANSITION_38 38
+#define B_TRANSITION_39 39
+#define B_TRANSITION_40 40
+#define B_TRANSITION_41 41
#endif // GUARD_BATTLE_TRANSITION_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index e74ef1ef0..26d015c84 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -303,7 +303,7 @@
#define FLAG_0x12C 0x12C
#define FLAG_0x12D 0x12D
#define FLAG_0x12E 0x12E
-#define FLAG_0x12F 0x12F
+#define FLAG_HAS_MATCH_CALL 0x12F
#define FLAG_0x130 0x130
#define FLAG_0x131 0x131
#define FLAG_0x132 0x132
@@ -348,7 +348,7 @@
#define FLAG_0x159 0x159
#define FLAG_0x15A 0x15A
#define FLAG_0x15B 0x15B
-#define FLAG_0x15C 0x15C
+#define FLAG_MATCH_CALL_REGISTERED 0x15C
#define FLAG_0x15D 0x15D
#define FLAG_0x15E 0x15E
#define FLAG_0x15F 0x15F
diff --git a/include/constants/trainers.h b/include/constants/trainers.h
new file mode 100644
index 000000000..48d4f081e
--- /dev/null
+++ b/include/constants/trainers.h
@@ -0,0 +1,1129 @@
+#ifndef GUARD_TRAINERS_H
+#define GUARD_TRAINERS_H
+
+#define TRAINER_NONE 0
+#define TRAINER_SAWYER_1 1
+#define TRAINER_GRUNT_1 2
+#define TRAINER_GRUNT_2 3
+#define TRAINER_GRUNT_3 4
+#define TRAINER_GRUNT_4 5
+#define TRAINER_GRUNT_5 6
+#define TRAINER_GRUNT_6 7
+#define TRAINER_GRUNT_7 8
+#define TRAINER_GABRIELLE_1 9
+#define TRAINER_GRUNT_8 10
+#define TRAINER_MARCEL 11
+#define TRAINER_ALBERTO 12
+#define TRAINER_ED 13
+#define TRAINER_GRUNT_9 14
+#define TRAINER_DECLAN 15
+#define TRAINER_GRUNT_10 16
+#define TRAINER_GRUNT_11 17
+#define TRAINER_GRUNT_12 18
+#define TRAINER_GRUNT_13 19
+#define TRAINER_GRUNT_14 20
+#define TRAINER_GRUNT_15 21
+#define TRAINER_GRUNT_16 22
+#define TRAINER_GRUNT_17 23
+#define TRAINER_GRUNT_18 24
+#define TRAINER_GRUNT_19 25
+#define TRAINER_GRUNT_20 26
+#define TRAINER_GRUNT_21 27
+#define TRAINER_GRUNT_22 28
+#define TRAINER_FREDRICK 29
+#define TRAINER_MATT 30
+#define TRAINER_ZANDER 31
+#define TRAINER_SHELLY_1 32
+#define TRAINER_SHELLY_2 33
+#define TRAINER_ARCHIE 34
+#define TRAINER_LEAH 35
+#define TRAINER_DAISY 36
+#define TRAINER_ROSE_1 37
+#define TRAINER_FELIX 38
+#define TRAINER_VIOLET 39
+#define TRAINER_ROSE_2 40
+#define TRAINER_ROSE_3 41
+#define TRAINER_ROSE_4 42
+#define TRAINER_ROSE_5 43
+#define TRAINER_DUSTY_1 44
+#define TRAINER_CHIP 45
+#define TRAINER_FOSTER 46
+#define TRAINER_DUSTY_2 47
+#define TRAINER_DUSTY_3 48
+#define TRAINER_DUSTY_4 49
+#define TRAINER_DUSTY_5 50
+#define TRAINER_GABBY_AND_TY_1 51
+#define TRAINER_GABBY_AND_TY_2 52
+#define TRAINER_GABBY_AND_TY_3 53
+#define TRAINER_GABBY_AND_TY_4 54
+#define TRAINER_GABBY_AND_TY_5 55
+#define TRAINER_GABBY_AND_TY_6 56
+#define TRAINER_LOLA_1 57
+#define TRAINER_AUSTINA 58
+#define TRAINER_GWEN 59
+#define TRAINER_LOLA_2 60
+#define TRAINER_LOLA_3 61
+#define TRAINER_LOLA_4 62
+#define TRAINER_LOLA_5 63
+#define TRAINER_RICKY_1 64
+#define TRAINER_SIMON 65
+#define TRAINER_CHARLIE 66
+#define TRAINER_RICKY_2 67
+#define TRAINER_RICKY_3 68
+#define TRAINER_RICKY_4 69
+#define TRAINER_RICKY_5 70
+#define TRAINER_RANDALL 71
+#define TRAINER_PARKER 72
+#define TRAINER_GEORGE 73
+#define TRAINER_BERKE 74
+#define TRAINER_BRAXTON 75
+#define TRAINER_VINCENT 76
+#define TRAINER_LEROY 77
+#define TRAINER_WILTON_1 78
+#define TRAINER_EDGAR 79
+#define TRAINER_ALBERT 80
+#define TRAINER_SAMUEL 81
+#define TRAINER_VITO 82
+#define TRAINER_OWEN 83
+#define TRAINER_WILTON_2 84
+#define TRAINER_WILTON_3 85
+#define TRAINER_WILTON_4 86
+#define TRAINER_WILTON_5 87
+#define TRAINER_WARREN 88
+#define TRAINER_MARY 89
+#define TRAINER_ALEXIA 90
+#define TRAINER_JODY 91
+#define TRAINER_WENDY 92
+#define TRAINER_KEIRA 93
+#define TRAINER_BROOKE_1 94
+#define TRAINER_JENNIFER 95
+#define TRAINER_HOPE 96
+#define TRAINER_SHANNON 97
+#define TRAINER_MICHELLE 98
+#define TRAINER_CAROLINE 99
+#define TRAINER_JULIE 100
+#define TRAINER_BROOKE_2 101
+#define TRAINER_BROOKE_3 102
+#define TRAINER_BROOKE_4 103
+#define TRAINER_BROOKE_5 104
+#define TRAINER_PATRICIA 105
+#define TRAINER_KINDRA 106
+#define TRAINER_TAMMY 107
+#define TRAINER_VALERIE_1 108
+#define TRAINER_TASHA 109
+#define TRAINER_VALERIE_2 110
+#define TRAINER_VALERIE_3 111
+#define TRAINER_VALERIE_4 112
+#define TRAINER_VALERIE_5 113
+#define TRAINER_CINDY_1 114
+#define TRAINER_DAPHNE 115
+#define TRAINER_GRUNT_23 116
+#define TRAINER_CINDY_2 117
+#define TRAINER_BRIANNA 118
+#define TRAINER_NAOMI 119
+#define TRAINER_CINDY_3 120
+#define TRAINER_CINDY_4 121
+#define TRAINER_CINDY_5 122
+#define TRAINER_CINDY_6 123
+#define TRAINER_MELISSA 124
+#define TRAINER_SHEILA 125
+#define TRAINER_SHIRLEY 126
+#define TRAINER_JESSICA_1 127
+#define TRAINER_CONNIE 128
+#define TRAINER_BRIDGET 129
+#define TRAINER_OLIVIA 130
+#define TRAINER_TIFFANY 131
+#define TRAINER_JESSICA_2 132
+#define TRAINER_JESSICA_3 133
+#define TRAINER_JESSICA_4 134
+#define TRAINER_JESSICA_5 135
+#define TRAINER_WINSTON_1 136
+#define TRAINER_MOLLIE 137
+#define TRAINER_GARRET 138
+#define TRAINER_WINSTON_2 139
+#define TRAINER_WINSTON_3 140
+#define TRAINER_WINSTON_4 141
+#define TRAINER_WINSTON_5 142
+#define TRAINER_STEVE_1 143
+#define TRAINER_THALIA_1 144
+#define TRAINER_MARK 145
+#define TRAINER_GRUNT_24 146
+#define TRAINER_STEVE_2 147
+#define TRAINER_STEVE_3 148
+#define TRAINER_STEVE_4 149
+#define TRAINER_STEVE_5 150
+#define TRAINER_LUIS 151
+#define TRAINER_DOMINIK 152
+#define TRAINER_DOUGLAS 153
+#define TRAINER_DARRIN 154
+#define TRAINER_TONY_1 155
+#define TRAINER_JEROME 156
+#define TRAINER_MATTHEW 157
+#define TRAINER_DAVID 158
+#define TRAINER_SPENCER 159
+#define TRAINER_ROLAND 160
+#define TRAINER_NOLEN 161
+#define TRAINER_STAN 162
+#define TRAINER_BARRY 163
+#define TRAINER_DEAN 164
+#define TRAINER_RODNEY 165
+#define TRAINER_RICHARD 166
+#define TRAINER_HERMAN 167
+#define TRAINER_SANTIAGO 168
+#define TRAINER_GILBERT 169
+#define TRAINER_FRANKLIN 170
+#define TRAINER_KEVIN 171
+#define TRAINER_JACK 172
+#define TRAINER_DUDLEY 173
+#define TRAINER_CHAD 174
+#define TRAINER_TONY_2 175
+#define TRAINER_TONY_3 176
+#define TRAINER_TONY_4 177
+#define TRAINER_TONY_5 178
+#define TRAINER_TAKAO 179
+#define TRAINER_HITOSHI 180
+#define TRAINER_KIYO 181
+#define TRAINER_KOICHI 182
+#define TRAINER_NOB_1 183
+#define TRAINER_NOB_2 184
+#define TRAINER_NOB_3 185
+#define TRAINER_NOB_4 186
+#define TRAINER_NOB_5 187
+#define TRAINER_YUJI 188
+#define TRAINER_DAISUKE 189
+#define TRAINER_ATSUSHI 190
+#define TRAINER_KIRK 191
+#define TRAINER_GRUNT_25 192
+#define TRAINER_GRUNT_26 193
+#define TRAINER_SHAWN 194
+#define TRAINER_FERNANDO_1 195
+#define TRAINER_DALTON_1 196
+#define TRAINER_DALTON_2 197
+#define TRAINER_DALTON_3 198
+#define TRAINER_DALTON_4 199
+#define TRAINER_DALTON_5 200
+#define TRAINER_COLE 201
+#define TRAINER_JEFF 202
+#define TRAINER_AXLE 203
+#define TRAINER_JACE 204
+#define TRAINER_KEEGAN 205
+#define TRAINER_BERNIE_1 206
+#define TRAINER_BERNIE_2 207
+#define TRAINER_BERNIE_3 208
+#define TRAINER_BERNIE_4 209
+#define TRAINER_BERNIE_5 210
+#define TRAINER_DREW 211
+#define TRAINER_BEAU 212
+#define TRAINER_LARRY 213
+#define TRAINER_SHANE 214
+#define TRAINER_JUSTIN 215
+#define TRAINER_ETHAN_1 216
+#define TRAINER_AUTUMN 217
+#define TRAINER_TRAVIS 218
+#define TRAINER_ETHAN_2 219
+#define TRAINER_ETHAN_3 220
+#define TRAINER_ETHAN_4 221
+#define TRAINER_ETHAN_5 222
+#define TRAINER_BRENT 223
+#define TRAINER_DONALD 224
+#define TRAINER_TAYLOR 225
+#define TRAINER_JEFFREY_1 226
+#define TRAINER_DEREK 227
+#define TRAINER_JEFFREY_2 228
+#define TRAINER_JEFFREY_3 229
+#define TRAINER_JEFFREY_4 230
+#define TRAINER_JEFFREY_5 231
+#define TRAINER_EDWARD 232
+#define TRAINER_PRESTON 233
+#define TRAINER_VIRGIL 234
+#define TRAINER_BLAKE 235
+#define TRAINER_WILLIAM 236
+#define TRAINER_JOSHUA 237
+#define TRAINER_CAMERON_1 238
+#define TRAINER_CAMERON_2 239
+#define TRAINER_CAMERON_3 240
+#define TRAINER_CAMERON_4 241
+#define TRAINER_CAMERON_5 242
+#define TRAINER_JACLYN 243
+#define TRAINER_HANNAH 244
+#define TRAINER_SAMANTHA 245
+#define TRAINER_MAURA 246
+#define TRAINER_KAYLA 247
+#define TRAINER_ALEXIS 248
+#define TRAINER_JACKI_1 249
+#define TRAINER_JACKI_2 250
+#define TRAINER_JACKI_3 251
+#define TRAINER_JACKI_4 252
+#define TRAINER_JACKI_5 253
+#define TRAINER_WALTER_1 254
+#define TRAINER_MICAH 255
+#define TRAINER_THOMAS 256
+#define TRAINER_WALTER_2 257
+#define TRAINER_WALTER_3 258
+#define TRAINER_WALTER_4 259
+#define TRAINER_WALTER_5 260
+#define TRAINER_SIDNEY 261
+#define TRAINER_PHOEBE 262
+#define TRAINER_GLACIA 263
+#define TRAINER_DRAKE 264
+#define TRAINER_ROXANNE_1 265
+#define TRAINER_BRAWLY_1 266
+#define TRAINER_WATTSON_1 267
+#define TRAINER_FLANNERY_1 268
+#define TRAINER_NORMAN_1 269
+#define TRAINER_WINONA_1 270
+#define TRAINER_TATE_AND_LIZA_1 271
+#define TRAINER_JUAN_1 272
+#define TRAINER_JERRY_1 273
+#define TRAINER_TED 274
+#define TRAINER_PAUL 275
+#define TRAINER_JERRY_2 276
+#define TRAINER_JERRY_3 277
+#define TRAINER_JERRY_4 278
+#define TRAINER_JERRY_5 279
+#define TRAINER_KAREN_1 280
+#define TRAINER_GEORGIA 281
+#define TRAINER_KAREN_2 282
+#define TRAINER_KAREN_3 283
+#define TRAINER_KAREN_4 284
+#define TRAINER_KAREN_5 285
+#define TRAINER_KATE_AND_JOY 286
+#define TRAINER_ANNA_AND_MEG_1 287
+#define TRAINER_ANNA_AND_MEG_2 288
+#define TRAINER_ANNA_AND_MEG_3 289
+#define TRAINER_ANNA_AND_MEG_4 290
+#define TRAINER_ANNA_AND_MEG_5 291
+#define TRAINER_VICTOR 292
+#define TRAINER_MIGUEL_1 293
+#define TRAINER_COLTON 294
+#define TRAINER_MIGUEL_2 295
+#define TRAINER_MIGUEL_3 296
+#define TRAINER_MIGUEL_4 297
+#define TRAINER_MIGUEL_5 298
+#define TRAINER_VICTORIA 299
+#define TRAINER_VANESSA 300
+#define TRAINER_BETHANY 301
+#define TRAINER_ISABEL_1 302
+#define TRAINER_ISABEL_2 303
+#define TRAINER_ISABEL_3 304
+#define TRAINER_ISABEL_4 305
+#define TRAINER_ISABEL_5 306
+#define TRAINER_TIMOTHY_1 307
+#define TRAINER_TIMOTHY_2 308
+#define TRAINER_TIMOTHY_3 309
+#define TRAINER_TIMOTHY_4 310
+#define TRAINER_TIMOTHY_5 311
+#define TRAINER_VICKY 312
+#define TRAINER_SHELBY_1 313
+#define TRAINER_SHELBY_2 314
+#define TRAINER_SHELBY_3 315
+#define TRAINER_SHELBY_4 316
+#define TRAINER_SHELBY_5 317
+#define TRAINER_CALVIN_1 318
+#define TRAINER_BILLY 319
+#define TRAINER_JOSH 320
+#define TRAINER_TOMMY 321
+#define TRAINER_JOEY 322
+#define TRAINER_BEN 323
+#define TRAINER_QUINCY 324
+#define TRAINER_KATELYNN 325
+#define TRAINER_JAYLEN 326
+#define TRAINER_DILLON 327
+#define TRAINER_CALVIN_2 328
+#define TRAINER_CALVIN_3 329
+#define TRAINER_CALVIN_4 330
+#define TRAINER_CALVIN_5 331
+#define TRAINER_EDDIE 332
+#define TRAINER_ALLEN 333
+#define TRAINER_TIMMY 334
+#define TRAINER_WALLACE 335
+#define TRAINER_ANDREW 336
+#define TRAINER_IVAN 337
+#define TRAINER_CLAUDE 338
+#define TRAINER_ELLIOT_1 339
+#define TRAINER_NED 340
+#define TRAINER_DALE 341
+#define TRAINER_NOLAN 342
+#define TRAINER_BARNY 343
+#define TRAINER_WADE 344
+#define TRAINER_CARTER 345
+#define TRAINER_ELLIOT_2 346
+#define TRAINER_ELLIOT_3 347
+#define TRAINER_ELLIOT_4 348
+#define TRAINER_ELLIOT_5 349
+#define TRAINER_RONALD 350
+#define TRAINER_JACOB 351
+#define TRAINER_ANTHONY 352
+#define TRAINER_BENJAMIN_1 353
+#define TRAINER_BENJAMIN_2 354
+#define TRAINER_BENJAMIN_3 355
+#define TRAINER_BENJAMIN_4 356
+#define TRAINER_BENJAMIN_5 357
+#define TRAINER_ABIGAIL_1 358
+#define TRAINER_JASMINE 359
+#define TRAINER_ABIGAIL_2 360
+#define TRAINER_ABIGAIL_3 361
+#define TRAINER_ABIGAIL_4 362
+#define TRAINER_ABIGAIL_5 363
+#define TRAINER_DYLAN_1 364
+#define TRAINER_DYLAN_2 365
+#define TRAINER_DYLAN_3 366
+#define TRAINER_DYLAN_4 367
+#define TRAINER_DYLAN_5 368
+#define TRAINER_MARIA_1 369
+#define TRAINER_MARIA_2 370
+#define TRAINER_MARIA_3 371
+#define TRAINER_MARIA_4 372
+#define TRAINER_MARIA_5 373
+#define TRAINER_CAMDEN 374
+#define TRAINER_DEMETRIUS 375
+#define TRAINER_ISAIAH_1 376
+#define TRAINER_PABLO_1 377
+#define TRAINER_CHASE 378
+#define TRAINER_ISAIAH_2 379
+#define TRAINER_ISAIAH_3 380
+#define TRAINER_ISAIAH_4 381
+#define TRAINER_ISAIAH_5 382
+#define TRAINER_ISOBEL 383
+#define TRAINER_DONNY 384
+#define TRAINER_TALIA 385
+#define TRAINER_KATELYN_1 386
+#define TRAINER_ALLISON 387
+#define TRAINER_KATELYN_2 388
+#define TRAINER_KATELYN_3 389
+#define TRAINER_KATELYN_4 390
+#define TRAINER_KATELYN_5 391
+#define TRAINER_NICOLAS_1 392
+#define TRAINER_NICOLAS_2 393
+#define TRAINER_NICOLAS_3 394
+#define TRAINER_NICOLAS_4 395
+#define TRAINER_NICOLAS_5 396
+#define TRAINER_AARON 397
+#define TRAINER_PERRY 398
+#define TRAINER_HUGH 399
+#define TRAINER_PHIL 400
+#define TRAINER_JARED 401
+#define TRAINER_HUMBERTO 402
+#define TRAINER_PRESLEY 403
+#define TRAINER_EDWARDO 404
+#define TRAINER_COLIN 405
+#define TRAINER_ROBERT_1 406
+#define TRAINER_BENNY 407
+#define TRAINER_CHESTER 408
+#define TRAINER_ROBERT_2 409
+#define TRAINER_ROBERT_3 410
+#define TRAINER_ROBERT_4 411
+#define TRAINER_ROBERT_5 412
+#define TRAINER_ALEX 413
+#define TRAINER_BECK 414
+#define TRAINER_YASU 415
+#define TRAINER_TAKASHI 416
+#define TRAINER_DIANNE 417
+#define TRAINER_JANI 418
+#define TRAINER_LAO_1 419
+#define TRAINER_LUNG 420
+#define TRAINER_LAO_2 421
+#define TRAINER_LAO_3 422
+#define TRAINER_LAO_4 423
+#define TRAINER_LAO_5 424
+#define TRAINER_JOCELYN 425
+#define TRAINER_LAURA 426
+#define TRAINER_CYNDY_1 427
+#define TRAINER_CORA 428
+#define TRAINER_PAULA 429
+#define TRAINER_CYNDY_2 430
+#define TRAINER_CYNDY_3 431
+#define TRAINER_CYNDY_4 432
+#define TRAINER_CYNDY_5 433
+#define TRAINER_MADELINE_1 434
+#define TRAINER_CLARISSA 435
+#define TRAINER_ANGELICA 436
+#define TRAINER_MADELINE_2 437
+#define TRAINER_MADELINE_3 438
+#define TRAINER_MADELINE_4 439
+#define TRAINER_MADELINE_5 440
+#define TRAINER_BEVERLY 441
+#define TRAINER_IMANI 442
+#define TRAINER_KYLA 443
+#define TRAINER_DENISE 444
+#define TRAINER_BETH 445
+#define TRAINER_TARA 446
+#define TRAINER_MISSY 447
+#define TRAINER_ALICE 448
+#define TRAINER_JENNY_1 449
+#define TRAINER_GRACE 450
+#define TRAINER_TANYA 451
+#define TRAINER_SHARON 452
+#define TRAINER_NIKKI 453
+#define TRAINER_BRENDA 454
+#define TRAINER_KATIE 455
+#define TRAINER_SUSIE 456
+#define TRAINER_KARA 457
+#define TRAINER_DANA 458
+#define TRAINER_SIENNA 459
+#define TRAINER_DEBRA 460
+#define TRAINER_LINDA 461
+#define TRAINER_KAYLEE 462
+#define TRAINER_LAUREL 463
+#define TRAINER_CARLEE 464
+#define TRAINER_JENNY_2 465
+#define TRAINER_JENNY_3 466
+#define TRAINER_JENNY_4 467
+#define TRAINER_JENNY_5 468
+#define TRAINER_HEIDI 469
+#define TRAINER_BECKY 470
+#define TRAINER_CAROL 471
+#define TRAINER_NANCY 472
+#define TRAINER_MARTHA 473
+#define TRAINER_DIANA_1 474
+#define TRAINER_CEDRIC 475
+#define TRAINER_IRENE 476
+#define TRAINER_DIANA_2 477
+#define TRAINER_DIANA_3 478
+#define TRAINER_DIANA_4 479
+#define TRAINER_DIANA_5 480
+#define TRAINER_AMY_AND_LIV_1 481
+#define TRAINER_AMY_AND_LIV_2 482
+#define TRAINER_GINA_AND_MIA_1 483
+#define TRAINER_MIU_AND_YUKI 484
+#define TRAINER_AMY_AND_LIV_3 485
+#define TRAINER_GINA_AND_MIA_2 486
+#define TRAINER_AMY_AND_LIV_4 487
+#define TRAINER_AMY_AND_LIV_5 488
+#define TRAINER_AMY_AND_LIV_6 489
+#define TRAINER_HUEY 490
+#define TRAINER_EDMOND 491
+#define TRAINER_ERNEST_1 492
+#define TRAINER_DWAYNE 493
+#define TRAINER_PHILLIP 494
+#define TRAINER_LEONARD 495
+#define TRAINER_DUNCAN 496
+#define TRAINER_ERNEST_2 497
+#define TRAINER_ERNEST_3 498
+#define TRAINER_ERNEST_4 499
+#define TRAINER_ERNEST_5 500
+#define TRAINER_ELI 501
+#define TRAINER_ANNIKA 502
+#define TRAINER_JAZMYN 503
+#define TRAINER_JONAS 504
+#define TRAINER_KAYLEY 505
+#define TRAINER_AURON 506
+#define TRAINER_KELVIN 507
+#define TRAINER_MARLEY 508
+#define TRAINER_REYNA 509
+#define TRAINER_HUDSON 510
+#define TRAINER_CONOR 511
+#define TRAINER_EDWIN_1 512
+#define TRAINER_HECTOR 513
+#define TRAINER_TABITHA_1 514
+#define TRAINER_EDWIN_2 515
+#define TRAINER_EDWIN_3 516
+#define TRAINER_EDWIN_4 517
+#define TRAINER_EDWIN_5 518
+#define TRAINER_WALLY_1 519
+#define TRAINER_BRENDAN_1 520
+#define TRAINER_BRENDAN_2 521
+#define TRAINER_BRENDAN_3 522
+#define TRAINER_BRENDAN_4 523
+#define TRAINER_BRENDAN_5 524
+#define TRAINER_BRENDAN_6 525
+#define TRAINER_BRENDAN_7 526
+#define TRAINER_BRENDAN_8 527
+#define TRAINER_BRENDAN_9 528
+#define TRAINER_MAY_1 529
+#define TRAINER_MAY_2 530
+#define TRAINER_MAY_3 531
+#define TRAINER_MAY_4 532
+#define TRAINER_MAY_5 533
+#define TRAINER_MAY_6 534
+#define TRAINER_MAY_7 535
+#define TRAINER_MAY_8 536
+#define TRAINER_MAY_9 537
+#define TRAINER_ISAAC_1 538
+#define TRAINER_DAVIS 539
+#define TRAINER_MITCHELL 540
+#define TRAINER_ISAAC_2 541
+#define TRAINER_ISAAC_3 542
+#define TRAINER_ISAAC_4 543
+#define TRAINER_ISAAC_5 544
+#define TRAINER_LYDIA_1 545
+#define TRAINER_HALLE 546
+#define TRAINER_GARRISON 547
+#define TRAINER_LYDIA_2 548
+#define TRAINER_LYDIA_3 549
+#define TRAINER_LYDIA_4 550
+#define TRAINER_LYDIA_5 551
+#define TRAINER_JACKSON_1 552
+#define TRAINER_LORENZO 553
+#define TRAINER_SEBASTIAN 554
+#define TRAINER_JACKSON_2 555
+#define TRAINER_JACKSON_3 556
+#define TRAINER_JACKSON_4 557
+#define TRAINER_JACKSON_5 558
+#define TRAINER_CATHERINE_1 559
+#define TRAINER_JENNA 560
+#define TRAINER_SOPHIA 561
+#define TRAINER_CATHERINE_2 562
+#define TRAINER_CATHERINE_3 563
+#define TRAINER_CATHERINE_4 564
+#define TRAINER_CATHERINE_5 565
+#define TRAINER_JULIO 566
+#define TRAINER_GRUNT_27 567
+#define TRAINER_GRUNT_28 568
+#define TRAINER_GRUNT_29 569
+#define TRAINER_GRUNT_30 570
+#define TRAINER_MARC 571
+#define TRAINER_BRENDEN 572
+#define TRAINER_LILITH 573
+#define TRAINER_CRISTIAN 574
+#define TRAINER_SYLVIA 575
+#define TRAINER_LEONARDO 576
+#define TRAINER_ATHENA 577
+#define TRAINER_HARRISON 578
+#define TRAINER_GRUNT_31 579
+#define TRAINER_CLARENCE 580
+#define TRAINER_TERRY 581
+#define TRAINER_NATE 582
+#define TRAINER_KATHLEEN 583
+#define TRAINER_CLIFFORD 584
+#define TRAINER_NICHOLAS 585
+#define TRAINER_GRUNT_32 586
+#define TRAINER_GRUNT_33 587
+#define TRAINER_GRUNT_34 588
+#define TRAINER_GRUNT_35 589
+#define TRAINER_GRUNT_36 590
+#define TRAINER_MACEY 591
+#define TRAINER_BRENDAN_10 592
+#define TRAINER_BRENDAN_11 593
+#define TRAINER_PAXTON 594
+#define TRAINER_ISABELLA 595
+#define TRAINER_GRUNT_37 596
+#define TRAINER_TABITHA_2 597
+#define TRAINER_JONATHAN 598
+#define TRAINER_BRENDAN_12 599
+#define TRAINER_MAY_10 600
+#define TRAINER_MAXIE_1 601
+#define TRAINER_MAXIE_2 602
+#define TRAINER_TIANA 603
+#define TRAINER_HALEY_1 604
+#define TRAINER_JANICE 605
+#define TRAINER_VIVI 606
+#define TRAINER_HALEY_2 607
+#define TRAINER_HALEY_3 608
+#define TRAINER_HALEY_4 609
+#define TRAINER_HALEY_5 610
+#define TRAINER_SALLY 611
+#define TRAINER_ROBIN 612
+#define TRAINER_ANDREA 613
+#define TRAINER_CRISSY 614
+#define TRAINER_RICK 615
+#define TRAINER_LYLE 616
+#define TRAINER_JOSE 617
+#define TRAINER_DOUG 618
+#define TRAINER_GREG 619
+#define TRAINER_KENT 620
+#define TRAINER_JAMES_1 621
+#define TRAINER_JAMES_2 622
+#define TRAINER_JAMES_3 623
+#define TRAINER_JAMES_4 624
+#define TRAINER_JAMES_5 625
+#define TRAINER_BRICE 626
+#define TRAINER_TRENT_1 627
+#define TRAINER_LENNY 628
+#define TRAINER_LUCAS_1 629
+#define TRAINER_ALAN 630
+#define TRAINER_CLARK 631
+#define TRAINER_ERIC 632
+#define TRAINER_LUCAS_2 633
+#define TRAINER_MIKE_1 634
+#define TRAINER_MIKE_2 635
+#define TRAINER_TRENT_2 636
+#define TRAINER_TRENT_3 637
+#define TRAINER_TRENT_4 638
+#define TRAINER_TRENT_5 639
+#define TRAINER_DEZ_AND_LUKE 640
+#define TRAINER_LEA_AND_JED 641
+#define TRAINER_KIRA_AND_DAN_1 642
+#define TRAINER_KIRA_AND_DAN_2 643
+#define TRAINER_KIRA_AND_DAN_3 644
+#define TRAINER_KIRA_AND_DAN_4 645
+#define TRAINER_KIRA_AND_DAN_5 646
+#define TRAINER_JOHANNA 647
+#define TRAINER_GERALD 648
+#define TRAINER_VIVIAN 649
+#define TRAINER_DANIELLE 650
+#define TRAINER_HIDEO 651
+#define TRAINER_KEIGO 652
+#define TRAINER_RILEY 653
+#define TRAINER_FLINT 654
+#define TRAINER_ASHLEY 655
+#define TRAINER_WALLY_2 656
+#define TRAINER_WALLY_3 657
+#define TRAINER_WALLY_4 658
+#define TRAINER_WALLY_5 659
+#define TRAINER_WALLY_6 660
+#define TRAINER_BRENDAN_13 661
+#define TRAINER_BRENDAN_14 662
+#define TRAINER_BRENDAN_15 663
+#define TRAINER_MAY_11 664
+#define TRAINER_MAY_12 665
+#define TRAINER_MAY_13 666
+#define TRAINER_JONAH 667
+#define TRAINER_HENRY 668
+#define TRAINER_ROGER 669
+#define TRAINER_ALEXA 670
+#define TRAINER_RUBEN 671
+#define TRAINER_KOJI_1 672
+#define TRAINER_WAYNE 673
+#define TRAINER_AIDAN 674
+#define TRAINER_REED 675
+#define TRAINER_TISHA 676
+#define TRAINER_TORI_AND_TIA 677
+#define TRAINER_KIM_AND_IRIS 678
+#define TRAINER_TYRA_AND_IVY 679
+#define TRAINER_MEL_AND_PAUL 680
+#define TRAINER_JOHN_AND_JAY_1 681
+#define TRAINER_JOHN_AND_JAY_2 682
+#define TRAINER_JOHN_AND_JAY_3 683
+#define TRAINER_JOHN_AND_JAY_4 684
+#define TRAINER_JOHN_AND_JAY_5 685
+#define TRAINER_RELI_AND_IAN 686
+#define TRAINER_LILA_AND_ROY_1 687
+#define TRAINER_LILA_AND_ROY_2 688
+#define TRAINER_LILA_AND_ROY_3 689
+#define TRAINER_LILA_AND_ROY_4 690
+#define TRAINER_LILA_AND_ROY_5 691
+#define TRAINER_LISA_AND_RAY 692
+#define TRAINER_CHRIS 693
+#define TRAINER_DAWSON 694
+#define TRAINER_SARAH 695
+#define TRAINER_DARIAN 696
+#define TRAINER_HAILEY 697
+#define TRAINER_CHANDLER 698
+#define TRAINER_KALEB 699
+#define TRAINER_JOSEPH 700
+#define TRAINER_ALYSSA 701
+#define TRAINER_MARCOS 702
+#define TRAINER_RHETT 703
+#define TRAINER_TYRON 704
+#define TRAINER_CELINA 705
+#define TRAINER_BIANCA 706
+#define TRAINER_HAYDEN 707
+#define TRAINER_SOPHIE 708
+#define TRAINER_COBY 709
+#define TRAINER_LAWRENCE 710
+#define TRAINER_WYATT 711
+#define TRAINER_ANGELINA 712
+#define TRAINER_KAI 713
+#define TRAINER_CHARLOTTE 714
+#define TRAINER_DEANDRE 715
+#define TRAINER_GRUNT_38 716
+#define TRAINER_GRUNT_39 717
+#define TRAINER_GRUNT_40 718
+#define TRAINER_GRUNT_41 719
+#define TRAINER_GRUNT_42 720
+#define TRAINER_GRUNT_43 721
+#define TRAINER_GRUNT_44 722
+#define TRAINER_GRUNT_45 723
+#define TRAINER_GRUNT_46 724
+#define TRAINER_GRUNT_47 725
+#define TRAINER_GRUNT_48 726
+#define TRAINER_GRUNT_49 727
+#define TRAINER_GRUNT_50 728
+#define TRAINER_GRUNT_51 729
+#define TRAINER_GRUNT_52 730
+#define TRAINER_GRUNT_53 731
+#define TRAINER_TABITHA_3 732
+#define TRAINER_DARCY 733
+#define TRAINER_MAXIE_3 734
+#define TRAINER_PETE 735
+#define TRAINER_ISABELLE 736
+#define TRAINER_ANDRES_1 737
+#define TRAINER_JOSUE 738
+#define TRAINER_CAMRON 739
+#define TRAINER_CORY_1 740
+#define TRAINER_CAROLINA 741
+#define TRAINER_ELIJAH 742
+#define TRAINER_CELIA 743
+#define TRAINER_BRYAN 744
+#define TRAINER_BRANDEN 745
+#define TRAINER_BRYANT 746
+#define TRAINER_SHAYLA 747
+#define TRAINER_KYRA 748
+#define TRAINER_JAIDEN 749
+#define TRAINER_ALIX 750
+#define TRAINER_HELENE 751
+#define TRAINER_MARLENE 752
+#define TRAINER_DEVAN 753
+#define TRAINER_JOHNSON 754
+#define TRAINER_MELINA 755
+#define TRAINER_BRANDI 756
+#define TRAINER_AISHA 757
+#define TRAINER_MAKAYLA 758
+#define TRAINER_FABIAN 759
+#define TRAINER_DAYTON 760
+#define TRAINER_RACHEL 761
+#define TRAINER_LEONEL 762
+#define TRAINER_CALLIE 763
+#define TRAINER_CALE 764
+#define TRAINER_MYLES 765
+#define TRAINER_PAT 766
+#define TRAINER_CRISTIN_1 767
+#define TRAINER_MAY_14 768
+#define TRAINER_MAY_15 769
+#define TRAINER_ROXANNE_2 770
+#define TRAINER_ROXANNE_3 771
+#define TRAINER_ROXANNE_4 772
+#define TRAINER_ROXANNE_5 773
+#define TRAINER_BRAWLY_2 774
+#define TRAINER_BRAWLY_3 775
+#define TRAINER_BRAWLY_4 776
+#define TRAINER_BRAWLY_5 777
+#define TRAINER_WATTSON_2 778
+#define TRAINER_WATTSON_3 779
+#define TRAINER_WATTSON_4 780
+#define TRAINER_WATTSON_5 781
+#define TRAINER_FLANNERY_2 782
+#define TRAINER_FLANNERY_3 783
+#define TRAINER_FLANNERY_4 784
+#define TRAINER_FLANNERY_5 785
+#define TRAINER_NORMAN_2 786
+#define TRAINER_NORMAN_3 787
+#define TRAINER_NORMAN_4 788
+#define TRAINER_NORMAN_5 789
+#define TRAINER_WINONA_2 790
+#define TRAINER_WINONA_3 791
+#define TRAINER_WINONA_4 792
+#define TRAINER_WINONA_5 793
+#define TRAINER_TATE_AND_LIZA_2 794
+#define TRAINER_TATE_AND_LIZA_3 795
+#define TRAINER_TATE_AND_LIZA_4 796
+#define TRAINER_TATE_AND_LIZA_5 797
+#define TRAINER_JUAN_2 798
+#define TRAINER_JUAN_3 799
+#define TRAINER_JUAN_4 800
+#define TRAINER_JUAN_5 801
+#define TRAINER_ANGELO 802
+#define TRAINER_DARIUS 803
+#define TRAINER_STEVEN 804
+#define TRAINER_ANABEL 805
+#define TRAINER_TUCKER 806
+#define TRAINER_SPENSER 807
+#define TRAINER_GRETA 808
+#define TRAINER_NOLAND 809
+#define TRAINER_LUCY 810
+#define TRAINER_BRANDON 811
+#define TRAINER_ANDRES_2 812
+#define TRAINER_ANDRES_3 813
+#define TRAINER_ANDRES_4 814
+#define TRAINER_ANDRES_5 815
+#define TRAINER_CORY_2 816
+#define TRAINER_CORY_3 817
+#define TRAINER_CORY_4 818
+#define TRAINER_CORY_5 819
+#define TRAINER_PABLO_2 820
+#define TRAINER_PABLO_3 821
+#define TRAINER_PABLO_4 822
+#define TRAINER_PABLO_5 823
+#define TRAINER_KOJI_2 824
+#define TRAINER_KOJI_3 825
+#define TRAINER_KOJI_4 826
+#define TRAINER_KOJI_5 827
+#define TRAINER_CRISTIN_2 828
+#define TRAINER_CRISTIN_3 829
+#define TRAINER_CRISTIN_4 830
+#define TRAINER_CRISTIN_5 831
+#define TRAINER_FERNANDO_2 832
+#define TRAINER_FERNANDO_3 833
+#define TRAINER_FERNANDO_4 834
+#define TRAINER_FERNANDO_5 835
+#define TRAINER_SAWYER_2 836
+#define TRAINER_SAWYER_3 837
+#define TRAINER_SAWYER_4 838
+#define TRAINER_SAWYER_5 839
+#define TRAINER_GABRIELLE_2 840
+#define TRAINER_GABRIELLE_3 841
+#define TRAINER_GABRIELLE_4 842
+#define TRAINER_GABRIELLE_5 843
+#define TRAINER_THALIA_2 844
+#define TRAINER_THALIA_3 845
+#define TRAINER_THALIA_4 846
+#define TRAINER_THALIA_5 847
+#define TRAINER_MARIELA 848
+#define TRAINER_ALVARO 849
+#define TRAINER_EVERETT 850
+#define TRAINER_RED 851
+#define TRAINER_LEAF 852
+#define TRAINER_BRENDAN_16 853
+#define TRAINER_MAY_16 854
+
+#define NO_OF_TRAINERS 854
+
+#define TRAINER_PIC_HIKER 0
+#define TRAINER_PIC_AQUA_GRUNT_M 1
+#define TRAINER_PIC_POKEMON_BREEDER_F 2
+#define TRAINER_PIC_COOL_TRAINER_M 3
+#define TRAINER_PIC_BIRD_KEEPER 4
+#define TRAINER_PIC_COLLECTOR 5
+#define TRAINER_PIC_AQUA_GRUNT_F 6
+#define TRAINER_PIC_SWIMMER_M 7
+#define TRAINER_PIC_MAGMA_GRUNT_M 8
+#define TRAINER_PIC_EXPERT_M 9
+#define TRAINER_PIC_AQUA_ADMIN_M 10
+#define TRAINER_PIC_BLACK_BELT 11
+#define TRAINER_PIC_AQUA_ADMIN_F 12
+#define TRAINER_PIC_AQUA_LEADER_ARCHIE 13
+#define TRAINER_PIC_HEX_MANIAC 14
+#define TRAINER_PIC_AROMA_LADY 15
+#define TRAINER_PIC_RUIN_MANIAC 16
+#define TRAINER_PIC_INTERVIEWER 17
+#define TRAINER_PIC_TUBER_F 18
+#define TRAINER_PIC_TUBER_M 19
+#define TRAINER_PIC_COOL_TRAINER_F 20
+#define TRAINER_PIC_LADY 21
+#define TRAINER_PIC_BEAUTY 22
+#define TRAINER_PIC_RICH_BOY 23
+#define TRAINER_PIC_EXPERT_F 24
+#define TRAINER_PIC_POKEMANIAC 25
+#define TRAINER_PIC_MAGMA_GRUNT_F 26
+#define TRAINER_PIC_GUITARIST 27
+#define TRAINER_PIC_KINDLER 28
+#define TRAINER_PIC_CAMPER 29
+#define TRAINER_PIC_PICNICKER 30
+#define TRAINER_PIC_BUG_MANIAC 31
+#define TRAINER_PIC_POKEMON_BREEDER_M 32
+#define TRAINER_PIC_PSYCHIC_M 33
+#define TRAINER_PIC_PSYCHIC_F 34
+#define TRAINER_PIC_GENTLEMAN 35
+#define TRAINER_PIC_ELITE_FOUR_SIDNEY 36
+#define TRAINER_PIC_ELITE_FOUR_PHOEBE 37
+#define TRAINER_PIC_ELITE_FOUR_GLACIA 38
+#define TRAINER_PIC_ELITE_FOUR_DRAKE 39
+#define TRAINER_PIC_LEADER_ROXANNE 40
+#define TRAINER_PIC_LEADER_BRAWLY 41
+#define TRAINER_PIC_LEADER_WATTSON 42
+#define TRAINER_PIC_LEADER_FLANNERY 43
+#define TRAINER_PIC_LEADER_NORMAN 44
+#define TRAINER_PIC_LEADER_WINONA 45
+#define TRAINER_PIC_LEADER_TATE_AND_LIZA 46
+#define TRAINER_PIC_LEADER_JUAN 47
+#define TRAINER_PIC_SCHOOL_KID_M 48
+#define TRAINER_PIC_SCHOOL_KID_F 49
+#define TRAINER_PIC_SR_AND_JR 50
+#define TRAINER_PIC_WINSTRATE_M 51
+#define TRAINER_PIC_WINSTRATE_F 52
+#define TRAINER_PIC_YOUNGSTER 53
+#define TRAINER_PIC_CHAMPION_WALLACE 54
+#define TRAINER_PIC_FISHERMAN 55
+#define TRAINER_PIC_CYCLING_TRIATHLETE_M 56
+#define TRAINER_PIC_CYCLING_TRIATHLETE_F 57
+#define TRAINER_PIC_RUNNING_TRIATHLETE_M 58
+#define TRAINER_PIC_RUNNING_TRIATHLETE_F 59
+#define TRAINER_PIC_SWIMMING_TRIATHLETE_M 60
+#define TRAINER_PIC_SWIMMING_TRIATHLETE_F 61
+#define TRAINER_PIC_DRAGON_TAMER 62
+#define TRAINER_PIC_NINJA_BOY 63
+#define TRAINER_PIC_BATTLE_GIRL 64
+#define TRAINER_PIC_PARASOL_LADY 65
+#define TRAINER_PIC_SWIMMER_F 66
+#define TRAINER_PIC_TWINS 67
+#define TRAINER_PIC_SAILOR 68
+#define TRAINER_PIC_MAGMA_ADMIN 69
+#define TRAINER_PIC_WALLY 70
+#define TRAINER_PIC_BRENDAN 71
+#define TRAINER_PIC_MAY 72
+#define TRAINER_PIC_BUG_CATCHER 73
+#define TRAINER_PIC_POKEMON_RANGER_M 74
+#define TRAINER_PIC_POKEMON_RANGER_F 75
+#define TRAINER_PIC_MAGMA_LEADER_MAXIE 76
+#define TRAINER_PIC_LASS 77
+#define TRAINER_PIC_YOUNG_COUPLE 78
+#define TRAINER_PIC_OLD_COUPLE 79
+#define TRAINER_PIC_SIS_AND_BRO 80
+#define TRAINER_PIC_STEVEN 81
+#define TRAINER_PIC_SALON_MAIDEN_ANABEL 82
+#define TRAINER_PIC_DOME_ACE_TUCKER 83
+#define TRAINER_PIC_PALACE_MAVEN_SPENSER 84
+#define TRAINER_PIC_ARENA_TYCOON_GRETA 85
+#define TRAINER_PIC_FACTORY_HEAD_NOLAND 86
+#define TRAINER_PIC_PIKE_QUEEN_LUCY 87
+#define TRAINER_PIC_PYRAMID_KING_BRANDON 88
+#define TRAINER_PIC_RED 89
+#define TRAINER_PIC_LEAF 90
+#define TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN 91
+#define TRAINER_PIC_RUBY_SAPPHIRE_MAY 92
+
+#define FACILITY_CLASS_HIKER 0x0
+#define FACILITY_CLASS_TEAM_AQUA_1 0x1
+#define FACILITY_CLASS_PKMN_BREEDER_1 0x2
+#define FACILITY_CLASS_COOLTRAINER_1 0x3
+#define FACILITY_CLASS_BIRD_KEEPER 0x4
+#define FACILITY_CLASS_COLLECTOR 0x5
+#define FACILITY_CLASS_TEAM_AQUA_2 0x6
+#define FACILITY_CLASS_SWIMMER_M 0x7
+#define FACILITY_CLASS_TEAM_MAGMA_1 0x8
+#define FACILITY_CLASS_EXPERT_1 0x9
+#define FACILITY_CLASS_BLACK_BELT 0xa
+#define FACILITY_CLASS_AQUA_LEADER 0xb
+#define FACILITY_CLASS_HEX_MANIAC 0xc
+#define FACILITY_CLASS_AROMA_LADY 0xd
+#define FACILITY_CLASS_RUIN_MANIAC 0xe
+#define FACILITY_CLASS_INTERVIEWER 0xf
+#define FACILITY_CLASS_TUBER_1 0x10
+#define FACILITY_CLASS_TUBER_2 0x11
+#define FACILITY_CLASS_COOLTRAINER_2 0x12
+#define FACILITY_CLASS_LADY 0x13
+#define FACILITY_CLASS_BEAUTY 0x14
+#define FACILITY_CLASS_RICH_BOY 0x15
+#define FACILITY_CLASS_EXPERT_2 0x16
+#define FACILITY_CLASS_POKEMANIAC 0x17
+#define FACILITY_CLASS_TEAM_MAGMA_2 0x18
+#define FACILITY_CLASS_GUITARIST 0x19
+#define FACILITY_CLASS_KINDLER 0x1a
+#define FACILITY_CLASS_CAMPER 0x1b
+#define FACILITY_CLASS_PICNICKER 0x1c
+#define FACILITY_CLASS_BUG_MANIAC 0x1d
+#define FACILITY_CLASS_PSYCHIC_1 0x1e
+#define FACILITY_CLASS_PSYCHIC_2 0x1f
+#define FACILITY_CLASS_GENTLEMAN 0x20
+#define FACILITY_CLASS_ELITE_FOUR_1 0x21
+#define FACILITY_CLASS_ELITE_FOUR_2 0x22
+#define FACILITY_CLASS_LEADER_1 0x23
+#define FACILITY_CLASS_LEADER_2 0x24
+#define FACILITY_CLASS_LEADER_3 0x25
+#define FACILITY_CLASS_SCHOOL_KID_1 0x26
+#define FACILITY_CLASS_SCHOOL_KID_2 0x27
+#define FACILITY_CLASS_SR_AND_JR 0x28
+#define FACILITY_CLASS_POKEFAN_1 0x29
+#define FACILITY_CLASS_POKEFAN_2 0x2a
+#define FACILITY_CLASS_YOUNGSTER 0x2b
+#define FACILITY_CLASS_CHAMPION 0x2c
+#define FACILITY_CLASS_FISHERMAN 0x2d
+#define FACILITY_CLASS_TRIATHLETE_1 0x2e
+#define FACILITY_CLASS_TRIATHLETE_2 0x2f
+#define FACILITY_CLASS_TRIATHLETE_3 0x30
+#define FACILITY_CLASS_TRIATHLETE_4 0x31
+#define FACILITY_CLASS_TRIATHLETE_5 0x32
+#define FACILITY_CLASS_TRIATHLETE_6 0x33
+#define FACILITY_CLASS_DRAGON_TAMER 0x34
+#define FACILITY_CLASS_NINJA_BOY 0x35
+#define FACILITY_CLASS_BATTLE_GIRL 0x36
+#define FACILITY_CLASS_PARASOL_LADY 0x37
+#define FACILITY_CLASS_SWIMMER_F 0x38
+#define FACILITY_CLASS_TWINS 0x39
+#define FACILITY_CLASS_SAILOR 0x3a
+#define FACILITY_CLASS_PKMN_TRAINER_1 0x3b
+#define FACILITY_CLASS_PKMN_TRAINER_2 0x3c
+#define FACILITY_CLASS_PKMN_TRAINER_3 0x3d
+#define FACILITY_CLASS_PKMN_TRAINER_4 0x3e
+#define FACILITY_CLASS_PKMN_TRAINER_5 0x3f
+#define FACILITY_CLASS_PKMN_TRAINER_6 0x40
+#define FACILITY_CLASS_PKMN_TRAINER_7 0x41
+#define FACILITY_CLASS_PKMN_BREEDER_2 0x42
+#define FACILITY_CLASS_BUG_CATCHER 0x43
+#define FACILITY_CLASS_PKMN_RANGER_1 0x44
+#define FACILITY_CLASS_PKMN_RANGER_2 0x45
+#define FACILITY_CLASS_MAGMA_LEADER 0x46
+#define FACILITY_CLASS_LASS 0x47
+#define FACILITY_CLASS_YOUNG_COUPLE 0x48
+#define FACILITY_CLASS_OLD_COUPLE 0x49
+#define FACILITY_CLASS_SIS_AND_BRO 0x4a
+#define FACILITY_CLASS_PKMN_TRAINER_8 0x4b
+#define FACILITY_CLASS_SALON_MAIDEN 0x4c
+#define FACILITY_CLASS_DOME_ACE 0x4d
+#define FACILITY_CLASS_PKMN_TRAINER_9 0x4e
+#define FACILITY_CLASS_PKMN_TRAINER_10 0x4f
+#define FACILITY_CLASS_PKMN_TRAINER_11 0x50
+#define FACILITY_CLASS_PKMN_TRAINER_12 0x51
+
+#define TRAINER_CLASS_PKMN_TRAINER_1 0x0
+#define TRAINER_CLASS_PKMN_TRAINER_2 0x1
+#define TRAINER_CLASS_HIKER 0x2
+#define TRAINER_CLASS_TEAM_AQUA 0x3
+#define TRAINER_CLASS_PKMN_BREEDER 0x4
+#define TRAINER_CLASS_COOLTRAINER_1 0x5
+#define TRAINER_CLASS_BIRD_KEEPER 0x6
+#define TRAINER_CLASS_COLLECTOR 0x7
+#define TRAINER_CLASS_SWIMMER_M 0x8
+#define TRAINER_CLASS_TEAM_MAGMA 0x9
+#define TRAINER_CLASS_EXPERT 0xa
+#define TRAINER_CLASS_AQUA_ADMIN 0xb
+#define TRAINER_CLASS_BLACK_BELT 0xc
+#define TRAINER_CLASS_AQUA_LEADER 0xd
+#define TRAINER_CLASS_HEX_MANIAC 0xe
+#define TRAINER_CLASS_AROMA_LADY 0xf
+#define TRAINER_CLASS_RUIN_MANIAC 0x10
+#define TRAINER_CLASS_INTERVIEWER 0x11
+#define TRAINER_CLASS_TUBER_1 0x12
+#define TRAINER_CLASS_TUBER_2 0x13
+#define TRAINER_CLASS_LADY 0x14
+#define TRAINER_CLASS_BEAUTY 0x15
+#define TRAINER_CLASS_RICH_BOY 0x16
+#define TRAINER_CLASS_POKEMANIAC 0x17
+#define TRAINER_CLASS_GUITARIST 0x18
+#define TRAINER_CLASS_KINDLER 0x19
+#define TRAINER_CLASS_CAMPER 0x1a
+#define TRAINER_CLASS_PICNICKER 0x1b
+#define TRAINER_CLASS_BUG_MANIAC 0x1c
+#define TRAINER_CLASS_PSYCHIC 0x1d
+#define TRAINER_CLASS_GENTLEMAN 0x1e
+#define TRAINER_CLASS_ELITE_FOUR 0x1f
+#define TRAINER_CLASS_LEADER 0x20
+#define TRAINER_CLASS_SCHOOL_KID 0x21
+#define TRAINER_CLASS_SR_AND_JR 0x22
+#define TRAINER_CLASS_WINSTRATE 0x23
+#define TRAINER_CLASS_POKEFAN 0x24
+#define TRAINER_CLASS_YOUNGSTER 0x25
+#define TRAINER_CLASS_CHAMPION 0x26
+#define TRAINER_CLASS_FISHERMAN 0x27
+#define TRAINER_CLASS_TRIATHLETE 0x28
+#define TRAINER_CLASS_DRAGON_TAMER 0x29
+#define TRAINER_CLASS_NINJA_BOY 0x2a
+#define TRAINER_CLASS_BATTLE_GIRL 0x2b
+#define TRAINER_CLASS_PARASOL_LADY 0x2c
+#define TRAINER_CLASS_SWIMMER_F 0x2d
+#define TRAINER_CLASS_TWINS 0x2e
+#define TRAINER_CLASS_SAILOR 0x2f
+#define TRAINER_CLASS_COOLTRAINER_2 0x30
+#define TRAINER_CLASS_MAGMA_ADMIN 0x31
+#define TRAINER_CLASS_PKMN_TRAINER_3 0x32
+#define TRAINER_CLASS_BUG_CATCHER 0x33
+#define TRAINER_CLASS_PKMN_RANGER 0x34
+#define TRAINER_CLASS_MAGMA_LEADER 0x35
+#define TRAINER_CLASS_LASS 0x36
+#define TRAINER_CLASS_YOUNG_COUPLE 0x37
+#define TRAINER_CLASS_OLD_COUPLE 0x38
+#define TRAINER_CLASS_SIS_AND_BRO 0x39
+#define TRAINER_CLASS_SALON_MAIDEN 0x3a
+#define TRAINER_CLASS_DOME_ACE 0x3b
+#define TRAINER_CLASS_PALACE_MAVEN 0x3c
+#define TRAINER_CLASS_ARENA_TYCOON 0x3d
+#define TRAINER_CLASS_FACTORY_HEAD 0x3e
+#define TRAINER_CLASS_PIKE_QUEEN 0x3f
+#define TRAINER_CLASS_PYRAMID_KING 0x40
+#define TRAINER_CLASS_PKMN_TRAINER_4 0x41
+
+#define TRAINER_ENCOUNTER_MUSIC_MALE 0 // standard male encounter music
+#define TRAINER_ENCOUNTER_MUSIC_FEMALE 1 // standard female encounter music
+#define TRAINER_ENCOUNTER_MUSIC_GIRL 2 // used for male Tubers and Young Couples too
+#define TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS 3
+#define TRAINER_ENCOUNTER_MUSIC_INTENSE 4
+#define TRAINER_ENCOUNTER_MUSIC_COOL 5
+#define TRAINER_ENCOUNTER_MUSIC_AQUA 6
+#define TRAINER_ENCOUNTER_MUSIC_MAGMA 7
+#define TRAINER_ENCOUNTER_MUSIC_SWIMMER 8
+#define TRAINER_ENCOUNTER_MUSIC_TWINS 9 // used for other trainer classes too
+#define TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR 10
+#define TRAINER_ENCOUNTER_MUSIC_HIKER 11 // used for other trainer classes too
+#define TRAINER_ENCOUNTER_MUSIC_INTERVIEWER 12
+#define TRAINER_ENCOUNTER_MUSIC_RICH 13 // Rich Boys and Gentlemen
+
+#define 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.
+#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0)
+#define F_TRAINER_PARTY_HELD_ITEM (1 << 1)
+
+#endif // GUARD_TRAINERS_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 844f1052a..a54e0e463 100755
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -7,10 +7,18 @@
extern const u8 gUnknown_0823B4E8[];
extern const u8 gUnknown_0823B5E9[];
+extern const u8 EventScript_TestSignpostMsg[];
+extern const u8 EventScript_TryGetTrainerScript[];
extern const u8 EventScript_275BB7[];
extern const u8 EventScript_275D0C[];
extern const u8 EventScript_275D1F[];
extern const u8 EventScript_275D2E[];
+extern const u8 EventScript_271354[];
+extern const u8 EventScript_2713C2[];
+extern const u8 EventScript_TryDoDoubleTrainerBattle[];
+extern const u8 EventScript_271362[];
+extern const u8 EventScript_TryDoDoubleRematchBattle[];
+extern const u8 EventScript_2713D1[];
extern const u8 EventScript_2766A2[];
extern const u8 EventScript_2766A6[];
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 0107fa10f..696d1c2e2 100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -76,6 +76,8 @@ void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);
+void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern);
+u8 npc_running_behaviour_by_direction(u8 direction);
// Exported data declarations
diff --git a/include/global.h b/include/global.h
index 6e76124b9..9fe0d975f 100644
--- a/include/global.h
+++ b/include/global.h
@@ -36,6 +36,24 @@ extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
+// There are many quirks in the source code which have overarching behavioral differences from
+// a number of other files. For example, diploma.c seems to declare rodata before each use while
+// other files declare out of order and must be at the beginning. There are also a number of
+// macros which differ from one file to the next due to the method of obtaining the result, such
+// as these below. Because of this, there is a theory (Two Team Theory) that states that these
+// programming projects had more than 1 "programming team" which utilized different macros for
+// each of the files that were worked on.
+#define T1_READ_8(ptr) ((ptr)[0])
+#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24))
+#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr)
+
+// T2_READ_8 is a duplicate to remain consistent with each group.
+#define T2_READ_8(ptr) ((ptr)[0])
+#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
+#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
+
enum
{
VERSION_SAPPHIRE = 1,
@@ -45,7 +63,8 @@ enum
VERSION_LEAF_GREEN = 5,
};
-enum LanguageId {
+enum LanguageId
+{
LANGUAGE_JAPANESE = 1,
LANGUAGE_ENGLISH = 2,
LANGUAGE_FRENCH = 3,
@@ -222,7 +241,7 @@ struct SaveBlock2
/*0x1EC*/ struct BerryCrush berryCrush;
/*0x1FC*/ struct PokemonJumpResults pokeJump;
/*0x20C*/ struct BerryPickingResults berryPick;
- /*0x214*/ u8 field_214[1032];
+ /*0x21C*/ u8 field_21C[1032];
/*0x624*/ u16 contestLinkResults[20]; // 4 positions for 5 categories, possibly a struct or a 2d array
// All below could be a one giant struct
@@ -244,7 +263,7 @@ struct SaveBlock2
/*0xCA9*/ u8 field_CA9_f : 1; // 0x80
/*0xCAA*/ u16 field_CAA[4];
/*0xCB2*/ u16 battlePyramidWildHeaderId;
- /*0xCB4*/ u8 field_CB4[82];
+ /*0xCB4*/ u16 field_CB4[41];
/*0xD06*/ u8 field_D06;
/*0xD07*/ u8 field_D07;
/*0xD08*/ u8 filler_D08[0x112];
diff --git a/include/pokemon.h b/include/pokemon.h
index 480c8d9b9..cdab96687 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -653,6 +653,7 @@ u8 GetSecretBaseTrainerPicIndex(void);
bool8 TryIncrementMonLevel(struct Pokemon *mon);
void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon);
u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
+u8 GetMonsStateToDoubles_2(void);
#include "sprite.h"
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
index 5c9862d57..82dfacf48 100644
--- a/include/pokemon_3.h
+++ b/include/pokemon_3.h
@@ -3,5 +3,7 @@
const u8* GetTrainerClassNameFromId(u16 trainerId);
const u8* GetTrainerNameFromId(u16 trainerId);
+void PlayMapChosenOrBattleBGM(u16 song);
+u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
#endif // GUARD_POKEMON_3_H
diff --git a/include/safari_zone.h b/include/safari_zone.h
index 9a81894b8..39ee3ccb3 100644
--- a/include/safari_zone.h
+++ b/include/safari_zone.h
@@ -13,6 +13,8 @@ void ExitSafariMode(void);
bool8 SafariZoneTakeStep(void);
void SafariZoneRetirePrompt(void);
+void CB2_EndSafariBattle(void);
+
struct Pokeblock *SafariZoneGetActivePokeblock(void);
void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
diff --git a/include/secret_base.h b/include/secret_base.h
index 630a36773..b2502889c 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -9,5 +9,6 @@
void sub_80E9578(void);
void sub_80E980C(void);
u8 *GetSecretBaseMapName(u8 *dest);
+const u8 *GetSecretBaseTrainerLoseText(void);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/songs.h b/include/songs.h
index 5a1fff00c..37c4f16b4 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -372,20 +372,20 @@ enum
BGM_BATTLE_DOME_TOURNAMENT,
BGM_BATTLE_PIKE,
BGM_BATTLE_FACTORY,
- BGM_BATTLE_LEGENDARY,
- BGM_BATTLE_FRONTIER_BRAIN,
- BGM_BATTLE_MEW,
- BGM_BATTLE_DOME, // end of the human-readable names
+ /*0x1D6*/ BGM_BATTLE_LEGENDARY,
+ /*0x1D7*/ BGM_BATTLE_FRONTIER_BRAIN,
+ /*0x1D8*/ BGM_BATTLE_MEW,
+ /*0x1D9*/ BGM_BATTLE_DOME, // end of the human-readable names
/*0x1DA*/ BGM_BATTLE27, // wild
- BGM_BATTLE31, // aqua/magma grunt
- BGM_BATTLE20, // trainer
- BGM_BATTLE32, // gym leader
- BGM_BATTLE33, // champion
- BGM_BATTLE36, // regi
- BGM_BATTLE34, // weather trio
- BGM_BATTLE35, // rival
- BGM_BATTLE38, // elite four
- BGM_BATTLE30, // aqua/magma leader
+ /*0x1DB*/ BGM_BATTLE31, // aqua/magma grunt
+ /*0x1DC*/ BGM_BATTLE20, // trainer
+ /*0x1DD*/ BGM_BATTLE32, // gym leader
+ /*0x1DE*/ BGM_BATTLE33, // champion
+ /*0x1DF*/ BGM_BATTLE36, // regi
+ /*0x1E0*/ BGM_BATTLE34, // weather trio
+ /*0x1E1*/ BGM_BATTLE35, // rival
+ /*0x1E2*/ BGM_BATTLE38, // elite four
+ /*0x1E3*/ BGM_BATTLE30, // aqua/magma leader
/*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again!
BGM_FRLG_GAMECORNER,
BGM_FRLG_ROCKET_HIDEOUT,
@@ -453,14 +453,14 @@ enum
BGM_FRLG_ISLAND_FOUR,
BGM_FRLG_ISLAND_SIX,
BGM_FRLG_FLUTE,
- BGM_FRLG_BATTLE_DEOXYS,
- BGM_FRLG_BATTLE_MEWTWO,
- BGM_FRLG_BATTLE_LEGENDARY,
- BGM_FRLG_LEADER_EYE,
- BGM_FRLG_DEOXYS_EYE,
- BGM_FRLG_TRAINER_TOWER,
- BGM_FRLG_HALL_OF_FAME_PALLET_TOWN,
- /*0x22E*/BGM_FRLG_TEACHY_TV,
+ /*0x227*/ BGM_FRLG_BATTLE_DEOXYS,
+ /*0x228*/ BGM_FRLG_BATTLE_MEWTWO,
+ /*0x229*/ BGM_FRLG_BATTLE_LEGENDARY,
+ /*0x22A*/ BGM_FRLG_LEADER_EYE,
+ /*0x22B*/ BGM_FRLG_DEOXYS_EYE,
+ /*0x22C*/ BGM_FRLG_TRAINER_TOWER,
+ /*0x22D*/ BGM_FRLG_HALL_OF_FAME_PALLET_TOWN,
+ /*0x22E*/ BGM_FRLG_TEACHY_TV,
};
#endif // GUARD_SONGS_H
diff --git a/include/strings.h b/include/strings.h
index 8b218e1e9..84d7084b4 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -82,6 +82,7 @@ extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
extern const u8 gText_RegisteredDataDeleted[];
extern const u8 gUnknown_085EA79D[];
+extern const u8 gText_EmptyString2[];
extern const u8 gText_Confirm3[];
extern const u8 gText_Cancel4[];
extern const u8 gText_IsThisTheCorrectTime[];
diff --git a/include/trainer_classes.h b/include/trainer_classes.h
deleted file mode 100644
index e5e26b359..000000000
--- a/include/trainer_classes.h
+++ /dev/null
@@ -1,74 +0,0 @@
-#ifndef GUARD_TRAINER_CLASSES_H
-#define GUARD_TRAINER_CLASSES_H
-
-enum
-{
- CLASS_PKMN_TRAINER0, // 0
- CLASS_PKMN_TRAINER1, // 1
- CLASS_HIKER, // 2
- CLASS_TEAM_AQUA, // 3
- CLASS_PKMN_BREEDER, // 4
- CLASS_COOLTRAINER, // 5
- CLASS_BIRDKEEPER, // 6
- CLASS_COLLECTOR, // 7
- CLASS_SWIMMER_MALE, // 8
- CLASS_TEAM_MAGMA, // 9
- CLASS_EXPERT, // 0xA
- CLASS_AQUA_ADMIN, // 0xB
- CLASS_BLACK_BELT, // 0xC
- CLASS_AQUA_LEADER, // 0xD
- CLASS_HEX_MANIAC, // 0xE
- CLASS_AROMA_LADY, // 0xF
- CLASS_RUIN_MANIAC, // 0x10
- CLASS_INTERVIEWER, // 0x11
- CLASS_TUBER_FEMALE, // 0x12
- CLASS_TUBER_MALE, // 0x13
- CLASS_LADY, // 0x14
- CLASS_BEAUTY, // 0x15
- CLASS_RICH_BOY, // 0x16
- CLASS_POKEMANIAC, // 0x17
- CLASS_GUITARIST, // 0x18
- CLASS_KINDLER, // 0x19
- CLASS_CAMPER, // 0x1A
- CLASS_PICKNICKER, // 0x1B
- CLASS_BUG_MANIAC, // 0x1C
- CLASS_PSYCHIC, // 0x1D
- CLASS_GENTLEMAN, // 0x1E
- CLASS_ELITE_FOUR, // 0x1F
- CLASS_LEADER, // 0x20
- CLASS_SCHOOL_KID, // 0x21
- CLASS_SCHOOL_SR_JR, // 0x22
- CLASS_WINSTRATE, // 0x23
- CLASS_POKE_FAN, // 0x24
- CLASS_YOUNGSTER, // 0x25
- CLASS_CHAMPION, // 0x26
- CLASS_FISHERMAN, // 0x27
- CLASS_TRIATHLETE, // 0x28
- CLASS_DRAGON_TAMER, // 0x29
- CLASS_NINJA_BOY, // 0x2A
- CLASS_BATTLE_GIRL, // 0x2B
- CLASS_PARASOL_LADY, // 0x2C
- CLASS_SWIMMER_FEMALE, // 0x2D
- CLASS_TWINS, // 0x2E
- CLASS_SAILOR, // 0x2F
- CLASS_COOLTRAINER_2, // 0x30
- CLASS_MAGMA_ADMIN, // 0x31
- CLASS_PKMN_TRAINER_RIVAL, // 0x32
- CLASS_BUG_CATCHER, // 0x33
- CLASS_PKMN_RANGER, // 0x34
- CLASS_MAGMA_LEADER, // 0x35
- CLASS_LASS, // 0x36
- CLASS_YOUNG_COUPLE, // 0x37
- CLASS_OLD_COUPLE, // 0x38
- CLASS_SIS_AND_BRO, // 0x39
- CLASS_SALON_MAIDEN, // 0x3A
- CLASS_DOME_ACE, // 0x3B
- CLASS_PALACE_MAVEN, // 0x3C
- CLASS_ARENA_TYCOON, // 0x3D
- CLASS_FACTORY_HEAD, // 0x3E
- CLASS_PIKE_QUEEN, // 0x3F
- CLASS_PYRAMID_KING, // 0x40
- CLASS_PKMN_TRAINER2, // 0x41
-};
-
-#endif // GUARD_TRAINER_CLASSES_H
diff --git a/include/trainer_front_sprites.h b/include/trainer_front_sprites.h
deleted file mode 100644
index 3259bec88..000000000
--- a/include/trainer_front_sprites.h
+++ /dev/null
@@ -1,101 +0,0 @@
-#ifndef GUARD_TRAINER_FRONT_SPRITES_H
-#define GUARD_TRAINER_FRONT_SPRITES_H
-
-enum
-{
- TRAINER_FRONT_PIC_HIKER,
- TRAINER_FRONT_PIC_AQUA_GRUNT_M,
- TRAINER_FRONT_PIC_PKMN_BREEDER_F,
- TRAINER_FRONT_PIC_COOLTRAINER_M,
- TRAINER_FRONT_PIC_BIRD_KEEPER,
- TRAINER_FRONT_PIC_COLLECTOR,
- TRAINER_FRONT_PIC_AQUA_GRUNT_F,
- TRAINER_FRONT_PIC_SWIMMER_M,
- TRAINER_FRONT_PIC_MAGMA_GRUNT_M,
- TRAINER_FRONT_PIC_EXPERT_M,
- TRAINER_FRONT_PIC_AQUA_ADMIN_M,
- TRAINER_FRONT_PIC_BLACK_BELT,
- TRAINER_FRONT_PIC_AQUA_ADMIN_F,
- TRAINER_FRONT_PIC_AQUA_LEADER,
- TRAINER_FRONT_PIC_HEX_MANIAC,
- TRAINER_FRONT_PIC_AROMA_LADY,
- TRAINER_FRONT_PIC_RUIN_MANIAC,
- TRAINER_FRONT_PIC_INTERVIEWER,
- TRAINER_FRONT_PIC_TUBER_F,
- TRAINER_FRONT_PIC_TUBER_M,
- TRAINER_FRONT_PIC_COOLTRAINER_F,
- TRAINER_FRONT_PIC_LADY,
- TRAINER_FRONT_PIC_BEAUTY,
- TRAINER_FRONT_PIC_RICH_BOY,
- TRAINER_FRONT_PIC_EXPERT_F,
- TRAINER_FRONT_PIC_POKE_MANIAC,
- TRAINER_FRONT_PIC_MAGMA_GRUNT_F,
- TRAINER_FRONT_PIC_GUITARIST,
- TRAINER_FRONT_PIC_KINDLER,
- TRAINER_FRONT_PIC_CAMPER,
- TRAINER_FRONT_PIC_PICNICKER,
- TRAINER_FRONT_PIC_BUG_MANIAC,
- TRAINER_FRONT_PIC_PKMN_BREEDER_M,
- TRAINER_FRONT_PIC_PSYCHIC_M,
- TRAINER_FRONT_PIC_PSYCHIC_F,
- TRAINER_FRONT_PIC_GENTLEMAN,
- TRAINER_FRONT_PIC_SIDNEY,
- TRAINER_FRONT_PIC_PHOEBE,
- TRAINER_FRONT_PIC_GLACIA,
- TRAINER_FRONT_PIC_DRAKE,
- TRAINER_FRONT_PIC_ROXANNE,
- TRAINER_FRONT_PIC_BRAWLY,
- TRAINER_FRONT_PIC_WATTSON,
- TRAINER_FRONT_PIC_FLANNERY,
- TRAINER_FRONT_PIC_NORMAN,
- TRAINER_FRONT_PIC_WINONA,
- TRAINER_FRONT_PIC_TATE_LIZA,
- TRAINER_FRONT_PIC_JUAN,
- TRAINER_FRONT_PIC_SCHOOL_KID_M,
- TRAINER_FRONT_PIC_SCHOOL_KID_F,
- TRAINER_FRONT_PIC_SR_JR,
- TRAINER_FRONT_PIC_POKÉFAN_M,
- TRAINER_FRONT_PIC_POKÉFAN_F,
- TRAINER_FRONT_PIC_YOUNGSTER,
- TRAINER_FRONT_PIC_WALLACE,
- TRAINER_FRONT_PIC_FISHERMAN,
- TRAINER_FRONT_PIC_TRIATHLETE_BIKER_M,
- TRAINER_FRONT_PIC_TRIATHLETE_BIKER_F,
- TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_M,
- TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_F,
- TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_M,
- TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_F,
- TRAINER_FRONT_PIC_DRAGON_TAMER,
- TRAINER_FRONT_PIC_NINJA_BOY,
- TRAINER_FRONT_PIC_BATTLE_GIRL,
- TRAINER_FRONT_PIC_PARASOL_LADY,
- TRAINER_FRONT_PIC_SWIMMER_F,
- TRAINER_FRONT_PIC_TWINS,
- TRAINER_FRONT_PIC_SAILOR,
- TRAINER_FRONT_PIC_MAGMA_ADMIN_M,
- TRAINER_FRONT_PIC_WALLY,
- TRAINER_FRONT_PIC_BRENDAN_E,
- TRAINER_FRONT_PIC_MAY_E,
- TRAINER_FRONT_PIC_BUG_CATCHER,
- TRAINER_FRONT_PIC_PKMN_RANGER_M,
- TRAINER_FRONT_PIC_PKMN_RANGER_F,
- TRAINER_FRONT_PIC_MAGMA_LEADER,
- TRAINER_FRONT_PIC_LASS,
- TRAINER_FRONT_PIC_YOUNG_COUPLE,
- TRAINER_FRONT_PIC_OLD_COUPLE,
- TRAINER_FRONT_PIC_SIS_AND_BRO,
- TRAINER_FRONT_PIC_STEVEN,
- TRAINER_FRONT_PIC_ANABEL,
- TRAINER_FRONT_PIC_TUCKER,
- TRAINER_FRONT_PIC_SPENSER,
- TRAINER_FRONT_PIC_GRETA,
- TRAINER_FRONT_PIC_NOLAND,
- TRAINER_FRONT_PIC_LUCY,
- TRAINER_FRONT_PIC_BRANDON,
- TRAINER_FRONT_PIC_RED,
- TRAINER_FRONT_PIC_LEAF,
- TRAINER_FRONT_PIC_BRENDAN_RS,
- TRAINER_FRONT_PIC_MAY_RS
-};
-
-#endif // GUARD_TRAINER_FRONT_SPRITES_H
diff --git a/include/trainer_ids.h b/include/trainer_ids.h
deleted file mode 100644
index 65c80187f..000000000
--- a/include/trainer_ids.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef GUARD_TRAINER_IDS_H
-#define GUARD_TRAINER_IDS_H
-
-#define NO_OF_TRAINERS 854
-#define TRAINER_ID_STEVEN 804
-
-#endif // GUARD_TRAINER_IDS_H
diff --git a/include/trainer_see.h b/include/trainer_see.h
index ab035d9f8..5da50cfa1 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -1,6 +1,21 @@
#ifndef GUARD_TRAINER_SEE_H
#define GUARD_TRAINER_SEE_H
+struct ApproachingTrainer
+{
+ u8 mapObjectId;
+ u8 radius;
+ u8 field_2;
+ u8 field_3;
+ const u8 *trainerScriptPtr;
+ u8 field_8;
+ u8 field_9;
+ u8 field_A;
+ u8 field_B;
+};
+
+extern struct ApproachingTrainer gApproachingTrainers[];
+
void sub_80B4578(struct MapObject *);
u8 sub_80B47BC(void);
void sub_8155D78(struct MapObject *);
diff --git a/ld_script.txt b/ld_script.txt
index 662bdebb9..4015c51fa 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -119,8 +119,9 @@ SECTIONS {
asm/battle_anim_80A9C70.o(.text);
asm/title_screen.o(.text);
asm/field_screen.o(.text);
- asm/battle_setup.o(.text);
+ src/battle_setup.o(.text);
asm/cable_club.o(.text);
+ src/trainer_see.o(.text);
asm/trainer_see.o(.text);
src/wild_encounter.o(.text);
asm/field_effect.o(.text);
@@ -376,7 +377,7 @@ SECTIONS {
data/battle_anim_80A9C70.o(.rodata);
data/title_screen.o(.rodata);
data/field_screen.o(.rodata);
- data/battle_setup.o(.rodata);
+ src/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/trainer_see.o(.rodata);
data/wild_encounter.o(.rodata);
diff --git a/src/battle_2.c b/src/battle_2.c
index e0fb0e31a..7bde3d174 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -17,6 +17,7 @@
#include "item.h"
#include "constants/items.h"
#include "constants/hold_effects.h"
+#include "constants/trainers.h"
#include "link.h"
#include "bg.h"
#include "dma3.h"
@@ -38,7 +39,6 @@
#include "pokedex.h"
#include "constants/abilities.h"
#include "constants/moves.h"
-#include "trainer_classes.h"
#include "evolution_scene.h"
#include "roamer.h"
#include "tv.h"
@@ -415,7 +415,7 @@ static void CB2_InitBattleInternal(void)
gBattleTerrain = BattleSetup_GetTerrainId();
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
- gBattleTerrain = BATTLE_TERRAIN_INSIDE;
+ gBattleTerrain = BATTLE_TERRAIN_BUILDING;
sub_80356D0();
LoadBattleTextboxAndBackground();
@@ -1718,7 +1718,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
{
const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
@@ -1726,11 +1726,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
break;
}
- case PARTY_FLAG_CUSTOM_MOVES:
+ case F_TRAINER_PARTY_CUSTOM_MOVESET:
{
const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
@@ -1744,11 +1744,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
}
break;
}
- case PARTY_FLAG_HAS_ITEM:
+ case F_TRAINER_PARTY_HELD_ITEM:
{
const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
@@ -1758,11 +1758,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
break;
}
- case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM:
+ case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
{
const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
@@ -4749,19 +4749,19 @@ static void HandleEndTurn_BattleWon(void)
switch (gTrainers[gTrainerBattleOpponent_A].trainerClass)
{
- case CLASS_ELITE_FOUR:
- case CLASS_CHAMPION:
+ case TRAINER_CLASS_ELITE_FOUR:
+ case TRAINER_CLASS_CHAMPION:
PlayBGM(BGM_KACHI5);
break;
- case CLASS_TEAM_AQUA:
- case CLASS_TEAM_MAGMA:
- case CLASS_AQUA_ADMIN:
- case CLASS_AQUA_LEADER:
- case CLASS_MAGMA_ADMIN:
- case CLASS_MAGMA_LEADER:
+ case TRAINER_CLASS_TEAM_AQUA:
+ case TRAINER_CLASS_TEAM_MAGMA:
+ case TRAINER_CLASS_AQUA_ADMIN:
+ case TRAINER_CLASS_AQUA_LEADER:
+ case TRAINER_CLASS_MAGMA_ADMIN:
+ case TRAINER_CLASS_MAGMA_LEADER:
PlayBGM(BGM_KACHI4);
break;
- case CLASS_LEADER:
+ case TRAINER_CLASS_LEADER:
PlayBGM(BGM_KACHI3);
break;
default:
diff --git a/src/battle_message.c b/src/battle_message.c
index ec1cfd626..cab4bdf42 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -12,6 +12,7 @@
#include "window.h"
#include "palette.h"
#include "battle_controllers.h"
+#include "battle_setup.h"
extern u16 gLastUsedItem;
extern u8 gLastUsedAbility;
@@ -54,8 +55,6 @@ extern void sub_81D5554(u8 *txtPtr, u16 trainerId); // pokenav
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 const u8* GetTrainer1LoseText(void); // battle_setup
-extern const u8* GetTrainer2LoseText(void); // battle_setup
extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing);
extern u8 GetTextSpeedInRecordedBattle(void);
@@ -2068,7 +2067,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
}
else
{
- toCpy = GetTrainer1LoseText();
+ toCpy = GetTrainerALoseText();
}
break;
case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
@@ -2165,7 +2164,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
}
else
{
- toCpy = GetTrainer2LoseText();
+ toCpy = GetTrainerBLoseText();
}
break;
case B_TXT_TRAINER2_WIN_TEXT:
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 88d583c1f..656f9f43a 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -17,6 +17,7 @@
#include "battle_interface.h"
#include "constants/species.h"
#include "constants/songs.h"
+#include "constants/trainers.h"
#include "text.h"
#include "sound.h"
#include "pokedex.h"
@@ -6236,19 +6237,19 @@ static u32 GetTrainerMoneyToGive(u16 trainerId)
lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
}
break;
- case PARTY_FLAG_CUSTOM_MOVES:
+ case F_TRAINER_PARTY_CUSTOM_MOVESET:
{
const struct TrainerMonNoItemCustomMoves *party = gTrainers[trainerId].party.NoItemCustomMoves;
lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
}
break;
- case PARTY_FLAG_HAS_ITEM:
+ case F_TRAINER_PARTY_HELD_ITEM:
{
const struct TrainerMonItemDefaultMoves *party = gTrainers[trainerId].party.ItemDefaultMoves;
lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
}
break;
- case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM:
+ case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
{
const struct TrainerMonItemCustomMoves *party = gTrainers[trainerId].party.ItemCustomMoves;
lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
@@ -10334,7 +10335,7 @@ static void atkE4_getsecretpowereffect(void)
case BATTLE_TERRAIN_POND:
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SPD_MINUS_1;
break;
- case BATTLE_TERRAIN_ROCK:
+ case BATTLE_TERRAIN_MOUNTAIN:
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION;
break;
case BATTLE_TERRAIN_CAVE:
diff --git a/src/battle_setup.c b/src/battle_setup.c
new file mode 100644
index 000000000..3d4f5afcc
--- /dev/null
+++ b/src/battle_setup.c
@@ -0,0 +1,1884 @@
+#include "global.h"
+#include "constants/trainers.h"
+#include "battle.h"
+#include "battle_setup.h"
+#include "battle_transition.h"
+#include "main.h"
+#include "task.h"
+#include "pokemon_3.h"
+#include "safari_zone.h"
+#include "script.h"
+#include "constants/game_stat.h"
+#include "event_data.h"
+#include "constants/species.h"
+#include "songs.h"
+#include "metatile_behavior.h"
+#include "constants/maps.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "random.h"
+#include "starter_choose.h"
+#include "script_pokemon_80F8.h"
+#include "constants/items.h"
+#include "palette.h"
+#include "window.h"
+#include "field_map_obj.h"
+#include "event_scripts.h"
+#include "trainer_see.h"
+#include "field_message_box.h"
+#include "sound.h"
+#include "strings.h"
+#include "secret_base.h"
+#include "string_util.h"
+
+enum
+{
+ TRAINER_PARAM_LOAD_VAL_8BIT,
+ TRAINER_PARAM_LOAD_VAL_16BIT,
+ TRAINER_PARAM_LOAD_VAL_32BIT,
+ TRAINER_PARAM_CLEAR_VAL_8BIT,
+ TRAINER_PARAM_CLEAR_VAL_16BIT,
+ TRAINER_PARAM_CLEAR_VAL_32BIT,
+ TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR,
+};
+
+struct TrainerBattleParameter
+{
+ void *varPtr;
+ u8 ptrType;
+};
+
+extern bool8 InBattlePyramid(void);
+extern bool8 InBattlePike(void);
+extern bool32 InTrainerHill(void);
+extern bool32 FieldPoisonEffectIsRunning(void);
+extern void overworld_free_bg_tilemaps(void);
+extern void prev_quest_postbuffer_cursor_backup_reset(void);
+extern void ResetPoisonStepCounter(void);
+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);
+extern bool8 GetBattlePyramidTrainerFlag(u8 mapObjId);
+extern bool8 GetTrainerHillTrainerFlag(u8 mapObjId);
+extern bool8 sub_81D5C18(void);
+extern void sub_816306C(u8 a0);
+extern void sub_8163048(u8 a0);
+extern void sub_81A9B04(void);
+extern void sub_81D639C(void);
+extern void sub_81D6384(void);
+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);
+extern u8 gApproachingTrainerId;
+extern u8 gNoOfApproachingTrainers;
+extern u16 gUnknown_03006080;
+
+// this file's functions
+static void DoBattlePikeWildBattle(void);
+static void DoSafariBattle(void);
+static void DoStandardWildBattle(void);
+static void CB2_EndWildBattle(void);
+static void CB2_EndScriptedWildBattle(void);
+static u8 GetWildBattleTransition(void);
+static u8 GetTrainerBattleTransition(void);
+static void sub_80B1218(void);
+static void sub_80B1234(void);
+static void CB2_GiveStarter(void);
+static void CB2_StartFirstBattle(void);
+static void CB2_EndFirstBattle(void);
+static void CB2_EndTrainerBattle(void);
+static bool32 IsPlayerDefeated(u32 battleOutcome);
+static u16 GetRematchTrainerId(u16 trainerId);
+static void RegisterTrainerInMatchCall(void);
+static void HandleRematchVarsOnBattleEnd(void);
+static const u8 *GetIntroSpeechOfApproachingTrainer(void);
+static const u8 *GetTrainerCantBattleSpeech(void);
+
+// ewram data
+EWRAM_DATA static u16 sTrainerBattleMode = 0;
+EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
+EWRAM_DATA u16 gTrainerBattleOpponent_B = 0;
+EWRAM_DATA u16 gPartnerTrainerId = 0;
+EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0;
+EWRAM_DATA static u8 *sTrainerAIntroSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerBIntroSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerADefeatSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerBDefeatSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerVictorySpeech = NULL;
+EWRAM_DATA static u8 *sTrainerCannotBattleSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerBattleEndScript = NULL;
+EWRAM_DATA static u8 *sTrainerABattleScriptRetAddr = NULL;
+EWRAM_DATA static u8 *sTrainerBBattleScriptRetAddr = NULL;
+EWRAM_DATA static bool8 sShouldCheckTrainerBScript = FALSE;
+EWRAM_DATA static u8 sNoOfPossibleTrainerRetScripts = 0;
+
+// const rom data
+
+// The first transition is used if the enemy pokemon are lower level than our pokemon.
+// Otherwise, the second transition is used.
+static const u8 sBattleTransitionTable_Wild[][2] =
+{
+ {B_TRANSITION_SLICE, B_TRANSITION_WHITEFADE}, // Normal
+ {B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES}, // Cave
+ {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used
+ {B_TRANSITION_WAVE, B_TRANSITION_RIPPLE}, // Water
+};
+
+static const u8 sBattleTransitionTable_Trainer[][2] =
+{
+ {B_TRANSITION_POKEBALLS_TRAIL, B_TRANSITION_SHARDS}, // Normal
+ {B_TRANSITION_SHUFFLE, B_TRANSITION_BIG_POKEBALL}, // Cave
+ {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used
+ {B_TRANSITION_SWIRL, B_TRANSITION_RIPPLE}, // Water
+};
+
+static const u8 sUnknown_0854FE98[] =
+{
+ B_TRANSITION_29, B_TRANSITION_30, B_TRANSITION_31, B_TRANSITION_32,
+ B_TRANSITION_34, B_TRANSITION_35, B_TRANSITION_36, B_TRANSITION_37,
+ B_TRANSITION_38, B_TRANSITION_39, B_TRANSITION_40, B_TRANSITION_41
+};
+
+static const u8 sUnknown_0854FEA4[] =
+{
+ B_TRANSITION_31, B_TRANSITION_32, B_TRANSITION_33
+};
+
+static const u8 sUnknown_0854FEA7[] =
+{
+ B_TRANSITION_29, B_TRANSITION_31, B_TRANSITION_32, B_TRANSITION_33
+};
+
+static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sContinueScriptBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sDoubleBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sTrainerBOrdinaryBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBBattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBBattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] =
+{
+ {{0x0025, 0x0028, 0x0029, 0x002a, 0x002b}, 0x0000, 0x0021},
+ {{0x02e1, 0x032c, 0x032d, 0x032e, 0x032f}, 0x0000, 0x0014},
+ {{0x002c, 0x002f, 0x0030, 0x0031, 0x0032}, 0x0000, 0x001a},
+ {{0x0039, 0x003c, 0x003d, 0x003e, 0x003f}, 0x0000, 0x0018},
+ {{0x0040, 0x0043, 0x0044, 0x0045, 0x0046}, 0x0000, 0x0018},
+ {{0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3}, 0x0000, 0x0027},
+ {{0x02ff, 0x033c, 0x033d, 0x033e, 0x033f}, 0x0000, 0x0024},
+ {{0x005e, 0x0065, 0x0066, 0x0067, 0x0068}, 0x0000, 0x001a},
+ {{0x004e, 0x0054, 0x0055, 0x0056, 0x0057}, 0x0000, 0x001a},
+ {{0x006c, 0x006e, 0x006f, 0x0070, 0x0071}, 0x0018, 0x0014},
+ {{0x0072, 0x0078, 0x0079, 0x007a, 0x007b}, 0x0000, 0x0013},
+ {{0x0090, 0x034c, 0x034d, 0x034e, 0x034f}, 0x0018, 0x0038},
+ {{0x007f, 0x0084, 0x0085, 0x0086, 0x0087}, 0x0000, 0x0024},
+ {{0x0088, 0x008b, 0x008c, 0x008d, 0x008e}, 0x0000, 0x0013},
+ {{0x008f, 0x0093, 0x0094, 0x0095, 0x0096}, 0x0000, 0x001d},
+ {{0x009b, 0x00af, 0x00b0, 0x00b1, 0x00b2}, 0x0000, 0x0016},
+ {{0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb}, 0x0000, 0x001e},
+ {{0x02a0, 0x0338, 0x0339, 0x033a, 0x033b}, 0x0000, 0x002a},
+ {{0x00c3, 0x0340, 0x0341, 0x0342, 0x0343}, 0x0000, 0x0026},
+ {{0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8}, 0x0000, 0x0021},
+ {{0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2}, 0x0000, 0x001d},
+ {{0x00d8, 0x00db, 0x00dc, 0x00dd, 0x00de}, 0x0018, 0x000d},
+ {{0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad}, 0x0018, 0x0001},
+ {{0x00e2, 0x00e4, 0x00e5, 0x00e6, 0x00e7}, 0x0000, 0x0023},
+ {{0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2}, 0x0000, 0x0026},
+ {{0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd}, 0x0000, 0x0026},
+ {{0x00fe, 0x0101, 0x0102, 0x0103, 0x0104}, 0x0000, 0x0024},
+ {{0x0118, 0x011a, 0x011b, 0x011c, 0x011d}, 0x0000, 0x001f},
+ {{0x0111, 0x0114, 0x0115, 0x0116, 0x0117}, 0x0000, 0x001f},
+ {{0x011f, 0x0120, 0x0121, 0x0122, 0x0123}, 0x0000, 0x0020},
+ {{0x012e, 0x012f, 0x0130, 0x0131, 0x0132}, 0x0000, 0x0019},
+ {{0x0125, 0x0127, 0x0128, 0x0129, 0x012a}, 0x0000, 0x0012},
+ {{0x0133, 0x0134, 0x0135, 0x0136, 0x0137}, 0x0000, 0x001e},
+ {{0x0139, 0x013a, 0x013b, 0x013c, 0x013d}, 0x0018, 0x000c},
+ {{0x013e, 0x0148, 0x0149, 0x014a, 0x014b}, 0x0000, 0x0011},
+ {{0x0153, 0x015a, 0x015b, 0x015c, 0x015d}, 0x0000, 0x0015},
+ {{0x0178, 0x017b, 0x017c, 0x017d, 0x017e}, 0x0000, 0x002b},
+ {{0x0171, 0x0172, 0x0173, 0x0174, 0x0175}, 0x0000, 0x0020},
+ {{0x0166, 0x0168, 0x0169, 0x016a, 0x016b}, 0x0000, 0x0019},
+ {{0x016c, 0x016d, 0x016e, 0x016f, 0x0170}, 0x0000, 0x0020},
+ {{0x0182, 0x0184, 0x0185, 0x0186, 0x0187}, 0x0000, 0x002b},
+ {{0x0161, 0x0162, 0x0163, 0x0164, 0x0165}, 0x0000, 0x0019},
+ {{0x0179, 0x0334, 0x0335, 0x0336, 0x0337}, 0x0000, 0x0029},
+ {{0x0188, 0x0189, 0x018a, 0x018b, 0x018c}, 0x0018, 0x0001},
+ {{0x0196, 0x0199, 0x019a, 0x019b, 0x019c}, 0x0000, 0x0023},
+ {{0x01a3, 0x01a5, 0x01a6, 0x01a7, 0x01a8}, 0x0000, 0x001c},
+ {{0x01ab, 0x01ae, 0x01af, 0x01b0, 0x01b1}, 0x0000, 0x001e},
+ {{0x01b2, 0x01b5, 0x01b6, 0x01b7, 0x01b8}, 0x0000, 0x001c},
+ {{0x01c1, 0x01d1, 0x01d2, 0x01d3, 0x01d4}, 0x0000, 0x0027},
+ {{0x01da, 0x01dd, 0x01de, 0x01df, 0x01e0}, 0x0018, 0x000d},
+ {{0x01e1, 0x01e2, 0x01e7, 0x01e8, 0x01e9}, 0x0000, 0x0012},
+ {{0x01ec, 0x01f1, 0x01f2, 0x01f3, 0x01f4}, 0x0000, 0x0028},
+ {{0x02e4, 0x0330, 0x0331, 0x0332, 0x0333}, 0x0000, 0x0017},
+ {{0x0200, 0x0203, 0x0204, 0x0205, 0x0206}, 0x0000, 0x0019},
+ {{0x0221, 0x0224, 0x0225, 0x0226, 0x0227}, 0x0000, 0x0020},
+ {{0x021a, 0x021d, 0x021e, 0x021f, 0x0220}, 0x0000, 0x0020},
+ {{0x0009, 0x0348, 0x0349, 0x034a, 0x034b}, 0x0018, 0x0011},
+ {{0x022f, 0x0232, 0x0233, 0x0234, 0x0235}, 0x0000, 0x0022},
+ {{0x0228, 0x022b, 0x022c, 0x022d, 0x022e}, 0x0000, 0x0022},
+ {{0x025c, 0x025f, 0x0260, 0x0261, 0x0262}, 0x0000, 0x0013},
+ {{0x026d, 0x026e, 0x026f, 0x0270, 0x0271}, 0x0018, 0x000b},
+ {{0x0273, 0x027c, 0x027d, 0x027e, 0x027f}, 0x0000, 0x001b},
+ {{0x0001, 0x0344, 0x0345, 0x0346, 0x0347}, 0x0018, 0x000c},
+ {{0x0282, 0x0283, 0x0284, 0x0285, 0x0286}, 0x0018, 0x003e},
+ {{0x0291, 0x0292, 0x0293, 0x0294, 0x0294}, 0x0018, 0x002b},
+ {{0x0109, 0x0302, 0x0303, 0x0304, 0x0305}, 0x0000, 0x0003},
+ {{0x010a, 0x0306, 0x0307, 0x0308, 0x0309}, 0x0000, 0x000b},
+ {{0x010b, 0x030a, 0x030b, 0x030c, 0x030d}, 0x0000, 0x0002},
+ {{0x010c, 0x030e, 0x030f, 0x0310, 0x0311}, 0x0000, 0x000c},
+ {{0x010d, 0x0312, 0x0313, 0x0314, 0x0315}, 0x0000, 0x0000},
+ {{0x010e, 0x0316, 0x0317, 0x0318, 0x0319}, 0x0000, 0x0004},
+ {{0x010f, 0x031a, 0x031b, 0x031c, 0x031d}, 0x0000, 0x0006},
+ {{0x0110, 0x031e, 0x031f, 0x0320, 0x0321}, 0x0000, 0x0007},
+ {{0x0105, 0x0105, 0x0105, 0x0105, 0x0105}, 0x0000, 0x0008},
+ {{0x0106, 0x0106, 0x0106, 0x0106, 0x0106}, 0x0000, 0x0008},
+ {{0x0107, 0x0107, 0x0107, 0x0107, 0x0107}, 0x0000, 0x0008},
+ {{0x0108, 0x0108, 0x0108, 0x0108, 0x0108}, 0x0000, 0x0008},
+ {{0x014f, 0x014f, 0x014f, 0x014f, 0x014f}, 0x0000, 0x0008},
+};
+
+static const u16 sBadgeFlags[8] =
+{
+ FLAG_BADGE01_GET, FLAG_BADGE02_GET, FLAG_BADGE03_GET, FLAG_BADGE04_GET,
+ FLAG_BADGE05_GET, FLAG_BADGE06_GET, FLAG_BADGE07_GET, FLAG_BADGE08_GET,
+};
+
+#define tState data[0]
+#define tTransition data[1]
+
+static void Task_BattleStart(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (tState)
+ {
+ case 0:
+ if (!FieldPoisonEffectIsRunning()) // is poison not active?
+ {
+ BattleTransition_StartOnField(tTransition);
+ sub_81BE72C();
+ tState++; // go to case 1.
+ }
+ break;
+ case 1:
+ if (IsBattleTransitionDone() == TRUE)
+ {
+ overworld_free_bg_tilemaps();
+ SetMainCallback2(CB2_InitBattle);
+ prev_quest_postbuffer_cursor_backup_reset();
+ ResetPoisonStepCounter();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void CreateBattleStartTask(u8 transition, u16 song)
+{
+ u8 taskId = CreateTask(Task_BattleStart, 1);
+
+ gTasks[taskId].tTransition = transition;
+ PlayMapChosenOrBattleBGM(song);
+}
+
+#undef tState
+#undef tTransition
+
+void BattleSetup_StartWildBattle(void)
+{
+ if (GetSafariZoneFlag())
+ DoSafariBattle();
+ else
+ DoStandardWildBattle();
+}
+
+void BattleSetup_StartBattlePikeWildBattle(void)
+{
+ DoBattlePikeWildBattle();
+}
+
+static void DoStandardWildBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_808BCF4();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = 0;
+ if (InBattlePyramid())
+ {
+ VarSet(VAR_0x400E, 0);
+ gBattleTypeFlags |= BATTLE_TYPE_PYRAMID;
+ }
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void BattleSetup_StartRoamerBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_808BCF4();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_ROAMER;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+static void DoSafariBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_808BCF4();
+ gMain.savedCallback = CB2_EndSafariBattle;
+ gBattleTypeFlags = BATTLE_TYPE_SAFARI;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+}
+
+static void DoBattlePikeWildBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_808BCF4();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_PIKE;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+static void DoTrainerBattle(void)
+{
+ CreateBattleStartTask(GetTrainerBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
+ sub_80B1234();
+}
+
+static void sub_80B0828(void)
+{
+ if (InBattlePyramid())
+ CreateBattleStartTask(sub_80B100C(10), 0);
+ else
+ CreateBattleStartTask(sub_80B100C(11), 0);
+
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
+ sub_80B1234();
+}
+
+// Initiates battle where Wally catches Ralts
+void StartWallyTutorialBattle(void)
+{
+ CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5);
+ ScriptContext2_Enable();
+ gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music;
+ gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL;
+ CreateBattleStartTask(B_TRANSITION_SLICE, 0);
+}
+
+void BattleSetup_StartScriptedWildBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = 0;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void BattleSetup_StartLatiBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void BattleSetup_StartLegendaryBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
+
+ switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL))
+ {
+ default:
+ case SPECIES_GROUDON:
+ gBattleTypeFlags |= BATTLE_TYPE_GROUDON;
+ CreateBattleStartTask(B_TRANSITION_GROUDON, BGM_BATTLE34);
+ break;
+ case SPECIES_KYOGRE:
+ gBattleTypeFlags |= BATTLE_TYPE_KYOGRE;
+ CreateBattleStartTask(B_TRANSITION_KYOGRE, BGM_BATTLE34);
+ break;
+ case SPECIES_RAYQUAZA:
+ gBattleTypeFlags |= BATTLE_TYPE_RAYQUAZA;
+ CreateBattleStartTask(B_TRANSITION_RAYQUAZA, BGM_BATTLE_LEGENDARY);
+ break;
+ case SPECIES_DEOXYS:
+ CreateBattleStartTask(B_TRANSITION_BLUR, BGM_FRLG_BATTLE_DEOXYS);
+ break;
+ case SPECIES_LUGIA:
+ case SPECIES_HO_OH:
+ CreateBattleStartTask(B_TRANSITION_BLUR, BGM_FRLG_BATTLE_LEGENDARY);
+ break;
+ case SPECIES_MEW:
+ CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE_MEW);
+ break;
+ }
+
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void StartGroudonKyogreBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
+
+ if (gGameVersion == VERSION_RUBY)
+ CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON
+ else
+ CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE
+
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void StartRegiBattle(void)
+{
+ u8 transitionId;
+ u16 species;
+
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
+
+ species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES);
+ switch (species)
+ {
+ case SPECIES_REGIROCK:
+ transitionId = B_TRANSITION_REGIROCK;
+ break;
+ case SPECIES_REGICE:
+ transitionId = B_TRANSITION_REGICE;
+ break;
+ case SPECIES_REGISTEEL:
+ transitionId = B_TRANSITION_REGISTEEL;
+ break;
+ default:
+ transitionId = B_TRANSITION_GRID_SQUARES;
+ break;
+ }
+ CreateBattleStartTask(transitionId, BGM_BATTLE36);
+
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+static void CB2_EndWildBattle(void)
+{
+ CpuFill16(0, (void*)(BG_PLTT), BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
+
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE && !InBattlePyramid() && !InBattlePike())
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ gFieldCallback = sub_80AF6F0;
+ }
+}
+
+static void CB2_EndScriptedWildBattle(void)
+{
+ CpuFill16(0, (void*)(BG_PLTT), BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
+
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ if (InBattlePyramid())
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ else
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+}
+
+u8 BattleSetup_GetTerrainId(void)
+{
+ u16 tileBehavior;
+ s16 x, y;
+
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (MetatileBehavior_IsTallGrass(tileBehavior))
+ return BATTLE_TERRAIN_GRASS;
+ if (MetatileBehavior_IsLongGrass(tileBehavior))
+ return BATTLE_TERRAIN_LONG_GRASS;
+ if (MetatileBehavior_IsSandOrDeepSand(tileBehavior))
+ return BATTLE_TERRAIN_SAND;
+
+ switch (gMapHeader.mapType)
+ {
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ break;
+ case MAP_TYPE_UNDERGROUND:
+ if (MetatileBehavior_IsMB_0B(tileBehavior))
+ return BATTLE_TERRAIN_BUILDING;
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ return BATTLE_TERRAIN_CAVE;
+ case MAP_TYPE_INDOOR:
+ case MAP_TYPE_SECRET_BASE:
+ return BATTLE_TERRAIN_BUILDING;
+ case MAP_TYPE_UNDERWATER:
+ return BATTLE_TERRAIN_UNDERWATER;
+ case MAP_TYPE_6:
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
+ return BATTLE_TERRAIN_WATER;
+ return BATTLE_TERRAIN_PLAIN;
+ }
+ if (MetatileBehavior_IsDeepOrOceanWater(tileBehavior))
+ return BATTLE_TERRAIN_WATER;
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ if (MetatileBehavior_IsMountain(tileBehavior))
+ return BATTLE_TERRAIN_MOUNTAIN;
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ {
+ if (MetatileBehavior_GetBridgeSth(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ if (MetatileBehavior_IsBridge(tileBehavior) == TRUE)
+ return BATTLE_TERRAIN_WATER;
+ }
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE113) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE113))
+ return BATTLE_TERRAIN_SAND;
+ if (GetSav1Weather() == 8)
+ return BATTLE_TERRAIN_SAND;
+
+ return BATTLE_TERRAIN_PLAIN;
+}
+
+static u8 GetBattleTransitionTypeByMap(void)
+{
+ u16 tileBehavior;
+ s16 x, y;
+
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (Overworld_GetFlashLevel())
+ return B_TRANSITION_SHUFFLE;
+ if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
+ {
+ switch (gMapHeader.mapType)
+ {
+ case MAP_TYPE_UNDERGROUND:
+ return B_TRANSITION_SWIRL;
+ case MAP_TYPE_UNDERWATER:
+ return B_TRANSITION_BIG_POKEBALL;
+ default:
+ return B_TRANSITION_BLUR;
+ }
+ }
+ return B_TRANSITION_BIG_POKEBALL;
+}
+
+static u16 GetSumOfPlayerPartyLevel(u8 numMons)
+{
+ u8 sum = 0;
+ int i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+
+ if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0)
+ {
+ sum += GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ if (--numMons == 0)
+ break;
+ }
+ }
+ return sum;
+}
+
+static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
+{
+ u8 i;
+ u8 sum;
+ u32 count = numMons;
+
+ if (gTrainers[opponentId].partySize < count)
+ count = gTrainers[opponentId].partySize;
+
+ sum = 0;
+
+ switch (gTrainers[opponentId].partyFlags)
+ {
+ case 0:
+ {
+ const struct TrainerMonNoItemDefaultMoves *party;
+ party = gTrainers[opponentId].party.NoItemDefaultMoves;
+ for (i = 0; i < count; i++)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_CUSTOM_MOVESET:
+ {
+ const struct TrainerMonNoItemCustomMoves *party;
+ party = gTrainers[opponentId].party.NoItemCustomMoves;
+ for (i = 0; i < count; i++)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_HELD_ITEM:
+ {
+ const struct TrainerMonItemDefaultMoves *party;
+ party = gTrainers[opponentId].party.ItemDefaultMoves;
+ for (i = 0; i < count; i++)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
+ {
+ const struct TrainerMonItemCustomMoves *party;
+ party = gTrainers[opponentId].party.ItemCustomMoves;
+ for (i = 0; i < count; i++)
+ sum += party[i].lvl;
+ }
+ break;
+ }
+
+ return sum;
+}
+
+static u8 GetWildBattleTransition(void)
+{
+ u8 transitionType = GetBattleTransitionTypeByMap();
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
+
+ if (enemyLevel < playerLevel)
+ {
+ if (InBattlePyramid())
+ return B_TRANSITION_BLUR;
+ else
+ return sBattleTransitionTable_Wild[transitionType][0];
+ }
+ else
+ {
+ if (InBattlePyramid())
+ return B_TRANSITION_GRID_SQUARES;
+ else
+ return sBattleTransitionTable_Wild[transitionType][1];
+ }
+}
+
+static u8 GetTrainerBattleTransition(void)
+{
+ u8 minPartyCount;
+ u8 transitionType;
+ u8 enemyLevel;
+ u8 playerLevel;
+
+ if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ return B_TRANSITION_CHAMPION;
+
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR)
+ {
+ if (gTrainerBattleOpponent_A == TRAINER_SIDNEY)
+ return B_TRANSITION_SYDNEY;
+ if (gTrainerBattleOpponent_A == TRAINER_PHOEBE)
+ return B_TRANSITION_PHOEBE;
+ if (gTrainerBattleOpponent_A == TRAINER_GLACIA)
+ return B_TRANSITION_GLACIA;
+ if (gTrainerBattleOpponent_A == TRAINER_DRAKE)
+ return B_TRANSITION_DRAKE;
+ return B_TRANSITION_CHAMPION;
+ }
+
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION)
+ return B_TRANSITION_CHAMPION;
+
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_TEAM_MAGMA
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_MAGMA_LEADER
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_MAGMA_ADMIN)
+ return B_TRANSITION_MAGMA;
+
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_TEAM_AQUA
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_AQUA_LEADER
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_AQUA_ADMIN)
+ return B_TRANSITION_AQUA;
+
+ if (gTrainers[gTrainerBattleOpponent_A].doubleBattle == TRUE)
+ minPartyCount = 2; // double battles always at least have 2 pokemon.
+ else
+ minPartyCount = 1;
+
+ transitionType = GetBattleTransitionTypeByMap();
+ enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent_A, minPartyCount);
+ playerLevel = GetSumOfPlayerPartyLevel(minPartyCount);
+
+ if (enemyLevel < playerLevel)
+ return sBattleTransitionTable_Trainer[transitionType][0];
+ else
+ return sBattleTransitionTable_Trainer[transitionType][1];
+}
+
+u8 sub_80B100C(s32 arg0)
+{
+ u16 var;
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
+
+ if (enemyLevel < playerLevel)
+ {
+ switch (arg0)
+ {
+ case 11:
+ case 12:
+ case 13:
+ return B_TRANSITION_POKEBALLS_TRAIL;
+ case 10:
+ return sUnknown_0854FEA4[Random() % ARRAY_COUNT(sUnknown_0854FEA4)];
+ case 3:
+ return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)];
+ }
+
+ if (VarGet(VAR_0x40CE) != 3)
+ return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
+ }
+ else
+ {
+ switch (arg0)
+ {
+ case 11:
+ case 12:
+ case 13:
+ return B_TRANSITION_BIG_POKEBALL;
+ case 10:
+ return sUnknown_0854FEA4[Random() % ARRAY_COUNT(sUnknown_0854FEA4)];
+ case 3:
+ return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)];
+ }
+
+ if (VarGet(VAR_0x40CE) != 3)
+ return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
+ }
+
+ var = gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 0]
+ + gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 1];
+
+ return sUnknown_0854FE98[var % ARRAY_COUNT(sUnknown_0854FE98)];
+}
+
+void ChooseStarter(void)
+{
+ SetMainCallback2(CB2_ChooseStarter);
+ gMain.savedCallback = CB2_GiveStarter;
+}
+
+static void CB2_GiveStarter(void)
+{
+ u16 starterMon;
+
+ *GetVarPointer(VAR_FIRST_POKE) = gSpecialVar_Result;
+ starterMon = GetStarterPokemon(gSpecialVar_Result);
+ ScriptGiveMon(starterMon, 5, 0, 0, 0, 0);
+ ResetTasks();
+ PlayBattleBGM();
+ SetMainCallback2(CB2_StartFirstBattle);
+ BattleTransition_Start(B_TRANSITION_BLUR);
+}
+
+static void CB2_StartFirstBattle(void)
+{
+ UpdatePaletteFade();
+ RunTasks();
+
+ if (IsBattleTransitionDone() == TRUE)
+ {
+ gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE;
+ gMain.savedCallback = CB2_EndFirstBattle;
+ FreeAllWindowBuffers();
+ SetMainCallback2(CB2_InitBattle);
+ prev_quest_postbuffer_cursor_backup_reset();
+ ResetPoisonStepCounter();
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+ }
+}
+
+static void CB2_EndFirstBattle(void)
+{
+ Overworld_ClearSavedMusic();
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+static void sub_80B1218(void)
+{
+ if (GetGameStat(GAME_STAT_WILD_BATTLES) % 60 == 0)
+ sub_81DA57C();
+}
+
+static void sub_80B1234(void)
+{
+ if (GetGameStat(GAME_STAT_TRAINER_BATTLES) % 20 == 0)
+ sub_81DA57C();
+}
+
+// why not just use the macros? maybe its because they didnt want to uncast const every time?
+static u32 TrainerBattleLoadArg32(const u8 *ptr)
+{
+ return T1_READ_32(ptr);
+}
+
+static u16 TrainerBattleLoadArg16(const u8 *ptr)
+{
+ return T1_READ_16(ptr);
+}
+
+static u8 TrainerBattleLoadArg8(const u8 *ptr)
+{
+ return T1_READ_8(ptr);
+}
+
+static u16 GetTrainerAFlag(void)
+{
+ return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A;
+}
+
+static u16 GetTrainerBFlag(void)
+{
+ return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_B;
+}
+
+static bool32 IsPlayerDefeated(u32 battleOutcome)
+{
+ switch (battleOutcome)
+ {
+ case BATTLE_LOST:
+ case BATTLE_DREW:
+ return TRUE;
+ case BATTLE_WON:
+ case BATTLE_RAN:
+ case BATTLE_PLAYER_TELEPORTED:
+ case BATTLE_POKE_FLED:
+ case BATTLE_CAUGHT:
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+void ResetTrainerOpponentIds(void)
+{
+ gTrainerBattleOpponent_A = 0;
+ gTrainerBattleOpponent_B = 0;
+}
+
+static void InitTrainerBattleVariables(void)
+{
+ sTrainerBattleMode = 0;
+ if (gApproachingTrainerId == 0)
+ {
+ sTrainerAIntroSpeech = NULL;
+ sTrainerADefeatSpeech = NULL;
+ sTrainerABattleScriptRetAddr = NULL;
+ }
+ else
+ {
+ sTrainerBIntroSpeech = NULL;
+ sTrainerBDefeatSpeech = NULL;
+ sTrainerBBattleScriptRetAddr = NULL;
+ }
+ sTrainerMapObjectLocalId = 0;
+ sTrainerVictorySpeech = NULL;
+ sTrainerCannotBattleSpeech = NULL;
+ sTrainerBattleEndScript = NULL;
+}
+
+static inline void SetU8(void *ptr, u8 value)
+{
+ *(u8*)(ptr) = value;
+}
+
+static inline void SetU16(void *ptr, u16 value)
+{
+ *(u16*)(ptr) = value;
+}
+
+static inline void SetU32(void *ptr, u32 value)
+{
+ *(u32*)(ptr) = value;
+}
+
+static inline void SetPtr(const void *ptr, const void* value)
+{
+ *(const void**)(ptr) = value;
+}
+
+static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data)
+{
+ while (1)
+ {
+ switch (specs->ptrType)
+ {
+ case TRAINER_PARAM_LOAD_VAL_8BIT:
+ SetU8(specs->varPtr, TrainerBattleLoadArg8(data));
+ data += 1;
+ break;
+ case TRAINER_PARAM_LOAD_VAL_16BIT:
+ SetU16(specs->varPtr, TrainerBattleLoadArg16(data));
+ data += 2;
+ break;
+ case TRAINER_PARAM_LOAD_VAL_32BIT:
+ SetU32(specs->varPtr, TrainerBattleLoadArg32(data));
+ data += 4;
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_8BIT:
+ SetU8(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_16BIT:
+ SetU16(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_32BIT:
+ SetU32(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR:
+ SetPtr(specs->varPtr, data);
+ return;
+ }
+ specs++;
+ }
+}
+
+void SetMapVarsToTrainer(void)
+{
+ if (sTrainerMapObjectLocalId != 0)
+ {
+ gSpecialVar_LastTalked = sTrainerMapObjectLocalId;
+ gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ }
+}
+
+const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
+{
+ InitTrainerBattleVariables();
+ sTrainerBattleMode = TrainerBattleLoadArg8(data);
+
+ switch (sTrainerBattleMode)
+ {
+ case 3:
+ TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data);
+ return EventScript_2713C2;
+ case 4:
+ TrainerBattleLoadArgs(sDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_TryDoDoubleTrainerBattle;
+ case 2:
+ if (gApproachingTrainerId == 0)
+ {
+ TrainerBattleLoadArgs(sContinueScriptBattleParams, data);
+ SetMapVarsToTrainer();
+ }
+ else
+ {
+ TrainerBattleLoadArgs(sTrainerBContinueScriptBattleParams, data);
+ }
+ return EventScript_271362;
+ case 1:
+ TrainerBattleLoadArgs(sContinueScriptBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_271362;
+ case 6:
+ case 8:
+ TrainerBattleLoadArgs(sContinueScriptDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_TryDoDoubleTrainerBattle;
+ case 7:
+ TrainerBattleLoadArgs(sDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
+ return EventScript_TryDoDoubleRematchBattle;
+ case 5:
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
+ return EventScript_2713D1;
+ case 9:
+ if (gApproachingTrainerId == 0)
+ {
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = sub_81A9AA8(gSpecialVar_LastTalked);
+ }
+ else
+ {
+ TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
+ gTrainerBattleOpponent_B = sub_81A9AA8(gSpecialVar_LastTalked);
+ }
+ return EventScript_271362;
+ case 10:
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ return NULL;
+ case 11:
+ TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
+ return NULL;
+ case 12:
+ if (gApproachingTrainerId == 0)
+ {
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = sub_81D6180(gSpecialVar_LastTalked);
+ }
+ else
+ {
+ TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
+ gTrainerBattleOpponent_B = sub_81D6180(gSpecialVar_LastTalked);
+ }
+ return EventScript_271362;
+ default:
+ if (gApproachingTrainerId == 0)
+ {
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ }
+ else
+ {
+ TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
+ }
+ return EventScript_271362;
+ }
+}
+
+void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript)
+{
+ gSelectedMapObject = trainerMapObjId;
+ gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
+ BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
+ ScriptContext1_SetupScript(EventScript_271354);
+ ScriptContext2_Enable();
+}
+
+void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript)
+{
+ gSelectedMapObject = trainerMapObjId;
+ gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
+ BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
+}
+
+void SetUpTwoTrainersBattle(void)
+{
+ ScriptContext1_SetupScript(EventScript_271354);
+ ScriptContext2_Enable();
+}
+
+bool32 GetTrainerFlagFromScriptPointer(const u8 *data)
+{
+ u32 flag = TrainerBattleLoadArg16(data + 2);
+ return FlagGet(FLAG_TRAINER_FLAG_START + flag);
+}
+
+void sub_80B16D8(void)
+{
+ struct MapObject *mapObject = &gMapObjects[gSelectedMapObject];
+
+ npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18));
+}
+
+u8 GetTrainerBattleMode(void)
+{
+ return sTrainerBattleMode;
+}
+
+bool8 GetTrainerFlag(void)
+{
+ if (InBattlePyramid())
+ return GetBattlePyramidTrainerFlag(gSelectedMapObject);
+ else if (InTrainerHill())
+ return GetTrainerHillTrainerFlag(gSelectedMapObject);
+ else
+ return FlagGet(GetTrainerAFlag());
+}
+
+static void SetBattledTrainersFlags(void)
+{
+ if (gTrainerBattleOpponent_B != 0)
+ FlagSet(GetTrainerBFlag());
+ FlagSet(GetTrainerAFlag());
+}
+
+static void SetBattledTrainerFlag(void)
+{
+ FlagSet(GetTrainerAFlag());
+}
+
+bool8 HasTrainerBeenFought(u16 trainerId)
+{
+ return FlagGet(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void SetTrainerFlag(u16 trainerId)
+{
+ FlagSet(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void ClearTrainerFlag(u16 trainerId)
+{
+ FlagClear(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void BattleSetup_StartTrainerBattle(void)
+{
+ if (gNoOfApproachingTrainers == 2)
+ gBattleTypeFlags = (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TRAINER);
+ else
+ gBattleTypeFlags = (BATTLE_TYPE_TRAINER);
+
+ if (InBattlePyramid())
+ {
+ VarSet(VAR_0x400E, 0);
+ gBattleTypeFlags |= BATTLE_TYPE_PYRAMID;
+
+ if (gNoOfApproachingTrainers == 2)
+ {
+ sub_816306C(1);
+ ZeroMonData(&gEnemyParty[1]);
+ ZeroMonData(&gEnemyParty[2]);
+ ZeroMonData(&gEnemyParty[4]);
+ ZeroMonData(&gEnemyParty[5]);
+ }
+ else
+ {
+ sub_8163048(1);
+ ZeroMonData(&gEnemyParty[1]);
+ ZeroMonData(&gEnemyParty[2]);
+ }
+
+ sub_81A9B04();
+ }
+ else if (sub_81D5C18())
+ {
+ gBattleTypeFlags |= BATTLE_TYPE_x4000000;
+
+ if (gNoOfApproachingTrainers == 2)
+ sub_81D639C();
+ else
+ sub_81D6384();
+
+ sub_81D61E8();
+ }
+
+ sNoOfPossibleTrainerRetScripts = gNoOfApproachingTrainers;
+ gNoOfApproachingTrainers = 0;
+ sShouldCheckTrainerBScript = FALSE;
+ gUnknown_03006080 = 0;
+ gMain.savedCallback = CB2_EndTrainerBattle;
+
+ if (InBattlePyramid() || sub_81D5C18())
+ sub_80B0828();
+ else
+ DoTrainerBattle();
+
+ ScriptContext1_Stop();
+}
+
+static void CB2_EndTrainerBattle(void)
+{
+ if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ if (InBattlePyramid() || sub_81D5C18())
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ else
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ if (!InBattlePyramid() && !sub_81D5C18())
+ {
+ RegisterTrainerInMatchCall();
+ SetBattledTrainersFlags();
+ }
+ }
+}
+
+static void CB2_EndRematchBattle(void)
+{
+ if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ RegisterTrainerInMatchCall();
+ SetBattledTrainersFlags();
+ HandleRematchVarsOnBattleEnd();
+ }
+}
+
+void BattleSetup_StartRematchBattle(void)
+{
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER;
+ gMain.savedCallback = CB2_EndRematchBattle;
+ DoTrainerBattle();
+ ScriptContext1_Stop();
+}
+
+void ShowTrainerIntroSpeech(void)
+{
+ if (InBattlePyramid())
+ {
+ if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
+ sub_81A9EDC(sub_81A9AA8(gSpecialVar_LastTalked));
+ else
+ sub_81A9EDC(sub_81A9AA8(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId));
+
+ sub_80982B8();
+ }
+ else if (sub_81D5C18())
+ {
+ if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
+ sub_81D572C(2, sub_81D6180(gSpecialVar_LastTalked));
+ else
+ sub_81D572C(2, sub_81D6180(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId));
+
+ sub_80982B8();
+ }
+ else
+ {
+ ShowFieldMessage(GetIntroSpeechOfApproachingTrainer());
+ }
+}
+
+const u8 *BattleSetup_GetScriptAddrAfterBattle(void)
+{
+ if (sTrainerBattleEndScript != NULL)
+ return sTrainerBattleEndScript;
+ else
+ return EventScript_TestSignpostMsg;
+}
+
+const u8 *BattleSetup_GetTrainerPostBattleScript(void)
+{
+ if (sShouldCheckTrainerBScript)
+ {
+ sShouldCheckTrainerBScript = FALSE;
+ if (sTrainerBBattleScriptRetAddr != NULL)
+ {
+ gUnknown_03006080 = 1;
+ return sTrainerBBattleScriptRetAddr;
+ }
+ }
+ else
+ {
+ if (sTrainerABattleScriptRetAddr != NULL)
+ {
+ gUnknown_03006080 = 0;
+ return sTrainerABattleScriptRetAddr;
+ }
+ }
+
+ return EventScript_TryGetTrainerScript;
+}
+
+void ShowTrainerCantBattleSpeech(void)
+{
+ ShowFieldMessage(GetTrainerCantBattleSpeech());
+}
+
+void SetUpTrainerEncounterMusic(void)
+{
+ u16 trainerId;
+ u16 music;
+
+ if (gApproachingTrainerId == 0)
+ trainerId = gTrainerBattleOpponent_A;
+ else
+ trainerId = gTrainerBattleOpponent_B;
+
+ if (sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC
+ && sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC)
+ {
+ switch (GetTrainerEncounterMusicId(trainerId))
+ {
+ case TRAINER_ENCOUNTER_MUSIC_MALE:
+ music = BGM_BOYEYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_FEMALE:
+ music = BGM_GIRLEYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_GIRL:
+ music = BGM_SYOUJOEYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_INTENSE:
+ music = BGM_HAGESHII;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_COOL:
+ music = BGM_KAKKOII;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_AQUA:
+ music = BGM_AQA_0;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_MAGMA:
+ music = BGM_MGM0;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_SWIMMER:
+ music = BGM_SWIMEYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_TWINS:
+ music = BGM_HUTAGO;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR:
+ music = BGM_SITENNOU;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_HIKER:
+ music = BGM_YAMA_EYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_INTERVIEWER:
+ music = BGM_INTER_V;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_RICH:
+ music = BGM_TEST;
+ break;
+ default:
+ music = BGM_AYASII;
+ }
+ PlayNewMapMusic(music);
+ }
+}
+
+static const u8 *ReturnEmptyStringIfNull(const u8 *string)
+{
+ if (string == NULL)
+ return gText_EmptyString2;
+ else
+ return string;
+}
+
+static const u8 *GetIntroSpeechOfApproachingTrainer(void)
+{
+ if (gApproachingTrainerId == 0)
+ return ReturnEmptyStringIfNull(sTrainerAIntroSpeech);
+ else
+ return ReturnEmptyStringIfNull(sTrainerBIntroSpeech);
+}
+
+const u8 *GetTrainerALoseText(void)
+{
+ const u8 *string;
+
+ if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ string = GetSecretBaseTrainerLoseText();
+ else
+ string = sTrainerADefeatSpeech;
+
+ StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(string));
+ return gStringVar4;
+}
+
+const u8 *GetTrainerBLoseText(void)
+{
+ StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(sTrainerBDefeatSpeech));
+ return gStringVar4;
+}
+
+const u8 *GetTrainerWonSpeech(void)
+{
+ return ReturnEmptyStringIfNull(sTrainerVictorySpeech);
+}
+
+static const u8 *GetTrainerCantBattleSpeech(void)
+{
+ return ReturnEmptyStringIfNull(sTrainerCannotBattleSpeech);
+}
+
+static s32 FirstBattleTrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId)
+{
+ s32 i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (table[i].trainerIds[0] == trainerId)
+ return i;
+ }
+
+ return -1;
+}
+
+static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId)
+{
+ s32 i, j;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ for (j = 0; j < REMATCHES_COUNT; j++)
+ {
+ if (table[i].trainerIds[j] == 0)
+ break;
+ if (table[i].trainerIds[j] == trainerId)
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+static bool32 sub_80B1D94(s32 rematchTableId)
+{
+ if (rematchTableId >= REMATCH_ELITE_FOUR_ENTRIES)
+ return TRUE;
+ else if (rematchTableId == REMATCH_WALLY_ENTRY)
+ return (FlagGet(FLAG_0x07E) == FALSE);
+ else
+ return FALSE;
+}
+
+static void SetRematchIdForTrainer(const struct RematchTrainer *table, u32 tableId)
+{
+ s32 i;
+
+ for (i = 1; i < REMATCHES_COUNT; i++)
+ {
+ u16 trainerId = table[tableId].trainerIds[i];
+
+ if (trainerId == 0)
+ break;
+ if (!HasTrainerBeenFought(trainerId))
+ break;
+ }
+
+ gSaveBlock1Ptr->trainerRematches[tableId] = i;
+}
+
+static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum)
+{
+ s32 i;
+ bool32 ret = FALSE;
+
+ for (i = 0; i <= REMATCH_WALLY_ENTRY; i++)
+ {
+ if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !sub_80B1D94(i))
+ {
+ if (gSaveBlock1Ptr->trainerRematches[i] != 0)
+ {
+ // Trainer already wants a rematch. Don't bother updating it
+ ret = TRUE;
+ }
+ else if (FlagGet(FLAG_MATCH_CALL_REGISTERED + i)
+ && (Random() % 100) <= 30) // 31% chance of getting a rematch
+ {
+ SetRematchIdForTrainer(table, i);
+ ret = TRUE;
+ }
+ }
+ }
+
+ return ret;
+}
+
+void UpdateRematchIfDefeated(s32 rematchTableId)
+{
+ if (HasTrainerBeenFought(gRematchTable[rematchTableId].trainerIds[0]) == TRUE)
+ SetRematchIdForTrainer(gRematchTable, rematchTableId);
+}
+
+static bool32 DoesSomeoneWantRematchIn_(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum)
+{
+ s32 i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && gSaveBlock1Ptr->trainerRematches[i] != 0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 IsRematchTrainerIn_(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum)
+{
+ s32 i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 IsFirstTrainerIdReadyForRematch(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId == -1)
+ return FALSE;
+ if (tableId >= 100)
+ return FALSE;
+ if (gSaveBlock1Ptr->trainerRematches[tableId] == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool8 IsTrainerReadyForRematch_(const struct RematchTrainer *table, u16 trainerId)
+{
+ s32 tableId = TrainerIdToRematchTableId(table, trainerId);
+
+ if (tableId == -1)
+ return FALSE;
+ if (tableId >= 100)
+ return FALSE;
+ if (gSaveBlock1Ptr->trainerRematches[tableId] == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static u16 GetRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ const struct RematchTrainer *trainerEntry;
+ s32 i;
+ s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId == -1)
+ return FALSE;
+
+ trainerEntry = &table[tableId];
+ for (i = 1; i < REMATCHES_COUNT; i++)
+ {
+ if (trainerEntry->trainerIds[i] == 0) // previous entry was this trainer's last one
+ return trainerEntry->trainerIds[i - 1];
+ if (!HasTrainerBeenFought(trainerEntry->trainerIds[i]))
+ return trainerEntry->trainerIds[i];
+ }
+
+ return trainerEntry->trainerIds[REMATCHES_COUNT - 1]; // already beaten at max stage
+}
+
+static u16 GetLastBeatenRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ const struct RematchTrainer *trainerEntry;
+ s32 i;
+ s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId == -1)
+ return FALSE;
+
+ trainerEntry = &table[tableId];
+ for (i = 1; i < REMATCHES_COUNT; i++)
+ {
+ if (trainerEntry->trainerIds[i] == 0) // previous entry was this trainer's last one
+ return trainerEntry->trainerIds[i - 1];
+ if (!HasTrainerBeenFought(trainerEntry->trainerIds[i]))
+ return trainerEntry->trainerIds[i - 1];
+ }
+
+ return trainerEntry->trainerIds[REMATCHES_COUNT - 1]; // already beaten at max stage
+}
+
+static void ClearTrainerWantRematchState(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ s32 tableId = TrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId != -1)
+ gSaveBlock1Ptr->trainerRematches[tableId] = 0;
+}
+
+static u32 GetTrainerMatchCallFlag(u32 trainerId)
+{
+ s32 i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (gRematchTable[i].trainerIds[0] == trainerId)
+ return FLAG_MATCH_CALL_REGISTERED + i;
+ }
+
+ return 0xFFFF;
+}
+
+static void RegisterTrainerInMatchCall(void)
+{
+ if (FlagGet(FLAG_HAS_MATCH_CALL))
+ {
+ u32 matchCallFlagId = GetTrainerMatchCallFlag(gTrainerBattleOpponent_A);
+ if (matchCallFlagId != 0xFFFF)
+ FlagSet(matchCallFlagId);
+ }
+}
+
+static bool8 WasSecondRematchWon(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId == -1)
+ return FALSE;
+ if (!HasTrainerBeenFought(table[tableId].trainerIds[1]))
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool32 HasAtLeastFiveBadges(void)
+{
+ s32 i, count;
+
+ for (count = 0, i = 0; i < ARRAY_COUNT(sBadgeFlags); i++)
+ {
+ if (FlagGet(sBadgeFlags[i]) == TRUE)
+ {
+ if (++count >= 5)
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+#define STEP_COUNTER_MAX 255
+
+void IncrementRematchStepCounter(void)
+{
+ if (HasAtLeastFiveBadges())
+ {
+ if (gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX)
+ gSaveBlock1Ptr->trainerRematchStepCounter = STEP_COUNTER_MAX;
+ else
+ gSaveBlock1Ptr->trainerRematchStepCounter++;
+ }
+}
+
+static bool32 IsRematchStepCounterMaxed(void)
+{
+ if (HasAtLeastFiveBadges() && gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum)
+{
+ if (IsRematchStepCounterMaxed() && UpdateRandomTrainerRematches(gRematchTable, mapGroup, mapNum) == TRUE)
+ gSaveBlock1Ptr->trainerRematchStepCounter = 0;
+}
+
+bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum)
+{
+ return DoesSomeoneWantRematchIn_(gRematchTable, mapGroup, mapNum);
+}
+
+bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum)
+{
+ return IsRematchTrainerIn_(gRematchTable, mapGroup, mapNum);
+}
+
+static u16 GetRematchTrainerId(u16 trainerId)
+{
+ return GetRematchTrainerIdFromTable(gRematchTable, trainerId);
+}
+
+u16 GetLastBeatenRematchTrainerId(u16 trainerId)
+{
+ return GetLastBeatenRematchTrainerIdFromTable(gRematchTable, trainerId);
+}
+
+bool8 ShouldTryRematchBattle(void)
+{
+ if (IsFirstTrainerIdReadyForRematch(gRematchTable, gTrainerBattleOpponent_A))
+ return TRUE;
+
+ return WasSecondRematchWon(gRematchTable, gTrainerBattleOpponent_A);
+}
+
+bool8 IsTrainerReadyForRematch(void)
+{
+ return IsTrainerReadyForRematch_(gRematchTable, gTrainerBattleOpponent_A);
+}
+
+static void HandleRematchVarsOnBattleEnd(void)
+{
+ ClearTrainerWantRematchState(gRematchTable, gTrainerBattleOpponent_A);
+ SetBattledTrainersFlags();
+}
+
+void ShouldTryGetTrainerScript(void)
+{
+ if (sNoOfPossibleTrainerRetScripts > 1)
+ {
+ sNoOfPossibleTrainerRetScripts = 0;
+ sShouldCheckTrainerBScript = TRUE;
+ gSpecialVar_Result = TRUE;
+ }
+ else
+ {
+ sShouldCheckTrainerBScript = FALSE;
+ gSpecialVar_Result = FALSE;
+ }
+}
+
+u16 CountBattledRematchTeams(u16 trainerId)
+{
+ s32 i;
+
+ if (HasTrainerBeenFought(gRematchTable[trainerId].trainerIds[0]) != TRUE)
+ return 0;
+
+ for (i = 1; i < REMATCHES_COUNT; i++)
+ {
+ if (gRematchTable[trainerId].trainerIds[i] == 0)
+ break;
+ if (!HasTrainerBeenFought(gRematchTable[trainerId].trainerIds[i]))
+ break;
+ }
+
+ return i;
+}
diff --git a/src/load_save.c b/src/load_save.c
index 2b40f2e92..e0106c0a8 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -1,4 +1,4 @@
-#include "global.h"
+#include "global.h"
#include "gba/flash_internal.h"
#include "load_save.h"
#include "main.h"
@@ -28,7 +28,7 @@ struct LoadedSaveData
/*0x00F0*/ struct ItemSlot pokeBalls[16];
/*0x0130*/ struct ItemSlot TMsHMs[64];
/*0x0230*/ struct ItemSlot berries[46];
- /*0x02E8*/ struct MailStruct mail[16];
+ /*0x02E8*/ struct MailStruct mail[MAIL_COUNT];
};
EWRAM_DATA struct SaveBlock2 gSaveblock2 = {0};
@@ -330,7 +330,7 @@ void LoadSerializedGame(void)
void copy_bags_and_unk_data_from_save_blocks(void)
{
int i;
-
+
// load player items.
for (i = 0; i < 30; i++)
gLoadedSaveData.items[i] = gSaveBlock1Ptr->bagPocket_Items[i];
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index a4d00112b..db176e025 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -1155,7 +1155,7 @@ u8 GetMonsStateToDoubles_2(void)
s32 aliveCount = 0;
s32 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL);
if (species != SPECIES_EGG && species != SPECIES_NONE
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index a419dd46e..d58b024a8 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -11,8 +11,7 @@
#include "link.h"
#include "constants/hold_effects.h"
#include "random.h"
-#include "trainer_classes.h"
-#include "trainer_ids.h"
+#include "constants/trainers.h"
#include "constants/songs.h"
#include "sound.h"
#include "m4a.h"
@@ -692,9 +691,9 @@ void AdjustFriendship(struct Pokemon *mon, u8 event)
if ((event != 5 || !(Random() & 1))
&& (event != 3
|| ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_ELITE_FOUR
- || gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_LEADER
- || gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION))))
+ && (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_LEADER
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION))))
{
s8 mod = gUnknown_08329ECE[event][friendshipLevel];
if (mod > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
@@ -1146,55 +1145,57 @@ void ClearBattleMonForms(void)
u16 GetBattleBGM(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
- return 0x1E0;
+ return BGM_BATTLE34;
if (gBattleTypeFlags & BATTLE_TYPE_REGI)
- return 0x1DF;
+ return BGM_BATTLE36;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
- return 0x1DC;
+ return BGM_BATTLE20;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
u8 trainerClass;
+
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
trainerClass = GetFrontierOpponentClass(gTrainerBattleOpponent_A);
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
- trainerClass = CLASS_EXPERT;
+ trainerClass = TRAINER_CLASS_EXPERT;
else
trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
+
switch (trainerClass)
{
- case CLASS_AQUA_LEADER:
- case CLASS_MAGMA_LEADER:
- return 0x1E3;
- case CLASS_TEAM_AQUA:
- case CLASS_TEAM_MAGMA:
- case CLASS_AQUA_ADMIN:
- case CLASS_MAGMA_ADMIN:
- return 0x1DB;
- case CLASS_LEADER:
- return 0x1DD;
- case CLASS_CHAMPION:
- return 0x1DE;
- case CLASS_PKMN_TRAINER_RIVAL:
+ case TRAINER_CLASS_AQUA_LEADER:
+ case TRAINER_CLASS_MAGMA_LEADER:
+ return BGM_BATTLE30;
+ case TRAINER_CLASS_TEAM_AQUA:
+ case TRAINER_CLASS_TEAM_MAGMA:
+ case TRAINER_CLASS_AQUA_ADMIN:
+ case TRAINER_CLASS_MAGMA_ADMIN:
+ return BGM_BATTLE31;
+ case TRAINER_CLASS_LEADER:
+ return BGM_BATTLE32;
+ case TRAINER_CLASS_CHAMPION:
+ return BGM_BATTLE33;
+ case TRAINER_CLASS_PKMN_TRAINER_3:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
- return 0x1E1;
+ return BGM_BATTLE35;
if (!StringCompare(gTrainers[gTrainerBattleOpponent_A].trainerName, gText_BattleWallyName))
- return 0x1DC;
- return 0x1E1;
- case CLASS_ELITE_FOUR:
- return 0x1E2;
- case CLASS_SALON_MAIDEN:
- case CLASS_DOME_ACE:
- case CLASS_PALACE_MAVEN:
- case CLASS_ARENA_TYCOON:
- case CLASS_FACTORY_HEAD:
- case CLASS_PIKE_QUEEN:
- case CLASS_PYRAMID_KING:
- return 0x1D7;
+ return BGM_BATTLE20;
+ return BGM_BATTLE35;
+ case TRAINER_CLASS_ELITE_FOUR:
+ return BGM_BATTLE38;
+ case TRAINER_CLASS_SALON_MAIDEN:
+ case TRAINER_CLASS_DOME_ACE:
+ case TRAINER_CLASS_PALACE_MAVEN:
+ case TRAINER_CLASS_ARENA_TYCOON:
+ case TRAINER_CLASS_FACTORY_HEAD:
+ case TRAINER_CLASS_PIKE_QUEEN:
+ case TRAINER_CLASS_PYRAMID_KING:
+ return BGM_BATTLE_FRONTIER_BRAIN;
default:
- return 0x1DC;
+ return BGM_BATTLE20;
}
}
- return 0x1DA;
+ return BGM_BATTLE27;
}
void PlayBattleBGM(void)
@@ -1396,7 +1397,7 @@ static s32 GetWildMonTableIdInAlteringCave(u16 species)
void SetWildMonHeldItem(void)
{
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_x100000)))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE)))
{
u16 rnd = Random() % 100;
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0);
@@ -1462,12 +1463,14 @@ bool8 IsShinyOtIdPersonality(u32 otId, u32 personality)
return retVal;
}
-const u8* GetTrainerPartnerName(void)
+const u8 *GetTrainerPartnerName(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
if (gPartnerTrainerId == STEVEN_PARTNER_ID)
- return gTrainers[TRAINER_ID_STEVEN].trainerName;
+ {
+ return gTrainers[TRAINER_STEVEN].trainerName;
+ }
else
{
GetFrontierTrainerName(gStringVar1, gPartnerTrainerId);
@@ -1682,14 +1685,14 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
}
}
-const u8* GetTrainerClassNameFromId(u16 trainerId)
+const u8 *GetTrainerClassNameFromId(u16 trainerId)
{
if (trainerId > NO_OF_TRAINERS)
trainerId = 0;
return gTrainerClassNames[gTrainers[trainerId].trainerClass];
}
-const u8* GetTrainerNameFromId(u16 trainerId)
+const u8 *GetTrainerNameFromId(u16 trainerId)
{
if (trainerId > NO_OF_TRAINERS)
trainerId = 0;
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index 4f3fe4ab9..c88229c61 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -19,7 +19,7 @@
| 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_KYORGE | BATTLE_TYPE_RAYQUAZA))
+ | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA))
extern u32 gBattleTypeFlags;
extern u16 gTrainerBattleOpponent_A;
diff --git a/src/safari_zone.c b/src/safari_zone.c
index 19a26dad9..f1d59907d 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -105,7 +105,7 @@ void SafariZoneRetirePrompt(void)
ScriptContext1_SetupScript(EventScript_2A4B6F);
}
-void sub_80FC190(void)
+void CB2_EndSafariBattle(void)
{
sSafariZoneFleedMons += gBattleResults.field_1F;
if (gBattleOutcome == BATTLE_CAUGHT)
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 504d001ea..1b10501fc 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -656,7 +656,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx)
bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx)
{
u8 mode = ScriptReadByte(ctx);
-
+
switch (mode)
{
case 1:
@@ -1445,7 +1445,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx)
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
u8 ignoreBPress = ScriptReadByte(ctx);
-
+
/*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
ScriptContext1_Stop();
@@ -1501,31 +1501,31 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
u8 y;
StringExpandPlaceholders(gStringVar4, ptr + 6);
-
+
width = GetStringWidth(6, gStringVar4, -1) / 8;
-
+
if (width > 0x1C)
width = 0x1C;
-
+
for (i = 0, height = 4; gStringVar4[i] != 0xFF;)
{
if (gStringVar4[i++] == 0xFE)
height += 3;
}
-
+
if (height > 0x12)
height = 0x12;
-
+
x = width + 2;
temp1 = (0x1E - x) / 2;
x = temp1 + 1;
temp1 = ((x - temp1 - 1) * 8 + 3);
-
+
y = height + 2;
temp2 = (0x14 - y) / 2;
y = temp2 + 2;
temp2 = ((y - temp2 - 1) * 8);
-
+
sub_8198A50(&template1, 0, x, y, width, height, 0xF, 0x1);
template2 = template1;
gUnknown_03000F30 = AddWindow(&template2);
@@ -1924,7 +1924,7 @@ bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx)
{
/*u8 x = ScriptReadByte(ctx);
u8 y = ScriptReadByte(ctx);*/
-
+
HideMoneyBox();
return FALSE;
}
@@ -1979,13 +1979,13 @@ bool8 ScrCmd_dotrainerbattle(struct ScriptContext *ctx)
return TRUE;
}
-bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx)
+bool8 ScrCmd_gotopostbattlescript(struct ScriptContext *ctx)
{
ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle();
return FALSE;
}
-bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx)
+bool8 ScrCmd_gotobeatenscript(struct ScriptContext *ctx)
{
ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript();
return FALSE;
@@ -1995,7 +1995,7 @@ bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- ctx->comparisonResult = HasTrainerAlreadyBeenFought(index);
+ ctx->comparisonResult = HasTrainerBeenFought(index);
return FALSE;
}
@@ -2003,7 +2003,7 @@ bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- trainer_flag_set(index);
+ SetTrainerFlag(index);
return FALSE;
}
@@ -2011,7 +2011,7 @@ bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- trainer_flag_clear(index);
+ ClearTrainerFlag(index);
return FALSE;
}
@@ -2374,7 +2374,7 @@ bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx)
bool8 ScrCmd_cmdCF(struct ScriptContext *ctx)
{
const u8* v1 = sub_8099244();
-
+
if (v1)
{
((u8*)gUnknown_020375C0) = ctx->scriptPtr;
diff --git a/src/secret_base.c b/src/secret_base.c
index 6d66e6576..cc320e5d7 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -1283,7 +1283,7 @@ u8 sub_80EA20C(u8 secretBaseRecordId)
return (gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[secretBaseRecordId].gender * 5);
}
-const u8 *sub_80EA250(void)
+const u8 *GetSecretBaseTrainerLoseText(void)
{
u8 param;
diff --git a/src/trainer_see.c b/src/trainer_see.c
new file mode 100644
index 000000000..b30f27347
--- /dev/null
+++ b/src/trainer_see.c
@@ -0,0 +1,68 @@
+#include "global.h"
+#include "trainer_see.h"
+#include "battle_setup.h"
+
+extern u8 gApproachingTrainerId;
+extern u8 gNoOfApproachingTrainers;
+extern u8 gUnknown_030060AC;
+extern u16 gUnknown_03006080;
+
+// this file's functions
+u8 CheckIfTrainerWantsBattle(u8 mapObjectId);
+
+bool8 CheckForTrainersWantingBattle(void)
+{
+ u8 i;
+
+ gNoOfApproachingTrainers = 0;
+ gApproachingTrainerId = 0;
+
+ for (i = 0; i < MAP_OBJECTS_COUNT; i++)
+ {
+ u8 retVal;
+
+ if (!gMapObjects[i].active)
+ continue;
+ if (gMapObjects[i].trainerType != 1 && gMapObjects[i].trainerType != 3)
+ continue;
+
+ retVal = CheckIfTrainerWantsBattle(i);
+ if (retVal == 2)
+ break; // two trainers have been found
+
+ if (retVal == 0) // no trainers
+ continue;
+
+ if (gNoOfApproachingTrainers > 1)
+ break;
+ if (GetMonsStateToDoubles_2() != 0) // one trainer found and cant have a double battle
+ break;
+ }
+
+ if (gNoOfApproachingTrainers == 1)
+ {
+ ResetTrainerOpponentIds();
+ ConfigureAndSetUpOneTrainerBattle(gApproachingTrainers[gNoOfApproachingTrainers - 1].mapObjectId,
+ gApproachingTrainers[gNoOfApproachingTrainers - 1].trainerScriptPtr);
+ gUnknown_030060AC = 1;
+ return TRUE;
+ }
+ else if (gNoOfApproachingTrainers == 2)
+ {
+ ResetTrainerOpponentIds();
+ for (i = 0; i < gNoOfApproachingTrainers; i++, gApproachingTrainerId++)
+ {
+ ConfigureTwoTrainersBattle(gApproachingTrainers[i].mapObjectId,
+ gApproachingTrainers[i].trainerScriptPtr);
+ }
+ SetUpTwoTrainersBattle();
+ gApproachingTrainerId = 0;
+ gUnknown_030060AC = 1;
+ return TRUE;
+ }
+ else
+ {
+ gUnknown_030060AC = 0;
+ return FALSE;
+ }
+}
diff --git a/sym_common.txt b/sym_common.txt
index 93b8431f4..646db3bb7 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -302,10 +302,10 @@ gUnknown_03006080: @ 3006080
gUnknown_03006084: @ 3006084
.space 0xC
-gUnknown_03006090: @ 3006090
+gApproachingTrainers: @ 3006090
.space 0x18
-gUnknown_030060A8: @ 30060A8
+gNoOfApproachingTrainers: @ 30060A8
.space 0x4
gUnknown_030060AC: @ 30060AC
diff --git a/sym_ewram.txt b/sym_ewram.txt
index c35c21df6..31ecf2085 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -706,55 +706,11 @@ gUnknown_02038BC4: @ 2038BC4
gUnknown_02038BC6: @ 2038BC6
.space 0x2
-gUnknown_02038BC8: @ 2038BC8
- .space 0x2
-
-gTrainerBattleOpponent_A: @ 2038BCA
- .space 0x2
-
-gTrainerBattleOpponent_B: @ 2038BCC
- .space 0x2
-
-gPartnerTrainerId: @ 2038BCE
- .space 0x2
-
-gUnknown_02038BD0: @ 2038BD0
- .space 0x4
-
-gUnknown_02038BD4: @ 2038BD4
- .space 0x4
-
-gUnknown_02038BD8: @ 2038BD8
- .space 0x4
-
-gUnknown_02038BDC: @ 2038BDC
- .space 0x4
+ .include "src/battle_setup.o"
-gUnknown_02038BE0: @ 2038BE0
- .space 0x4
-
-gUnknown_02038BE4: @ 2038BE4
- .space 0x4
-
-gUnknown_02038BE8: @ 2038BE8
- .space 0x4
-
-gUnknown_02038BEC: @ 2038BEC
- .space 0x4
-
-gUnknown_02038BF0: @ 2038BF0
- .space 0x4
-
-gUnknown_02038BF4: @ 2038BF4
- .space 0x4
-
-gUnknown_02038BF8: @ 2038BF8
- .space 0x1
-
-gUnknown_02038BF9: @ 2038BF9
- .space 0x3
+.align 2
-gUnknown_02038BFC: @ 2038BFC
+gApproachingTrainerId: @ 2038BFC
.space 0x4
.include "src/wild_encounter.o"