summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/cable_club.s28
-rw-r--r--asm/event_object_80688E4.s8
-rw-r--r--asm/event_object_movement.s8
-rw-r--r--asm/field_player_avatar.s6
-rw-r--r--asm/field_weather.s6
-rw-r--r--asm/macros/battle_ai_script.inc397
-rw-r--r--asm/overworld.s46
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/script_movement.s2
-rw-r--r--asm/union_room.s11147
-rw-r--r--asm/union_room_player_avatar.s2064
-rw-r--r--data/battle_ai_scripts.s4916
-rw-r--r--data/event_scripts.s92
-rw-r--r--data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc12
-rw-r--r--data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc14
-rw-r--r--data/maps/CinnabarIsland/map.json14
-rw-r--r--data/maps/CinnabarIsland/scripts.inc233
-rw-r--r--data/maps/CinnabarIsland/text.inc24
-rw-r--r--data/maps/CinnabarIsland_Gym/map.json48
-rw-r--r--data/maps/CinnabarIsland_Gym/scripts.inc684
-rw-r--r--data/maps/CinnabarIsland_Gym/text.inc88
-rw-r--r--data/maps/CinnabarIsland_Mart/map.json6
-rw-r--r--data/maps/CinnabarIsland_Mart/scripts.inc14
-rw-r--r--data/maps/CinnabarIsland_Mart/text.inc4
-rw-r--r--data/maps/CinnabarIsland_PokemonCenter_1F/map.json14
-rw-r--r--data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc60
-rw-r--r--data/maps/CinnabarIsland_PokemonCenter_1F/text.inc12
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_Entrance/map.json10
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_Entrance/scripts.inc24
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_Entrance/text.inc12
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/map.json4
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc310
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/text.inc24
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_Lounge/map.json6
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_Lounge/scripts.inc46
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_Lounge/text.inc2
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_ResearchRoom/map.json6
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_ResearchRoom/scripts.inc12
-rw-r--r--data/maps/CinnabarIsland_PokemonLab_ResearchRoom/text.inc6
-rw-r--r--data/maps/PalletTown_ProfessorOaksLab/scripts.inc2
-rw-r--r--data/maps/Route11_EastEntrance_2F/scripts.inc10
-rw-r--r--data/maps/Route18_EastEntrance_2F/scripts.inc10
-rw-r--r--data/maps/Route2_House/scripts.inc10
-rw-r--r--data/maps/Route4_PokemonCenter_1F/scripts.inc10
-rw-r--r--data/maps/SaffronCity_Dojo/scripts.inc12
-rw-r--r--data/maps/SilphCo_7F/scripts.inc12
-rw-r--r--data/maps/UndergroundPath_NorthEntrance/scripts.inc10
-rw-r--r--data/naming_screen.s8
-rw-r--r--data/scripts/fame_checker.inc8
-rw-r--r--data/scripts/pc_transfer.inc46
-rw-r--r--data/strings.s6
-rw-r--r--data/text/fame_checker.inc2
-rw-r--r--data/text/ingame_trade.inc20
-rw-r--r--data/text/pc_transfer.inc39
-rw-r--r--data/union_room.s1571
-rw-r--r--include/berry_crush.h6
-rw-r--r--include/cable_club.h1
-rw-r--r--include/constants/battle.h14
-rw-r--r--include/constants/battle_ai.h6
-rw-r--r--include/constants/event_object_movement.h7
-rw-r--r--include/constants/metatile_labels.h11
-rw-r--r--include/constants/pokemon.h120
-rw-r--r--include/dodrio_berry_picking.h6
-rw-r--r--include/event_object_80688E4.h5
-rw-r--r--include/event_object_8097404.h2
-rw-r--r--include/event_object_lock.h1
-rw-r--r--include/event_object_movement.h4
-rw-r--r--include/event_scripts.h8
-rw-r--r--include/field_control_avatar.h1
-rw-r--r--include/field_fadetransition.h2
-rw-r--r--include/field_player_avatar.h1
-rw-r--r--include/field_weather.h2
-rw-r--r--include/fieldmap.h1
-rw-r--r--include/global.fieldmap.h6
-rw-r--r--include/link.h1
-rw-r--r--include/link_rfu.h38
-rw-r--r--include/mevent.h3
-rw-r--r--include/mevent_server.h1
-rw-r--r--include/mystery_gift_menu.h3
-rw-r--r--include/overworld.h3
-rw-r--r--include/party_menu.h2
-rw-r--r--include/pokemon.h184
-rw-r--r--include/pokemon_jump.h1
-rw-r--r--include/rfu_union_tool.h17
-rw-r--r--include/save_location.h1
-rw-r--r--include/strings.h5
-rw-r--r--include/union_room.h109
-rw-r--r--include/union_room_chat.h1
-rw-r--r--include/union_room_message.h114
-rw-r--r--ld_script.txt10
-rw-r--r--src/battle_ai_script_commands.c1130
-rw-r--r--src/battle_main.c8
-rw-r--r--src/battle_message.c10
-rw-r--r--src/battle_script_commands.c2
-rw-r--r--src/battle_setup.c6
-rw-r--r--src/battle_util.c4
-rw-r--r--src/credits.c4
-rw-r--r--src/event_object_lock.c2
-rw-r--r--src/field_fadetransition.c22
-rw-r--r--src/graphics.c0
-rw-r--r--src/item_use.c10
-rw-r--r--src/link_rfu_2.c4
-rw-r--r--src/link_rfu_3.c8
-rw-r--r--src/mevent.c4
-rw-r--r--src/party_menu.c2
-rw-r--r--src/player_pc.c8
-rw-r--r--src/pokemon.c50
-rw-r--r--src/quest_log.c4
-rw-r--r--src/reshow_battle_screen.c4
-rw-r--r--src/rfu_union_tool.c663
-rw-r--r--src/scrcmd.c8
-rw-r--r--src/shop.c4
-rw-r--r--src/start_menu.c4
-rw-r--r--src/union_room.c4607
-rw-r--r--src/union_room_battle.c225
-rw-r--r--src/union_room_message.c543
-rw-r--r--src/vs_seeker.c2
-rw-r--r--src/wireless_communication_status_screen.c4
-rw-r--r--sym_bss.txt11
-rw-r--r--sym_common.txt4
-rw-r--r--sym_ewram.txt39
121 files changed, 10930 insertions, 19350 deletions
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 2aa355ab4..27a3d93f4 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -773,10 +773,10 @@ _08080D44:
_08080D50: .4byte sub_8080F78
_08080D54:
bl GetLinkPlayerCount_2
- ldr r4, _08080D7C @ =gUnknown_3005030
+ ldr r4, _08080D7C @ =gFieldLinkPlayerCount
strb r0, [r4]
bl GetMultiplayerId
- ldr r1, _08080D80 @ =gUnknown_300502C
+ ldr r1, _08080D80 @ =gLocalLinkPlayerId
strb r0, [r1]
ldrb r0, [r4]
bl sub_800A900
@@ -790,8 +790,8 @@ _08080D74:
pop {r0}
bx r0
.align 2, 0
-_08080D7C: .4byte gUnknown_3005030
-_08080D80: .4byte gUnknown_300502C
+_08080D7C: .4byte gFieldLinkPlayerCount
+_08080D80: .4byte gLocalLinkPlayerId
_08080D84: .4byte gBlockSendBuffer
_08080D88: .4byte sub_8080E6C
thumb_func_end sub_8080CDC
@@ -876,10 +876,10 @@ _08080E18: .4byte gTasks
_08080E1C: .4byte sub_8080F78
_08080E20:
bl GetLinkPlayerCount_2
- ldr r4, _08080E58 @ =gUnknown_3005030
+ ldr r4, _08080E58 @ =gFieldLinkPlayerCount
strb r0, [r4]
bl GetMultiplayerId
- ldr r1, _08080E5C @ =gUnknown_300502C
+ ldr r1, _08080E5C @ =gLocalLinkPlayerId
strb r0, [r1]
ldrb r0, [r4]
bl sub_800A900
@@ -899,8 +899,8 @@ _08080E50:
pop {r0}
bx r0
.align 2, 0
-_08080E58: .4byte gUnknown_3005030
-_08080E5C: .4byte gUnknown_300502C
+_08080E58: .4byte gFieldLinkPlayerCount
+_08080E5C: .4byte gLocalLinkPlayerId
_08080E60: .4byte gBlockSendBuffer
_08080E64: .4byte gTasks
_08080E68: .4byte sub_8080E6C
@@ -1536,7 +1536,7 @@ _08081344:
_0808135C:
movs r0, 0x1
movs r1, 0
- bl fade_screen
+ bl FadeScreen
ldr r1, _08081374 @ =gLinkType
ldr r2, _08081378 @ =0x00002211
adds r0, r2, 0
@@ -1693,7 +1693,7 @@ _08081480:
_080814A0:
movs r0, 0x1
movs r1, 0
- bl fade_screen
+ bl FadeScreen
ldr r0, _080814BC @ =gLinkType
ldr r2, _080814C0 @ =0x00002211
adds r1, r2, 0
@@ -1931,7 +1931,7 @@ sub_8081668: @ 8081668
ldrh r0, [r0]
cmp r0, 0x5
beq _0808170A
- ldr r0, _080816BC @ =gUnknown_300502C
+ ldr r0, _080816BC @ =gLocalLinkPlayerId
ldrb r0, [r0]
movs r5, 0x1
eors r0, r5
@@ -1951,7 +1951,7 @@ sub_8081668: @ 8081668
_080816B0: .4byte gBattleTypeFlags
_080816B4: .4byte 0x0000ffdf
_080816B8: .4byte gSpecialVar_0x8004
-_080816BC: .4byte gUnknown_300502C
+_080816BC: .4byte gLocalLinkPlayerId
_080816C0: .4byte gWirelessCommType
_080816C4: .4byte gBattleOutcome
_080816C8:
@@ -2179,7 +2179,7 @@ _08081882:
bl ScriptContext2_Enable
movs r0, 0x1
movs r1, 0
- bl fade_screen
+ bl FadeScreen
bl ClearLinkCallback_2
b _080818B8
_08081894:
@@ -2255,7 +2255,7 @@ _0808191A:
bl ScriptContext2_Enable
movs r0, 0x1
movs r1, 0
- bl fade_screen
+ bl FadeScreen
bl Rfu_set_zero
b _08081950
_0808192C:
diff --git a/asm/event_object_80688E4.s b/asm/event_object_80688E4.s
index 1482529fe..93309a80d 100644
--- a/asm/event_object_80688E4.s
+++ b/asm/event_object_80688E4.s
@@ -154,8 +154,8 @@ _080689EC: .4byte gObjectEvents
_080689F0: .4byte gPlayerAvatar
thumb_func_end FreezeObjectEventsExceptOne
- thumb_func_start npc_sync_anim_pause_bits
-npc_sync_anim_pause_bits: @ 80689F4
+ thumb_func_start UnfreezeObjectEvent
+UnfreezeObjectEvent: @ 80689F4
push {r4,r5,lr}
adds r5, r0, 0
ldrh r2, [r5]
@@ -207,7 +207,7 @@ _08068A4C:
.align 2, 0
_08068A54: .4byte 0x00000101
_08068A58: .4byte gSprites
- thumb_func_end npc_sync_anim_pause_bits
+ thumb_func_end UnfreezeObjectEvent
thumb_func_start UnfreezeObjectEvents
UnfreezeObjectEvents: @ 8068A5C
@@ -224,7 +224,7 @@ _08068A62:
cmp r0, 0
beq _08068A78
adds r0, r1, 0
- bl npc_sync_anim_pause_bits
+ bl UnfreezeObjectEvent
_08068A78:
adds r0, r4, 0x1
lsls r0, 24
diff --git a/asm/event_object_movement.s b/asm/event_object_movement.s
index 66207007c..30af8949b 100644
--- a/asm/event_object_movement.s
+++ b/asm/event_object_movement.s
@@ -1427,8 +1427,8 @@ SpawnSpecialObjectEventParameterized: @ 805E830
_0805E894: .4byte 0xfff90000
thumb_func_end SpawnSpecialObjectEventParameterized
- thumb_func_start show_sprite
-show_sprite: @ 805E898
+ thumb_func_start TrySpawnObjectEvent
+TrySpawnObjectEvent: @ 805E898
push {r4-r7,lr}
sub sp, 0x8
lsls r0, 24
@@ -1468,7 +1468,7 @@ _0805E8E0:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end show_sprite
+ thumb_func_end TrySpawnObjectEvent
thumb_func_start sub_805E8E8
sub_805E8E8: @ 805E8E8
@@ -13157,7 +13157,7 @@ _08063CC8:
bl ObjectEventClearAnimIfSpecialAnimActive
_08063CCE:
adds r0, r4, 0
- bl npc_sync_anim_pause_bits
+ bl UnfreezeObjectEvent
movs r3, 0
strb r5, [r4, 0x1C]
ldrb r0, [r4]
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index e4b28d6c6..a605f1439 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -2445,8 +2445,8 @@ _0805C560: .4byte gObjectEvents
_0805C564: .4byte gPlayerAvatar
thumb_func_end PlayerGetDestCoords
- thumb_func_start plaer_get_pos_including_state_based_drift
-plaer_get_pos_including_state_based_drift: @ 805C568
+ thumb_func_start player_get_pos_including_state_based_drift
+player_get_pos_including_state_based_drift: @ 805C568
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -2580,7 +2580,7 @@ _0805C6BC:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end plaer_get_pos_including_state_based_drift
+ thumb_func_end player_get_pos_including_state_based_drift
thumb_func_start GetPlayerFacingDirection
GetPlayerFacingDirection: @ 805C6C4
diff --git a/asm/field_weather.s b/asm/field_weather.s
index ece13573f..7960543a6 100644
--- a/asm/field_weather.s
+++ b/asm/field_weather.s
@@ -1584,8 +1584,8 @@ _0807A810: .4byte 0x000006c6
_0807A814: .4byte 0x000006c2
thumb_func_end sub_807A7C4
- thumb_func_start fade_screen
-fade_screen: @ 807A818
+ thumb_func_start FadeScreen
+FadeScreen: @ 807A818
push {r4,r5,lr}
sub sp, 0x4
lsls r0, 24
@@ -1735,7 +1735,7 @@ _0807A934: .4byte gUnknown_2037F34
_0807A938: .4byte 0x000006c6
_0807A93C: .4byte 0x000006ca
_0807A940: .4byte 0x000006cb
- thumb_func_end fade_screen
+ thumb_func_end FadeScreen
thumb_func_start FieldWeather_StartFadingOutCreditsMap
FieldWeather_StartFadingOutCreditsMap: @ 807A944
diff --git a/asm/macros/battle_ai_script.inc b/asm/macros/battle_ai_script.inc
index 679e30340..3aadc1e47 100644
--- a/asm/macros/battle_ai_script.inc
+++ b/asm/macros/battle_ai_script.inc
@@ -1,257 +1,257 @@
- .macro if_random_less_than percent, address
+ .macro if_random_less_than percent:req, ptr:req
.byte 0x00
.byte \percent
- .4byte \address
+ .4byte \ptr
.endm
@ unused
- .macro if_random_greater_than percent, address
+ .macro if_random_greater_than percent:req, ptr:req
.byte 0x01
.byte \percent
- .4byte \address
+ .4byte \ptr
.endm
@ unused
- .macro if_random_equal address
+ .macro if_random_equal ptr:req
.byte 0x02
- .4byte \address
+ .4byte \ptr
.endm
@ unused
- .macro if_random_not_equal address
+ .macro if_random_not_equal ptr:req
.byte 0x03
- .4byte \address
+ .4byte \ptr
.endm
- .macro score score
+ .macro score score:req
.byte 0x04
.byte \score
.endm
- .macro if_hp_less_than target, percent, address
+ .macro if_hp_less_than battler:req, percent:req, ptr:req
.byte 0x05
- .byte \target
+ .byte \battler
.byte \percent
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_hp_more_than target, percent, address
+ .macro if_hp_more_than battler:req, percent:req, ptr:req
.byte 0x06
- .byte \target
+ .byte \battler
.byte \percent
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_hp_equal target, percent, address
+ .macro if_hp_equal battler:req, percent:req, ptr:req
.byte 0x07
- .byte \target
+ .byte \battler
.byte \percent
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_hp_not_equal target, percent, address
+ .macro if_hp_not_equal battler:req, percent:req, ptr:req
.byte 0x08
- .byte \target
+ .byte \battler
.byte \percent
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_status target, status, address
+ .macro if_status battler:req, status:req, ptr:req
.byte 0x09
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_status target, status, address
+ .macro if_not_status battler:req, status:req, ptr:req
.byte 0x0a
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_status2 target, status, address
+ .macro if_status2 battler:req, status:req, ptr:req
.byte 0x0b
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_status2 target, status, address
+ .macro if_not_status2 battler:req, status:req, ptr:req
.byte 0x0c
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_status3 target, status, address
+ .macro if_status3 battler:req, status:req, ptr:req
.byte 0x0d
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_status3 target, status, address
+ .macro if_not_status3 battler:req, status:req, ptr:req
.byte 0x0e
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_status4 target, status, address
+ .macro if_side_affecting battler:req, status:req, ptr:req
.byte 0x0f
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_status4 target, status, address
+ .macro if_not_side_affecting battler:req, status:req, ptr:req
.byte 0x10
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_less_than value, address
+ .macro if_less_than value:req, ptr:req
.byte 0x11
.byte \value
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_more_than value, address
+ .macro if_more_than value:req, ptr:req
.byte 0x12
.byte \value
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_equal value, address
+ .macro if_equal value:req, ptr:req
.byte 0x13
.byte \value
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_equal value, address
+ .macro if_not_equal value:req, ptr:req
.byte 0x14
.byte \value
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_less_than_32 value, address
+ .macro if_less_than_ptr value:req, ptr:req
.byte 0x15
.4byte \value
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_more_than_32 value, address
+ .macro if_more_than_ptr value:req, ptr:req
.byte 0x16
.4byte \value
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_equal_32 value, address
+ .macro if_equal_ptr value:req, ptr:req
.byte 0x17
.4byte \value
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_equal_32 value, address
+ .macro if_not_equal_ptr value:req, ptr:req
.byte 0x18
.4byte \value
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_move move, address
+ .macro if_move move:req, ptr:req
.byte 0x19
.2byte \move
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_move move, address
+ .macro if_not_move move:req, ptr:req
.byte 0x1a
.2byte \move
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_in_bytes list, address
+ .macro if_in_bytes list:req, ptr:req
.byte 0x1b
.4byte \list
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_in_bytes list, address
+ .macro if_not_in_bytes list:req, ptr:req
.byte 0x1c
.4byte \list
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_in_words list, address
+ .macro if_in_hwords list:req, ptr:req
.byte 0x1d
.4byte \list
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_in_words list, address
+ .macro if_not_in_hwords list:req, ptr:req
.byte 0x1e
.4byte \list
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_user_can_damage address
+ .macro if_user_has_attacking_move ptr:req
.byte 0x1f
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_user_cant_damage address
+ .macro if_user_has_no_attacking_moves ptr:req
.byte 0x20
- .4byte \address
+ .4byte \ptr
.endm
.macro get_turn_count
.byte 0x21
.endm
- .macro get_type byte
+ .macro get_type byte:req
.byte 0x22
.byte \byte
.endm
@ unused
- .macro get_move_power
+ .macro get_considered_move_power
.byte 0x23
.endm
- .macro is_most_powerful_move
+ .macro get_how_powerful_move_is
.byte 0x24
.endm
- .macro get_move target
+ .macro get_last_used_move battler:req
.byte 0x25
- .byte \target
+ .byte \battler
.endm
- .macro if_arg_equal type, address
+ .macro if_equal_ type:req, ptr:req
.byte 0x26
.byte \type
- .4byte \address
+ .4byte \ptr
.endm
@ unused
- .macro if_arg_not_equal type, address
+ .macro if_not_equal_ type:req, ptr:req
.byte 0x27
.byte \type
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_would_go_first target, address
+ .macro if_would_go_first battler:req, ptr:req
.byte 0x28
- .byte \target
- .4byte \address
+ .byte \battler
+ .4byte \ptr
.endm
- .macro if_would_not_go_first target, address
+ .macro if_would_not_go_first battler:req, ptr:req
.byte 0x29
- .byte \target
- .4byte \address
+ .byte \battler
+ .4byte \ptr
.endm
@ nullsub
@@ -264,9 +264,9 @@
.byte 0x2b
.endm
- .macro count_alive_pokemon target
+ .macro count_alive_pokemon battler:req
.byte 0x2c
- .byte \target
+ .byte \battler
.endm
@ unused
@@ -274,24 +274,24 @@
.byte 0x2d
.endm
- .macro get_effect
+ .macro get_considered_move_effect
.byte 0x2e
.endm
- .macro get_ability target
+ .macro get_ability battler:req
.byte 0x2f
- .byte \target
+ .byte \battler
.endm
@ unused
- .macro get_highest_possible_damage
+ .macro get_highest_type_effectiveness
.byte 0x30
.endm
- .macro if_damage_bonus value, address
+ .macro if_type_effectiveness effectiveness:req, ptr:req
.byte 0x31
- .byte \value
- .4byte \address
+ .byte \effectiveness
+ .4byte \ptr
.endm
@ nullsub
@@ -304,162 +304,162 @@
.byte 0x33
.endm
- .macro if_status_in_party target, status, address
+ .macro if_status_in_party battler:req, status:req, ptr:req
.byte 0x34
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
@ bugged
- .macro if_status_not_in_party target, status, address
+ .macro if_status_not_in_party battler:req, status:req, ptr:req
.byte 0x35
- .byte \target
+ .byte \battler
.4byte \status
- .4byte \address
+ .4byte \ptr
.endm
.macro get_weather
.byte 0x36
.endm
- .macro if_effect byte, address
+ .macro if_effect byte:req, ptr:req
.byte 0x37
.byte \byte
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_effect byte, address
+ .macro if_not_effect byte:req, ptr:req
.byte 0x38
.byte \byte
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_stat_level_less_than target, stat, level, address
+ .macro if_stat_level_less_than battler:req, stat:req, level:req, ptr:req
.byte 0x39
- .byte \target
+ .byte \battler
.byte \stat
.byte \level
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_stat_level_more_than target, stat, level, address
+ .macro if_stat_level_more_than battler:req, stat:req, level:req, ptr:req
.byte 0x3a
- .byte \target
+ .byte \battler
.byte \stat
.byte \level
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_stat_level_equal target, stat, level, address
+ .macro if_stat_level_equal battler:req, stat:req, level:req, ptr:req
.byte 0x3b
- .byte \target
+ .byte \battler
.byte \stat
.byte \level
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_stat_level_not_equal target, stat, level, address
+ .macro if_stat_level_not_equal battler:req, stat:req, level:req, ptr:req
.byte 0x3c
- .byte \target
+ .byte \battler
.byte \stat
.byte \level
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_can_faint address
+ .macro if_can_faint ptr:req
.byte 0x3d
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_cant_faint address
+ .macro if_cant_faint ptr:req
.byte 0x3e
- .4byte \address
+ .4byte \ptr
.endm
@ unused
- .macro if_has_move, target, move, address
+ .macro if_has_move battler:req, move:req, ptr:req
.byte 0x3f
- .byte \target
+ .byte \battler
.2byte \move
- .4byte \address
+ .4byte \ptr
.endm
@ unused
- .macro if_dont_have_move, target, move, address
+ .macro if_doesnt_have_move battler:req, move:req, ptr:req
.byte 0x40
- .byte \target
+ .byte \battler
.2byte \move
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_move_effect target, effect, address
+ .macro if_has_move_with_effect battler:req, effect:req, ptr:req
.byte 0x41
- .byte \target
+ .byte \battler
.byte \effect
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_move_effect target, effect, address
+ .macro if_doesnt_have_move_with_effect battler:req, effect:req, ptr:req
.byte 0x42
- .byte \target
+ .byte \battler
.byte \effect
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_last_move_did_damage target, byte, address
+ .macro if_any_move_disabled_or_encored battler:req, byte:req, ptr:req
.byte 0x43
- .byte \target
+ .byte \battler
.byte \byte
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_encored target, address
+ .macro if_curr_move_disabled_or_encored battler:req, ptr:req
.byte 0x44
- .byte \target
- .4byte \address
+ .byte \battler
+ .4byte \ptr
.endm
.macro flee
.byte 0x45
.endm
- .macro if_random_100 address
+ .macro if_random_safari_flee ptr:req
.byte 0x46
- .4byte \address
+ .4byte \ptr
.endm
.macro watch
.byte 0x47
.endm
- .macro get_hold_effect target
+ .macro get_hold_effect battler:req
.byte 0x48
- .byte \target
+ .byte \battler
.endm
- .macro get_gender target
+ .macro get_gender battler:req
.byte 0x49
- .byte \target
+ .byte \battler
.endm
- .macro is_first_turn target
+ .macro is_first_turn_for battler:req
.byte 0x4a
- .byte \target
+ .byte \battler
.endm
- .macro get_stockpile_count target
+ .macro get_stockpile_count battler:req
.byte 0x4b
- .byte \target
+ .byte \battler
.endm
.macro is_double_battle
.byte 0x4c
.endm
- .macro get_item target
+ .macro get_used_held_item battler:req
.byte 0x4d
- .byte \target
+ .byte \battler
.endm
.macro get_move_type_from_result
@@ -474,9 +474,9 @@
.byte 0x50
.endm
- .macro get_protect_count target
+ .macro get_protect_count battler:req
.byte 0x51
- .byte \target
+ .byte \battler
.endm
@ nullsub
@@ -510,45 +510,92 @@
.endm
@ unused
- .macro call address
+ .macro call ptr:req
.byte 0x58
- .4byte \address
+ .4byte \ptr
.endm
- .macro jump address
+ .macro goto ptr:req
.byte 0x59
- .4byte \address
+ .4byte \ptr
.endm
.macro end
.byte 0x5a
.endm
- .macro if_level_cond cond, address
+ .macro if_level_cond cond:req, ptr:req
.byte 0x5b
.byte \cond
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_user_higher_level address
- if_level_cond 0, \address
+ .macro if_user_higher_level ptr:req
+ if_level_cond 0, \ptr
.endm
- .macro if_target_higher_level address
- if_level_cond 1, \address
+ .macro if_target_higher_level ptr:req
+ if_level_cond 1, \ptr
.endm
- .macro if_equal_levels address
- if_level_cond 2, \address
+ .macro if_equal_levels ptr:req
+ if_level_cond 2, \ptr
.endm
@ unused
- .macro if_taunted address
+ .macro if_target_taunted ptr:req
.byte 0x5c
- .4byte \address
+ .4byte \ptr
.endm
- .macro if_not_taunted address
+ .macro if_target_not_taunted ptr:req
.byte 0x5d
- .4byte \address
+ .4byte \ptr
+ .endm
+
+@ useful script macros
+ .macro get_curr_move_type
+ get_type AI_TYPE_MOVE
+ .endm
+
+ .macro get_user_type1
+ get_type AI_TYPE1_USER
+ .endm
+
+ .macro get_user_type2
+ get_type AI_TYPE2_USER
+ .endm
+
+ .macro get_target_type1
+ get_type AI_TYPE1_TARGET
+ .endm
+
+ .macro get_target_type2
+ get_type AI_TYPE2_TARGET
+ .endm
+
+ .macro if_target_faster ptr:req
+ if_would_go_first 1, \ptr
+ .endm
+
+ .macro if_user_faster ptr:req
+ if_would_go_first 0, \ptr
+ .endm
+
+ .macro if_double_battle ptr:req
+ is_double_battle
+ if_equal 1, \ptr
+ .endm
+
+ .macro if_not_double_battle ptr:req
+ is_double_battle
+ if_equal 0, \ptr
+ .endm
+
+ .macro if_any_move_disabled battler:req, ptr:req
+ if_any_move_disabled_or_encored \battler, 0, \ptr
+ .endm
+
+ .macro if_any_move_encored battler:req, ptr:req
+ if_any_move_disabled_or_encored \battler, 1, \ptr
.endm
diff --git a/asm/overworld.s b/asm/overworld.s
index 0b2e99ebf..92ffbd038 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -4757,7 +4757,7 @@ _0805713C: .4byte gPlayerAvatar
thumb_func_start sub_8057140
sub_8057140: @ 8057140
push {lr}
- ldr r0, _08057158 @ =gUnknown_300502C
+ ldr r0, _08057158 @ =gLocalLinkPlayerId
ldrb r0, [r0]
bl sub_8058504
lsls r0, 24
@@ -4766,13 +4766,13 @@ sub_8057140: @ 8057140
pop {r0}
bx r0
.align 2, 0
-_08057158: .4byte gUnknown_300502C
+_08057158: .4byte gLocalLinkPlayerId
thumb_func_end sub_8057140
thumb_func_start sub_805715C
sub_805715C: @ 805715C
push {lr}
- ldr r0, _08057174 @ =gUnknown_300502C
+ ldr r0, _08057174 @ =gLocalLinkPlayerId
ldrb r0, [r0]
bl sub_8058504
lsls r0, 24
@@ -4781,7 +4781,7 @@ sub_805715C: @ 805715C
pop {r0}
bx r0
.align 2, 0
-_08057174: .4byte gUnknown_300502C
+_08057174: .4byte gLocalLinkPlayerId
thumb_func_end sub_805715C
thumb_func_start sub_8057178
@@ -4794,7 +4794,7 @@ sub_8057178: @ 8057178
adds r1, r4, 0
bl GetCameraFocusCoords
mov r2, sp
- ldr r0, _080571A4 @ =gUnknown_300502C
+ ldr r0, _080571A4 @ =gLocalLinkPlayerId
ldrb r1, [r0]
ldrh r0, [r2]
adds r0, r1
@@ -4807,7 +4807,7 @@ sub_8057178: @ 8057178
pop {r0}
bx r0
.align 2, 0
-_080571A4: .4byte gUnknown_300502C
+_080571A4: .4byte gLocalLinkPlayerId
thumb_func_end sub_8057178
thumb_func_start sub_80571A8
@@ -4823,13 +4823,13 @@ sub_80571A8: @ 80571A8
bl GetCameraFocusCoords
mov r3, sp
mov r2, sp
- ldr r0, _08057224 @ =gUnknown_300502C
+ ldr r0, _08057224 @ =gLocalLinkPlayerId
ldrb r1, [r0]
ldrh r0, [r2]
subs r0, r1
strh r0, [r3]
movs r6, 0
- ldr r0, _08057228 @ =gUnknown_3005030
+ ldr r0, _08057228 @ =gFieldLinkPlayerCount
mov r8, r4
ldrb r0, [r0]
cmp r6, r0
@@ -4859,7 +4859,7 @@ _080571D8:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
- ldr r0, _08057228 @ =gUnknown_3005030
+ ldr r0, _08057228 @ =gFieldLinkPlayerCount
ldrb r0, [r0]
cmp r6, r0
bcc _080571D8
@@ -4872,8 +4872,8 @@ _08057212:
pop {r0}
bx r0
.align 2, 0
-_08057224: .4byte gUnknown_300502C
-_08057228: .4byte gUnknown_3005030
+_08057224: .4byte gLocalLinkPlayerId
+_08057228: .4byte gFieldLinkPlayerCount
_0805722C: .4byte gLinkPlayers
thumb_func_end sub_80571A8
@@ -4881,7 +4881,7 @@ _0805722C: .4byte gLinkPlayers
sub_8057230: @ 8057230
push {r4,r5,lr}
movs r4, 0
- ldr r0, _08057264 @ =gUnknown_3005030
+ ldr r0, _08057264 @ =gFieldLinkPlayerCount
ldrb r0, [r0]
cmp r4, r0
bcs _0805725E
@@ -4898,7 +4898,7 @@ _0805723E:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
- ldr r0, _08057264 @ =gUnknown_3005030
+ ldr r0, _08057264 @ =gFieldLinkPlayerCount
ldrb r0, [r0]
cmp r4, r0
bcc _0805723E
@@ -4907,7 +4907,7 @@ _0805725E:
pop {r0}
bx r0
.align 2, 0
-_08057264: .4byte gUnknown_3005030
+_08057264: .4byte gFieldLinkPlayerCount
_08057268: .4byte gLinkPlayers
thumb_func_end sub_8057230
@@ -5647,7 +5647,7 @@ c1_link_related: @ 8057884
cmp r0, 0
bne _080578C0
_0805789E:
- ldr r0, _080578CC @ =gUnknown_300502C
+ ldr r0, _080578CC @ =gLocalLinkPlayerId
ldrb r4, [r0]
ldr r0, _080578D0 @ =gLinkPartnersHeldKeys
adds r1, r4, 0
@@ -5666,7 +5666,7 @@ _080578C0:
bx r0
.align 2, 0
_080578C8: .4byte gWirelessCommType
-_080578CC: .4byte gUnknown_300502C
+_080578CC: .4byte gLocalLinkPlayerId
_080578D0: .4byte gLinkPartnersHeldKeys
_080578D4: .4byte gUnknown_3000E84
thumb_func_end c1_link_related
@@ -5753,7 +5753,7 @@ sub_8057954: @ 8057954
push {r4,lr}
lsls r0, 16
lsrs r3, r0, 16
- ldr r0, _08057974 @ =gUnknown_3005030
+ ldr r0, _08057974 @ =gFieldLinkPlayerCount
ldrb r2, [r0]
movs r1, 0
cmp r1, r2
@@ -5767,7 +5767,7 @@ _08057966:
movs r0, 0
b _08057984
.align 2, 0
-_08057974: .4byte gUnknown_3005030
+_08057974: .4byte gFieldLinkPlayerCount
_08057978: .4byte gUnknown_3000E80
_0805797C:
adds r1, 0x1
@@ -5786,7 +5786,7 @@ sub_805798C: @ 805798C
push {r4,lr}
lsls r0, 16
lsrs r3, r0, 16
- ldr r0, _080579AC @ =gUnknown_3005030
+ ldr r0, _080579AC @ =gFieldLinkPlayerCount
ldrb r2, [r0]
movs r1, 0
cmp r1, r2
@@ -5800,7 +5800,7 @@ _0805799E:
movs r0, 0x1
b _080579BC
.align 2, 0
-_080579AC: .4byte gUnknown_3005030
+_080579AC: .4byte gFieldLinkPlayerCount
_080579B0: .4byte gUnknown_3000E80
_080579B4:
adds r1, 0x1
@@ -6499,7 +6499,7 @@ sub_8057EC0: @ 8057EC0
cmp r2, r1
bne _08057EE6
ldr r1, _08057F08 @ =gUnknown_3000E80
- ldr r0, _08057F0C @ =gUnknown_300502C
+ ldr r0, _08057F0C @ =gLocalLinkPlayerId
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -6511,7 +6511,7 @@ _08057EE6:
cmp r1, r0
bne _08057F14
ldr r1, _08057F08 @ =gUnknown_3000E80
- ldr r0, _08057F0C @ =gUnknown_300502C
+ ldr r0, _08057F0C @ =gLocalLinkPlayerId
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -6524,7 +6524,7 @@ _08057EFC:
_08057F00: .4byte gUnknown_3000E84
_08057F04: .4byte sub_8057E1C
_08057F08: .4byte gUnknown_3000E80
-_08057F0C: .4byte gUnknown_300502C
+_08057F0C: .4byte gLocalLinkPlayerId
_08057F10: .4byte sub_8057E10
_08057F14:
movs r0, 0x82
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index fc7fc398d..115c9567b 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -1619,7 +1619,7 @@ _0808C594: .4byte gUnknown_8418690
_0808C598:
movs r0, 0x1
movs r1, 0
- bl fade_screen
+ bl FadeScreen
movs r0, 0x4
strh r0, [r5, 0x8]
b _0808C69C
diff --git a/asm/script_movement.s b/asm/script_movement.s
index 7a7adec6c..7b3a70a25 100644
--- a/asm/script_movement.s
+++ b/asm/script_movement.s
@@ -482,7 +482,7 @@ _0809777C:
lsls r0, 2
ldr r1, _080977A8 @ =gObjectEvents
adds r0, r1
- bl npc_sync_anim_pause_bits
+ bl UnfreezeObjectEvent
_08097792:
adds r0, r5, 0x1
lsls r0, 24
diff --git a/asm/union_room.s b/asm/union_room.s
deleted file mode 100644
index cd549c173..000000000
--- a/asm/union_room.s
+++ /dev/null
@@ -1,11147 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_811586C
-sub_811586C: @ 811586C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r5, r2, 24
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- lsls r4, 8
- movs r0, 0x80
- lsls r0, 3
- cmp r4, r0
- beq _081158BC
- cmp r4, r0
- bgt _0811589E
- movs r0, 0x80
- lsls r0, 2
- cmp r4, r0
- beq _081158B0
- b _0811590E
-_0811589E:
- movs r0, 0x94
- lsls r0, 6
- cmp r4, r0
- beq _081158CC
- movs r0, 0xD4
- lsls r0, 6
- cmp r4, r0
- beq _081158F0
- b _0811590E
-_081158B0:
- ldr r1, _081158B8 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- b _081158D4
- .align 2, 0
-_081158B8: .4byte gUnknown_845742C
-_081158BC:
- ldr r1, _081158C8 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x14
- b _081158D4
- .align 2, 0
-_081158C8: .4byte gUnknown_845742C
-_081158CC:
- ldr r1, _081158EC @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x28
-_081158D4:
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
- b _0811590E
- .align 2, 0
-_081158EC: .4byte gUnknown_845742C
-_081158F0:
- ldr r1, _08115920 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x3C
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
-_0811590E:
- adds r0, r6, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08115920: .4byte gUnknown_845742C
- thumb_func_end sub_811586C
-
- thumb_func_start sub_8115924
-sub_8115924: @ 8115924
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x20
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _08115994 @ =gSaveBlock2Ptr
- ldr r2, [r6]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- mov r8, r0
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
- add r5, sp, 0x14
- ldr r1, _08115998 @ =gUnknown_84571B4
- adds r0, r5, 0
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xA
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- add r0, sp, 0x8
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0
- add r1, sp, 0x8
- bl StringAppend
- movs r0, 0x10
- str r0, [sp]
- mov r0, r8
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_811A444
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08115994: .4byte gSaveBlock2Ptr
-_08115998: .4byte gUnknown_84571B4
- thumb_func_end sub_8115924
-
- thumb_func_start sub_811599C
-sub_811599C: @ 811599C
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _08115A18
- lsls r0, 2
- ldr r1, _081159B4 @ =_081159B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081159B4: .4byte _081159B8
- .align 2, 0
-_081159B8:
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A10
- .4byte _08115A10
-_08115A10:
- ldr r0, _08115A1C @ =gStringVar4
- ldr r1, _08115A20 @ =gUnknown_8457234
- bl StringExpandPlaceholders
-_08115A18:
- pop {r0}
- bx r0
- .align 2, 0
-_08115A1C: .4byte gStringVar4
-_08115A20: .4byte gUnknown_8457234
- thumb_func_end sub_811599C
-
- thumb_func_start TryBecomeLinkLeader
-TryBecomeLinkLeader: @ 8115A24
- push {lr}
- ldr r0, _08115A54 @ =sub_8115A68
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08115A58 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08115A5C @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _08115A60 @ =gUnknown_3002024
- str r1, [r0]
- movs r0, 0
- strb r0, [r1, 0xC]
- strb r0, [r1, 0xD]
- ldr r1, _08115A64 @ =gSpecialVar_Result
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08115A54: .4byte sub_8115A68
-_08115A58: .4byte gUnknown_203B05C
-_08115A5C: .4byte gTasks+0x8
-_08115A60: .4byte gUnknown_3002024
-_08115A64: .4byte gSpecialVar_Result
- thumb_func_end TryBecomeLinkLeader
-
- thumb_func_start sub_8115A68
-sub_8115A68: @ 8115A68
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08115A88 @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0xC]
- cmp r0, 0x1E
- bls _08115A7C
- b _081161D8
-_08115A7C:
- lsls r0, 2
- ldr r1, _08115A8C @ =_08115A90
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08115A88: .4byte gUnknown_203B05C
-_08115A8C: .4byte _08115A90
- .align 2, 0
-_08115A90:
- .4byte _08115B0C
- .4byte _081161D8
- .4byte _081161D8
- .4byte _08115B5C
- .4byte _08115C60
- .4byte _08115CE8
- .4byte _08115D04
- .4byte _08115E24
- .4byte _081161D8
- .4byte _08115D94
- .4byte _08115DAC
- .4byte _08115E40
- .4byte _08115EF4
- .4byte _0811600A
- .4byte _08116028
- .4byte _0811603A
- .4byte _08116058
- .4byte _08116112
- .4byte _08116128
- .4byte _081160A2
- .4byte _081160C0
- .4byte _08116168
- .4byte _08116194
- .4byte _08116168
- .4byte _0811617E
- .4byte _081161D8
- .4byte _081161AC
- .4byte _081161D8
- .4byte _081161D8
- .4byte _08115DEC
- .4byte _0811614C
-_08115B0C:
- ldr r3, _08115B4C @ =gUnknown_203B058
- ldr r2, _08115B50 @ =gUnknown_8456CD8
- ldr r1, _08115B54 @ =gSpecialVar_0x8004
- ldrh r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- strb r0, [r3]
- ldr r4, _08115B58 @ =gUnknown_203B059
- ldrh r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- lsrs r0, 8
- strb r0, [r4]
- ldrb r0, [r3]
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- ldrb r1, [r4]
- movs r0, 0xF
- ands r0, r1
- bl sub_80FBB8C
- movs r0, 0x3
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115B4C: .4byte gUnknown_203B058
-_08115B50: .4byte gUnknown_8456CD8
-_08115B54: .4byte gSpecialVar_0x8004
-_08115B58: .4byte gUnknown_203B059
-_08115B5C:
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0x4]
- movs r0, 0xA0
- bl AllocZeroed
- str r0, [r5]
- movs r0, 0xA0
- bl AllocZeroed
- str r0, [r5, 0x8]
- ldr r0, [r5, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r5]
- movs r1, 0x5
- bl sub_811A5E4
- ldr r0, [r5]
- adds r1, r0, 0
- adds r1, 0x10
- bl sub_80FCD50
- ldr r1, [r5]
- movs r3, 0
- movs r0, 0
- strh r0, [r1, 0x18]
- ldr r2, [r5]
- ldrb r1, [r2, 0x1A]
- subs r0, 0x4
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1A]
- ldr r2, [r5]
- ldrb r1, [r2, 0x1A]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x1A]
- ldr r0, [r5]
- strb r3, [r0, 0x1B]
- ldr r0, [r5, 0x4]
- movs r1, 0xFF
- bl sub_811A054
- strb r0, [r5, 0x17]
- ldr r0, _08115C48 @ =gUnknown_8456CD0
- bl AddWindow
- strb r0, [r5, 0x10]
- ldr r0, _08115C4C @ =gUnknown_8456CFC
- bl AddWindow
- strb r0, [r5, 0xF]
- ldr r0, _08115C50 @ =gUnknown_8456D04
- bl AddWindow
- strb r0, [r5, 0x11]
- ldrb r0, [r5, 0x10]
- movs r1, 0x22
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0x10]
- ldr r2, _08115C54 @ =gUnknown_845747C
- movs r1, 0x2
- str r1, [sp]
- movs r4, 0x4
- str r4, [sp, 0x4]
- movs r1, 0
- movs r3, 0x8
- bl sub_811A444
- ldrb r0, [r5, 0x10]
- bl PutWindowTilemap
- ldrb r0, [r5, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- ldrb r0, [r5, 0xF]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _08115C58 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _08115C5C @ =gUnknown_8456D34
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldrb r1, [r5, 0xF]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r5, 0x12]
- ldrb r0, [r5, 0x11]
- movs r1, 0
- bl DrawStdWindowFrame
- ldrb r0, [r5, 0x11]
- bl PutWindowTilemap
- ldrb r0, [r5, 0x11]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- strb r0, [r5, 0x13]
- strb r4, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115C48: .4byte gUnknown_8456CD0
-_08115C4C: .4byte gUnknown_8456CFC
-_08115C50: .4byte gUnknown_8456D04
-_08115C54: .4byte gUnknown_845747C
-_08115C58: .4byte gMultiuseListMenuTemplate
-_08115C5C: .4byte gUnknown_8456D34
-_08115C60:
- ldr r0, _08115C98 @ =gStringVar1
- ldr r2, _08115C9C @ =gUnknown_8456C74
- ldr r4, _08115CA0 @ =gUnknown_203B058
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- ldr r0, _08115CA4 @ =gUnknown_203B059
- ldrb r2, [r0]
- lsrs r0, r2, 4
- cmp r0, 0
- beq _08115CC4
- ldrb r1, [r5, 0x13]
- subs r0, 0x1
- cmp r1, r0
- ble _08115CB0
- movs r0, 0xF
- ands r0, r2
- cmp r0, 0
- beq _08115CB0
- ldr r0, _08115CA8 @ =gStringVar4
- ldr r1, _08115CAC @ =gUnknown_8457264
- bl StringExpandPlaceholders
- b _08115CCC
- .align 2, 0
-_08115C98: .4byte gStringVar1
-_08115C9C: .4byte gUnknown_8456C74
-_08115CA0: .4byte gUnknown_203B058
-_08115CA4: .4byte gUnknown_203B059
-_08115CA8: .4byte gStringVar4
-_08115CAC: .4byte gUnknown_8457264
-_08115CB0:
- ldr r0, _08115CBC @ =gStringVar4
- ldr r1, _08115CC0 @ =gUnknown_8457234
- bl StringExpandPlaceholders
- b _08115CCC
- .align 2, 0
-_08115CBC: .4byte gStringVar4
-_08115CC0: .4byte gUnknown_8457234
-_08115CC4:
- ldr r0, _08115CE0 @ =gStringVar4
- ldrb r1, [r4]
- bl sub_811599C
-_08115CCC:
- ldrb r0, [r5, 0x11]
- ldr r1, _08115CE4 @ =gUnknown_203B059
- ldrb r1, [r1]
- ldrb r2, [r5, 0x13]
- bl sub_811586C
- movs r0, 0x5
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115CE0: .4byte gStringVar4
-_08115CE4: .4byte gUnknown_203B059
-_08115CE8:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08115D00 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08115CFA
- b _081161D8
-_08115CFA:
- movs r0, 0x6
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115D00: .4byte gStringVar4
-_08115D04:
- adds r0, r5, 0
- movs r1, 0x7
- movs r2, 0xA
- bl sub_8116444
- ldr r0, _08115D24 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08115D40
- ldrb r0, [r5, 0x13]
- cmp r0, 0x1
- bne _08115D28
- movs r0, 0x17
- b _08115D3E
- .align 2, 0
-_08115D24: .4byte gMain
-_08115D28:
- ldr r0, _08115D38 @ =gUnknown_203B059
- ldrb r1, [r0]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _08115D3C
- movs r0, 0x1E
- b _08115D3E
- .align 2, 0
-_08115D38: .4byte gUnknown_203B059
-_08115D3C:
- movs r0, 0x13
-_08115D3E:
- strb r0, [r5, 0xC]
-_08115D40:
- ldr r0, _08115D8C @ =gUnknown_203B059
- ldrb r2, [r0]
- lsrs r0, r2, 4
- cmp r0, 0
- beq _08115D76
- ldrb r1, [r5, 0x13]
- subs r0, 0x1
- cmp r1, r0
- ble _08115D76
- movs r4, 0xF
- adds r0, r4, 0
- ands r0, r2
- cmp r0, 0
- beq _08115D76
- bl sub_80FC1CC
- cmp r0, 0
- beq _08115D76
- ldr r0, _08115D90 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08115D76
- strb r4, [r5, 0xC]
- bl sub_80F8F5C
-_08115D76:
- ldrb r0, [r5, 0xC]
- cmp r0, 0x6
- beq _08115D7E
- b _081161D8
-_08115D7E:
- bl sub_80FA5D4
- cmp r0, 0
- bne _08115D88
- b _081161D8
-_08115D88:
- b _08115EEE
- .align 2, 0
-_08115D8C: .4byte gUnknown_203B059
-_08115D90: .4byte gMain
-_08115D94:
- bl sub_80FA5D4
- cmp r0, 0
- beq _08115D9E
- b _081161D8
-_08115D9E:
- movs r0, 0x6
- strb r0, [r5, 0xC]
- ldr r0, [r5]
- bl sub_81165E8
- strb r0, [r5, 0x13]
- b _081161D8
-_08115DAC:
- movs r3, 0
- ldr r0, _08115DE4 @ =gUnknown_203B058
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x2
- bne _08115DBC
- movs r3, 0x1
-_08115DBC:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r2, _08115DE8 @ =gUnknown_845767C
- lsls r1, r3, 2
- adds r1, r2
- ldr r1, [r1]
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08115DD4
- b _081161D8
-_08115DD4:
- ldr r0, [r5]
- bl sub_81165E8
- strb r0, [r5, 0x13]
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- b _0811610C
- .align 2, 0
-_08115DE4: .4byte gUnknown_203B058
-_08115DE8: .4byte gUnknown_845767C
-_08115DEC:
- ldr r0, _08115E1C @ =gUnknown_203B059
- ldrb r0, [r0]
- movs r1, 0xF
- ands r1, r0
- movs r0, 0x2
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r3, r0, 31
- adds r0, r5, 0
- adds r0, 0xD
- ldr r2, _08115E20 @ =gUnknown_845767C
- lsls r1, r3, 2
- adds r1, r2
- ldr r1, [r1]
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08115E16
- b _081161D8
-_08115E16:
- movs r0, 0x15
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115E1C: .4byte gUnknown_203B059
-_08115E20: .4byte gUnknown_845767C
-_08115E24:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08115E3C @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08115E36
- b _081161D8
-_08115E36:
- movs r0, 0xB
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08115E3C: .4byte gStringVar4
-_08115E40:
- adds r4, r5, 0
- adds r4, 0xD
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x2
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- ldrb r2, [r5, 0x13]
- lsls r2, 5
- ldr r1, [r5]
- adds r1, r2
- adds r1, 0x10
- bl sub_80FA634
- adds r1, r0, 0
- adds r0, r4, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08115EC0
- cmp r1, r0
- bgt _08115E84
- subs r0, 0x2
- cmp r1, r0
- beq _08115EEE
- b _081161D8
-_08115E84:
- cmp r1, 0
- beq _08115E8E
- cmp r1, 0x1
- beq _08115EC0
- b _081161D8
-_08115E8E:
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- movs r0, 0x5
- strb r0, [r5, 0x19]
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- ldr r2, [r5]
- adds r2, r0
- adds r2, 0x10
- movs r0, 0x5
- b _08115EE4
-_08115EC0:
- movs r0, 0x6
- strb r0, [r5, 0x19]
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- ldr r2, [r5]
- adds r2, r0
- adds r2, 0x10
- movs r0, 0x6
-_08115EE4:
- bl sub_80FA670
- movs r0, 0xC
- strb r0, [r5, 0xC]
- b _081161D8
-_08115EEE:
- movs r0, 0x9
- strb r0, [r5, 0xC]
- b _081161D8
-_08115EF4:
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x2
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- ldrb r2, [r5, 0x13]
- lsls r2, 5
- ldr r1, [r5]
- adds r1, r2
- adds r1, 0x10
- bl sub_80FA6FC
- cmp r0, 0x1
- bne _08115FFA
- ldrb r0, [r5, 0x19]
- cmp r0, 0x5
- bne _08115FB4
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- adds r1, r0
- movs r0, 0
- strb r0, [r1, 0x1B]
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- ldrb r0, [r5, 0x13]
- adds r0, 0x1
- strb r0, [r5, 0x13]
- ldr r1, _08115F58 @ =gUnknown_203B059
- ldrb r1, [r1]
- movs r3, 0xF
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r3, 0
- ands r0, r1
- cmp r2, r0
- bne _08115FF0
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- bne _08115F54
- cmp r2, 0x4
- bne _08115F5C
-_08115F54:
- strb r3, [r5, 0xC]
- b _08115F90
- .align 2, 0
-_08115F58: .4byte gUnknown_203B059
-_08115F5C:
- ldr r4, _08115FA4 @ =gStringVar1
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r1, r0
- subs r1, 0x10
- adds r0, r4, 0
- bl StringCopy7
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- subs r0, 0x1
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _08115FA8 @ =gStringVar4
- ldr r1, _08115FAC @ =gUnknown_8457554
- bl StringExpandPlaceholders
- movs r0, 0xD
- strb r0, [r5, 0xC]
-_08115F90:
- bl sub_80F8F5C
- ldrb r0, [r5, 0x11]
- ldr r1, _08115FB0 @ =gUnknown_203B059
- ldrb r1, [r1]
- ldrb r2, [r5, 0x13]
- bl sub_811586C
- b _08115FF4
- .align 2, 0
-_08115FA4: .4byte gStringVar1
-_08115FA8: .4byte gStringVar4
-_08115FAC: .4byte gUnknown_8457554
-_08115FB0: .4byte gUnknown_203B059
-_08115FB4:
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r4, r0, 0
- adds r4, 0x10
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_80FBD4C
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- adds r1, r0
- ldrb r2, [r1, 0x1A]
- movs r0, 0x4
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1A]
- ldr r0, [r5]
- bl sub_81165E8
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
-_08115FF0:
- movs r0, 0x4
- strb r0, [r5, 0xC]
-_08115FF4:
- movs r0, 0
- strb r0, [r5, 0x19]
- b _081161D8
-_08115FFA:
- cmp r0, 0x2
- beq _08116000
- b _081161D8
-_08116000:
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- b _0811610C
-_0811600A:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08116024 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _0811601C
- b _081161D8
-_0811601C:
- movs r0, 0xE
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08116024: .4byte gStringVar4
-_08116028:
- ldrb r0, [r5, 0xE]
- adds r0, 0x1
- strb r0, [r5, 0xE]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x78
- bhi _08116038
- b _081161D8
-_08116038:
- b _0811607E
-_0811603A:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08116054 @ =gUnknown_8457514
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _0811604C
- b _081161D8
-_0811604C:
- movs r0, 0x10
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08116054: .4byte gUnknown_8457514
-_08116058:
- adds r0, r5, 0
- adds r0, 0xD
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0811607E
- cmp r1, 0
- bgt _08116078
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08116084
- b _081161D8
-_08116078:
- cmp r1, 0x1
- beq _08116084
- b _081161D8
-_0811607E:
- movs r0, 0x11
- strb r0, [r5, 0xC]
- b _081161D8
-_08116084:
- ldr r0, _08116098 @ =gUnknown_203B059
- ldrb r1, [r0]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _0811609C
- movs r0, 0x1E
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08116098: .4byte gUnknown_203B059
-_0811609C:
- movs r0, 0x13
- strb r0, [r5, 0xC]
- b _081161D8
-_081160A2:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _081160BC @ =gUnknown_8457530
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _081160B4
- b _081161D8
-_081160B4:
- movs r0, 0x14
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_081160BC: .4byte gUnknown_8457530
-_081160C0:
- adds r0, r5, 0
- adds r0, 0xD
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0811615C
- cmp r1, 0
- bgt _081160E0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081160E4
- b _081161D8
-_081160E0:
- cmp r1, 0x1
- bne _081161D8
-_081160E4:
- ldr r0, _081160F8 @ =gUnknown_203B059
- ldrb r2, [r0]
- movs r0, 0xF0
- ands r0, r2
- cmp r0, 0
- beq _081160FC
- movs r0, 0xF
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_081160F8: .4byte gUnknown_203B059
-_081160FC:
- movs r3, 0xF
- ldrb r1, [r5, 0x13]
- adds r0, r3, 0
- ands r0, r2
- cmp r1, r0
- bne _0811610C
- strb r3, [r5, 0xC]
- b _081161D8
-_0811610C:
- movs r0, 0x4
- strb r0, [r5, 0xC]
- b _081161D8
-_08116112:
- adds r0, r5, 0
- movs r1, 0x7
- movs r2, 0x17
- bl sub_8116444
- lsls r0, 24
- cmp r0, 0
- bne _081161D8
- movs r0, 0x12
- strb r0, [r5, 0xC]
- b _081161D8
-_08116128:
- bl sub_80F8F40
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08116144
- movs r0, 0
- bl sub_80F8F7C
- cmp r0, 0
- beq _081161D8
- movs r0, 0x1A
- strb r0, [r5, 0xC]
- b _081161D8
-_08116144:
- movs r0, 0x1D
- strb r0, [r5, 0xC]
- strb r1, [r5, 0xD]
- b _081161D8
-_0811614C:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08116164 @ =gUnknown_8457610
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _081161D8
-_0811615C:
- movs r0, 0x17
- strb r0, [r5, 0xC]
- b _081161D8
- .align 2, 0
-_08116164: .4byte gUnknown_8457610
-_08116168:
- bl DestroyWirelessStatusIndicatorSprite
- bl sub_80F8DC0
- adds r0, r5, 0
- bl sub_81161E4
- ldrb r0, [r5, 0xC]
- adds r0, 0x1
- strb r0, [r5, 0xC]
- b _081161D8
-_0811617E:
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
- ldr r1, _08116190 @ =gSpecialVar_Result
- movs r0, 0x5
- strh r0, [r1]
- b _081161D8
- .align 2, 0
-_08116190: .4byte gSpecialVar_Result
-_08116194:
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
- ldr r1, _081161A8 @ =gSpecialVar_Result
- movs r0, 0x8
- strh r0, [r1]
- b _081161D8
- .align 2, 0
-_081161A8: .4byte gSpecialVar_Result
-_081161AC:
- bl sub_80FBA00
- cmp r0, 0
- beq _081161BA
- movs r0, 0x1D
- strb r0, [r5, 0xC]
- b _081161D8
-_081161BA:
- ldr r0, _081161E0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _081161D8
- movs r0, 0x1
- bl sub_80FAFE0
- bl sub_8117990
- adds r0, r5, 0
- bl sub_81161E4
- adds r0, r4, 0
- bl DestroyTask
-_081161D8:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081161E0: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_8115A68
-
- thumb_func_start sub_81161E4
-sub_81161E4: @ 81161E4
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x11]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0x11]
- movs r1, 0
- bl ClearStdWindowAndFrame
- ldrb r0, [r4, 0x12]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r4, 0x10]
- bl ClearWindowTilemap
- ldrb r0, [r4, 0xF]
- movs r1, 0
- bl ClearStdWindowAndFrame
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r4, 0x11]
- bl RemoveWindow
- ldrb r0, [r4, 0xF]
- bl RemoveWindow
- ldrb r0, [r4, 0x10]
- bl RemoveWindow
- ldrb r0, [r4, 0x17]
- bl DestroyTask
- ldr r0, [r4, 0x8]
- bl Free
- ldr r0, [r4]
- bl Free
- ldr r0, [r4, 0x4]
- bl Free
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81161E4
-
- thumb_func_start sub_8116244
-sub_8116244: @ 8116244
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _081162D8
- lsls r0, 2
- ldr r1, _0811625C @ =_08116260
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811625C: .4byte _08116260
- .align 2, 0
-_08116260:
- .4byte _081162B8
- .4byte _081162B8
- .4byte _081162D0
- .4byte _081162B8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D0
- .4byte _081162D0
- .4byte _081162D0
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162D8
- .4byte _081162C0
- .4byte _081162C0
-_081162B8:
- ldr r1, _081162BC @ =gUnknown_84574A0
- b _081162C2
- .align 2, 0
-_081162BC: .4byte gUnknown_84574A0
-_081162C0:
- ldr r1, _081162CC @ =gUnknown_84574C4
-_081162C2:
- adds r0, r2, 0
- bl StringExpandPlaceholders
- b _081162D8
- .align 2, 0
-_081162CC: .4byte gUnknown_84574C4
-_081162D0:
- ldr r1, _081162DC @ =gUnknown_84574EC
- adds r0, r2, 0
- bl StringExpandPlaceholders
-_081162D8:
- pop {r0}
- bx r0
- .align 2, 0
-_081162DC: .4byte gUnknown_84574EC
- thumb_func_end sub_8116244
-
- thumb_func_start sub_81162E0
-sub_81162E0: @ 81162E0
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x44
- beq _08116300
- cmp r1, 0x44
- bgt _081162F6
- cmp r1, 0x41
- beq _08116300
- b _08116312
-_081162F6:
- cmp r2, 0x45
- beq _0811630C
- cmp r2, 0x48
- beq _0811630C
- b _08116312
-_08116300:
- ldr r1, _08116308 @ =gUnknown_8457E28
- bl StringExpandPlaceholders
- b _08116312
- .align 2, 0
-_08116308: .4byte gUnknown_8457E28
-_0811630C:
- ldr r1, _08116318 @ =gUnknown_8457E44
- bl StringExpandPlaceholders
-_08116312:
- pop {r0}
- bx r0
- .align 2, 0
-_08116318: .4byte gUnknown_8457E44
- thumb_func_end sub_81162E0
-
- thumb_func_start sub_811631C
-sub_811631C: @ 811631C
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _081163A8
- lsls r0, 2
- ldr r1, _08116334 @ =_08116338
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116334: .4byte _08116338
- .align 2, 0
-_08116338:
- .4byte _08116390
- .4byte _08116390
- .4byte _081163A0
- .4byte _08116390
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A0
- .4byte _081163A0
- .4byte _081163A0
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _081163A8
- .4byte _08116390
- .4byte _08116390
-_08116390:
- ldr r1, _0811639C @ =gUnknown_8459238
- adds r0, r2, 0
- bl StringExpandPlaceholders
- b _081163A8
- .align 2, 0
-_0811639C: .4byte gUnknown_8459238
-_081163A0:
- ldr r1, _081163AC @ =gUnknown_8459250
- adds r0, r2, 0
- bl StringExpandPlaceholders
-_081163A8:
- pop {r0}
- bx r0
- .align 2, 0
-_081163AC: .4byte gUnknown_8459250
- thumb_func_end sub_811631C
-
- thumb_func_start sub_81163B0
-sub_81163B0: @ 81163B0
- push {lr}
- adds r2, r0, 0
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _0811643C
- lsls r0, 2
- ldr r1, _081163C8 @ =_081163CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081163C8: .4byte _081163CC
- .align 2, 0
-_081163CC:
- .4byte _08116424
- .4byte _08116424
- .4byte _08116434
- .4byte _08116424
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _08116434
- .4byte _08116434
- .4byte _08116434
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _0811643C
- .4byte _08116424
- .4byte _08116424
-_08116424:
- ldr r1, _08116430 @ =gUnknown_84576AC
- adds r0, r2, 0
- bl StringExpandPlaceholders
- b _0811643C
- .align 2, 0
-_08116430: .4byte gUnknown_84576AC
-_08116434:
- ldr r1, _08116440 @ =gUnknown_84576C4
- adds r0, r2, 0
- bl StringExpandPlaceholders
-_0811643C:
- pop {r0}
- bx r0
- .align 2, 0
-_08116440: .4byte gUnknown_84576C4
- thumb_func_end sub_81163B0
-
- thumb_func_start sub_8116444
-sub_8116444: @ 8116444
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- ldr r0, [r5]
- bl sub_8116524
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08116460
- cmp r0, 0x2
- beq _081164AC
- b _081164C0
-_08116460:
- movs r0, 0x2
- bl PlaySE
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- ldr r4, _081164A0 @ =gStringVar2
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- ldr r1, [r5]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy7
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _081164A4 @ =gStringVar4
- ldr r1, _081164A8 @ =gUnknown_203B058
- ldrb r1, [r1]
- bl sub_8116244
- strb r6, [r5, 0xC]
- b _081164C0
- .align 2, 0
-_081164A0: .4byte gStringVar2
-_081164A4: .4byte gStringVar4
-_081164A8: .4byte gUnknown_203B058
-_081164AC:
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- strb r4, [r5, 0xC]
- movs r0, 0x1
- b _081164C2
-_081164C0:
- movs r0, 0
-_081164C2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8116444
-
- thumb_func_start sub_81164C8
-sub_81164C8: @ 81164C8
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _081164F4 @ =gUnknown_203B05C
- ldr r3, [r0]
- movs r2, 0
- ldr r1, [r3]
- lsls r0, r4, 5
- adds r1, r0
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- beq _081164F8
- cmp r0, 0x2
- beq _08116502
- b _08116504
- .align 2, 0
-_081164F4: .4byte gUnknown_203B05C
-_081164F8:
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _08116504
- movs r2, 0x2
- b _08116504
-_08116502:
- movs r2, 0x1
-_08116504:
- lsls r0, r4, 5
- ldr r3, [r3]
- adds r3, r0
- str r2, [sp]
- lsls r0, r4, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0
- adds r2, r6, 0
- bl sub_811A910
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81164C8
-
- thumb_func_start sub_8116524
-sub_8116524: @ 8116524
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r0, _0811657C @ =gUnknown_203B05C
- ldr r5, [r0]
- movs r0, 0
- mov r8, r0
- movs r3, 0x1
-_08116538:
- ldr r0, [r5]
- lsls r6, r3, 5
- adds r2, r0, r6
- ldrb r0, [r2, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- mov r9, r0
- cmp r0, 0x1
- bne _08116598
- ldr r1, [r5, 0x4]
- adds r0, r2, 0
- str r3, [sp]
- bl sub_811A748
- adds r4, r0, 0
- ldr r3, [sp]
- cmp r4, 0xFF
- beq _08116580
- ldr r1, [r5]
- ldr r0, [r5, 0x4]
- lsls r2, r4, 3
- subs r2, r4
- lsls r2, 2
- adds r1, r6
- adds r0, r2
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
- ldr r0, [r5]
- adds r0, r6
- mov r1, r9
- strh r1, [r0, 0x18]
- b _08116598
- .align 2, 0
-_0811657C: .4byte gUnknown_203B05C
-_08116580:
- ldr r2, [r5]
- adds r2, r6
- ldrb r1, [r2, 0x1A]
- movs r4, 0x4
- negs r4, r4
- adds r0, r4, 0
- ands r1, r0
- movs r0, 0x2
- orrs r1, r0
- strb r1, [r2, 0x1A]
- movs r7, 0x2
- mov r8, r7
-_08116598:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x4
- bls _08116538
- movs r6, 0
- movs r4, 0x3
-_081165A6:
- ldr r0, [r5]
- ldr r1, [r5, 0x4]
- adds r1, r6
- movs r2, 0x5
- bl sub_811A798
- adds r6, 0x1C
- subs r4, 0x1
- ldr r0, [r5]
- cmp r4, 0
- bge _081165A6
- mov r1, r8
- cmp r1, 0x2
- beq _081165D8
- adds r1, r0, 0
- movs r4, 0x4
-_081165C6:
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _081165D0
- movs r2, 0x1
- mov r8, r2
-_081165D0:
- adds r1, 0x20
- subs r4, 0x1
- cmp r4, 0
- bge _081165C6
-_081165D8:
- mov r0, r8
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8116524
-
- thumb_func_start sub_81165E8
-sub_81165E8: @ 81165E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _081166BC @ =gUnknown_203B05C
- ldr r4, [r0]
- movs r3, 0
-_081165F8:
- ldr r0, [r4, 0x8]
- lsls r2, r3, 5
- ldr r1, [r4]
- adds r0, r2
- adds r1, r2
- ldm r1!, {r2,r5,r6}
- stm r0!, {r2,r5,r6}
- ldm r1!, {r2,r5,r7}
- stm r0!, {r2,r5,r7}
- ldm r1!, {r6,r7}
- stm r0!, {r6,r7}
- adds r3, 0x1
- ldr r0, [r4, 0x8]
- ldr r1, [r4]
- cmp r3, 0x4
- ble _081165F8
- movs r5, 0
- mov r8, r1
- mov r9, r0
- movs r3, 0x4
-_08116620:
- mov r1, r9
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08116642
- lsls r0, r5, 5
- add r0, r8
- ldm r1!, {r2,r6,r7}
- stm r0!, {r2,r6,r7}
- ldm r1!, {r2,r6,r7}
- stm r0!, {r2,r6,r7}
- ldm r1!, {r2,r6}
- stm r0!, {r2,r6}
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_08116642:
- movs r7, 0x20
- add r9, r7
- subs r3, 0x1
- cmp r3, 0
- bge _08116620
- mov r10, r5
- cmp r5, 0x4
- bhi _081166A4
- ldr r0, _081166C0 @ =gUnknown_8457034
- mov r9, r0
- movs r1, 0
- mov r12, r1
- movs r2, 0x4
- negs r2, r2
- mov r8, r2
-_08116660:
- ldr r1, [r4]
- lsls r3, r5, 5
- adds r1, r3
- mov r0, r9
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldm r0!, {r2,r6,r7}
- stm r1!, {r2,r6,r7}
- ldr r0, [r4]
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x18]
- ldr r1, [r4]
- adds r1, r3
- ldrb r2, [r1, 0x1A]
- mov r0, r8
- ands r0, r2
- strb r0, [r1, 0x1A]
- ldr r1, [r4]
- adds r1, r3
- ldrb r2, [r1, 0x1A]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1A]
- ldr r0, [r4]
- adds r0, r3
- mov r6, r12
- strb r6, [r0, 0x1B]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _08116660
-_081166A4:
- movs r3, 0
- ldr r1, [r4]
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _081166C4
- ldrb r0, [r1, 0x1B]
- cmp r0, 0x40
- bne _081166C4
- mov r10, r3
- b _081166E4
- .align 2, 0
-_081166BC: .4byte gUnknown_203B05C
-_081166C0: .4byte gUnknown_8457034
-_081166C4:
- adds r3, 0x1
- cmp r3, 0x4
- bgt _081166E4
- lsls r0, r3, 5
- adds r2, r1, r0
- ldrb r0, [r2, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _081166C4
- ldrb r0, [r2, 0x1B]
- cmp r0, 0x40
- bne _081166C4
- lsls r0, r3, 24
- lsrs r0, 24
- mov r10, r0
-_081166E4:
- mov r0, r10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81165E8
-
- thumb_func_start TryJoinLinkGroup
-TryJoinLinkGroup: @ 81166F4
- push {lr}
- ldr r0, _08116724 @ =sub_8116738
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08116728 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0811672C @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _08116730 @ =gUnknown_3002028
- str r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x8]
- strb r0, [r1, 0x9]
- ldr r1, _08116734 @ =gSpecialVar_Result
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08116724: .4byte sub_8116738
-_08116728: .4byte gUnknown_203B05C
-_0811672C: .4byte gTasks+0x8
-_08116730: .4byte gUnknown_3002028
-_08116734: .4byte gSpecialVar_Result
- thumb_func_end TryJoinLinkGroup
-
- thumb_func_start sub_8116738
-sub_8116738: @ 8116738
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08116758 @ =gUnknown_203B05C
- ldr r6, [r0]
- ldrb r0, [r6, 0x8]
- cmp r0, 0x17
- bls _0811674C
- b _08116D06
-_0811674C:
- lsls r0, 2
- ldr r1, _0811675C @ =_08116760
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116758: .4byte gUnknown_203B05C
-_0811675C: .4byte _08116760
- .align 2, 0
-_08116760:
- .4byte _081167C0
- .4byte _0811680C
- .4byte _08116838
- .4byte _08116904
- .4byte _08116D06
- .4byte _081169B4
- .4byte _08116A08
- .4byte _08116B94
- .4byte _08116BB0
- .4byte _08116BFE
- .4byte _08116C10
- .4byte _08116C98
- .4byte _08116C10
- .4byte _08116C68
- .4byte _08116C10
- .4byte _08116CA8
- .4byte _08116D06
- .4byte _08116D06
- .4byte _08116C10
- .4byte _08116CC8
- .4byte _08116C10
- .4byte _08116CFC
- .4byte _08116D06
- .4byte _08116CEC
-_081167C0:
- ldr r5, _08116800 @ =gUnknown_84570C8
- ldr r4, _08116804 @ =gSpecialVar_0x8004
- ldrh r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- ldr r1, _08116808 @ =gUnknown_203B058
- ldrh r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBBD8
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r6, 0x4]
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r6]
- movs r0, 0x1
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116800: .4byte gUnknown_84570C8
-_08116804: .4byte gSpecialVar_0x8004
-_08116808: .4byte gUnknown_203B058
-_0811680C:
- adds r0, r6, 0
- adds r0, 0x9
- ldr r2, _08116830 @ =gUnknown_84591B8
- ldr r1, _08116834 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08116828
- b _08116D06
-_08116828:
- movs r0, 0x2
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116830: .4byte gUnknown_84591B8
-_08116834: .4byte gSpecialVar_0x8004
-_08116838:
- ldr r0, [r6, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r6]
- movs r1, 0x10
- bl sub_811A5E4
- ldr r0, [r6, 0x4]
- ldr r1, _081168E8 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- bl sub_811A054
- movs r4, 0
- strb r0, [r6, 0x11]
- ldr r0, _081168EC @ =gUnknown_8456CD0
- bl AddWindow
- strb r0, [r6, 0xC]
- ldr r0, _081168F0 @ =gUnknown_8456D4C
- bl AddWindow
- strb r0, [r6, 0xB]
- ldr r0, _081168F4 @ =gUnknown_8456D54
- bl AddWindow
- strb r0, [r6, 0xD]
- ldrb r0, [r6, 0xC]
- movs r1, 0x22
- bl FillWindowPixelBuffer
- ldrb r0, [r6, 0xC]
- ldr r2, _081168F8 @ =gUnknown_8458FC8
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0x4
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x8
- bl sub_811A444
- ldrb r0, [r6, 0xC]
- bl PutWindowTilemap
- ldrb r0, [r6, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- ldrb r0, [r6, 0xB]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _081168FC @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _08116900 @ =gUnknown_8456DDC
- ldm r1!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- ldm r1!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- ldrb r1, [r6, 0xB]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r6, 0xE]
- ldrb r0, [r6, 0xD]
- movs r1, 0
- bl DrawStdWindowFrame
- ldrb r0, [r6, 0xD]
- bl PutWindowTilemap
- ldrb r0, [r6, 0xD]
- bl sub_8115924
- ldrb r0, [r6, 0xD]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- strb r4, [r6, 0xF]
- movs r0, 0x3
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_081168E8: .4byte gSpecialVar_0x8004
-_081168EC: .4byte gUnknown_8456CD0
-_081168F0: .4byte gUnknown_8456D4C
-_081168F4: .4byte gUnknown_8456D54
-_081168F8: .4byte gUnknown_8458FC8
-_081168FC: .4byte gMultiuseListMenuTemplate
-_08116900: .4byte gUnknown_8456DDC
-_08116904:
- bl sub_8116FE4
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0811691E
- cmp r4, 0x1
- beq _08116916
- b _08116BF6
-_08116916:
- movs r0, 0x2
- bl PlaySE
- b _08116BF6
-_0811691E:
- ldrb r0, [r6, 0xE]
- bl ListMenu_ProcessInput
- adds r4, r0, 0
- ldr r0, _0811696C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811699C
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _0811699C
- ldr r0, [r6]
- lsls r1, r4, 5
- adds r0, r1
- ldrb r1, [r0, 0xA]
- ldrb r0, [r0, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08116994
- lsrs r0, r1, 7
- cmp r0, 0
- bne _08116994
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8116D10
- adds r1, r0, 0
- cmp r1, 0
- bne _08116970
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_8116D60
- movs r0, 0x5
- b _08116982
- .align 2, 0
-_0811696C: .4byte gMain
-_08116970:
- ldr r0, _0811698C @ =gStringVar4
- ldr r2, _08116990 @ =gUnknown_8457608
- subs r1, 0x1
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0x12
-_08116982:
- strb r0, [r6, 0x8]
- movs r0, 0x67
- bl PlaySE
- b _08116D06
- .align 2, 0
-_0811698C: .4byte gStringVar4
-_08116990: .4byte gUnknown_8457608
-_08116994:
- movs r0, 0x7
- bl PlaySE
- b _08116D06
-_0811699C:
- ldr r0, _081169B0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081169AA
- b _08116D06
-_081169AA:
- movs r0, 0xA
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_081169B0: .4byte gMain
-_081169B4:
- ldr r4, _081169FC @ =gStringVar4
- ldr r0, _08116A00 @ =gUnknown_203B058
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_811631C
- adds r0, r6, 0
- adds r0, 0x9
- adds r1, r4, 0
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _081169D2
- b _08116D06
-_081169D2:
- ldr r4, _08116A04 @ =gStringVar1
- ldrb r0, [r6, 0xF]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy7
- ldr r1, [r6]
- ldrb r0, [r6, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- b _08116C0A
- .align 2, 0
-_081169FC: .4byte gStringVar4
-_08116A00: .4byte gUnknown_203B058
-_08116A04: .4byte gStringVar1
-_08116A08:
- ldr r0, _08116A3C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08116AA4
- ldr r4, _08116A40 @ =gUnknown_203B058
- ldr r1, [r6]
- ldrb r0, [r6, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 25
- lsrs r0, 25
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- ldrb r0, [r4]
- subs r0, 0x1
- cmp r0, 0x15
- bhi _08116AA4
- lsls r0, 2
- ldr r1, _08116A44 @ =_08116A48
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116A3C: .4byte gReceivedRemoteLinkPlayers
-_08116A40: .4byte gUnknown_203B058
-_08116A44: .4byte _08116A48
- .align 2, 0
-_08116A48:
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA4
- .4byte _08116AA0
- .4byte _08116AA0
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA4
- .4byte _08116AA0
- .4byte _08116AA0
-_08116AA0:
- movs r0, 0x14
- strb r0, [r6, 0x8]
-_08116AA4:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x8
- bhi _08116B70
- lsls r0, 2
- ldr r1, _08116ABC @ =_08116AC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116ABC: .4byte _08116AC0
- .align 2, 0
-_08116AC0:
- .4byte _08116AE4
- .4byte _08116AEA
- .4byte _08116B70
- .4byte _08116B70
- .4byte _08116AF0
- .4byte _08116AEA
- .4byte _08116B44
- .4byte _08116B70
- .4byte _08116AEA
-_08116AE4:
- movs r0, 0xC
- strb r0, [r6, 0x8]
- b _08116B70
-_08116AEA:
- movs r0, 0xE
- strb r0, [r6, 0x8]
- b _08116B70
-_08116AF0:
- ldr r4, _08116B30 @ =gStringVar4
- ldr r5, _08116B34 @ =gUnknown_203B058
- ldrb r1, [r5]
- adds r0, r4, 0
- bl sub_81163B0
- adds r0, r6, 0
- adds r0, 0x9
- adds r1, r4, 0
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _08116B70
- movs r0, 0x7
- movs r1, 0
- bl sub_80FB9E4
- ldr r0, _08116B38 @ =gStringVar1
- ldr r2, _08116B3C @ =gUnknown_8456C74
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- ldr r1, _08116B40 @ =gUnknown_8457700
- adds r0, r4, 0
- bl StringExpandPlaceholders
- b _08116B70
- .align 2, 0
-_08116B30: .4byte gStringVar4
-_08116B34: .4byte gUnknown_203B058
-_08116B38: .4byte gStringVar1
-_08116B3C: .4byte gUnknown_8456C74
-_08116B40: .4byte gUnknown_8457700
-_08116B44:
- ldrb r0, [r6, 0x15]
- cmp r0, 0xF0
- bls _08116B6C
- adds r0, r6, 0
- adds r0, 0x9
- ldr r1, _08116B68 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _08116B70
- movs r0, 0xC
- movs r1, 0
- bl sub_80FB9E4
- movs r0, 0
- b _08116B6E
- .align 2, 0
-_08116B68: .4byte gStringVar4
-_08116B6C:
- adds r0, 0x1
-_08116B6E:
- strb r0, [r6, 0x15]
-_08116B70:
- bl sub_80FB9F4
- lsls r0, 24
- cmp r0, 0
- beq _08116B7C
- b _08116D06
-_08116B7C:
- ldr r0, _08116B90 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08116B8A
- b _08116D06
-_08116B8A:
- movs r0, 0x7
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116B90: .4byte gMain
-_08116B94:
- adds r0, r6, 0
- adds r0, 0x9
- ldr r1, _08116BAC @ =gUnknown_845771C
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08116BA6
- b _08116D06
-_08116BA6:
- movs r0, 0x8
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116BAC: .4byte gUnknown_845771C
-_08116BB0:
- adds r4, r6, 0
- adds r4, 0x9
- bl sub_80FB9F4
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08116BEE
- cmp r1, r0
- bgt _08116BDC
- subs r0, 0x2
- cmp r1, r0
- beq _08116BF2
- b _08116D06
-_08116BDC:
- cmp r1, 0
- beq _08116BE6
- cmp r1, 0x1
- beq _08116BEE
- b _08116D06
-_08116BE6:
- bl sub_80FA6BC
- movs r0, 0x9
- b _08116BF4
-_08116BEE:
- movs r0, 0x5
- b _08116BF4
-_08116BF2:
- movs r0, 0x6
-_08116BF4:
- strb r0, [r6, 0x8]
-_08116BF6:
- ldrb r0, [r6, 0xE]
- bl RedrawListMenu
- b _08116D06
-_08116BFE:
- bl sub_80FB9F4
- lsls r0, 24
- cmp r0, 0
- bne _08116C0A
- b _08116D06
-_08116C0A:
- movs r0, 0x6
- strb r0, [r6, 0x8]
- b _08116D06
-_08116C10:
- ldrb r0, [r6, 0xD]
- bl ClearWindowTilemap
- ldrb r0, [r6, 0xD]
- movs r1, 0
- bl ClearStdWindowAndFrame
- ldrb r0, [r6, 0xE]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r6, 0xC]
- bl ClearWindowTilemap
- ldrb r0, [r6, 0xB]
- movs r1, 0
- bl ClearStdWindowAndFrame
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r6, 0xD]
- bl RemoveWindow
- ldrb r0, [r6, 0xB]
- bl RemoveWindow
- ldrb r0, [r6, 0xC]
- bl RemoveWindow
- ldrb r0, [r6, 0x11]
- bl DestroyTask
- ldr r0, [r6]
- bl Free
- ldr r0, [r6, 0x4]
- bl Free
- ldrb r0, [r6, 0x8]
- adds r0, 0x1
- strb r0, [r6, 0x8]
- b _08116D06
-_08116C68:
- bl DestroyWirelessStatusIndicatorSprite
- adds r5, r6, 0
- adds r5, 0x9
- ldr r4, _08116C90 @ =gUnknown_8457754
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r1, [r0]
- adds r0, r5, 0
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _08116D06
- ldr r0, _08116C94 @ =gSpecialVar_Result
- movs r1, 0x6
- b _08116CDC
- .align 2, 0
-_08116C90: .4byte gUnknown_8457754
-_08116C94: .4byte gSpecialVar_Result
-_08116C98:
- bl DestroyWirelessStatusIndicatorSprite
- ldr r0, _08116CA4 @ =gSpecialVar_Result
- movs r1, 0x5
- b _08116CDC
- .align 2, 0
-_08116CA4: .4byte gSpecialVar_Result
-_08116CA8:
- bl DestroyWirelessStatusIndicatorSprite
- adds r5, r6, 0
- adds r5, 0x9
- ldr r4, _08116CC4 @ =gUnknown_8457754
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r1, [r0]
- adds r0, r5, 0
- b _08116CCE
- .align 2, 0
-_08116CC4: .4byte gUnknown_8457754
-_08116CC8:
- adds r0, r6, 0
- adds r0, 0x9
- ldr r1, _08116CE4 @ =gStringVar4
-_08116CCE:
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _08116D06
- ldr r0, _08116CE8 @ =gSpecialVar_Result
- movs r1, 0x8
-_08116CDC:
- strh r1, [r0]
- movs r0, 0x17
- strb r0, [r6, 0x8]
- b _08116D06
- .align 2, 0
-_08116CE4: .4byte gStringVar4
-_08116CE8: .4byte gSpecialVar_Result
-_08116CEC:
- adds r0, r4, 0
- bl DestroyTask
- bl sub_811A41C
- bl sub_80F8DC0
- b _08116D06
-_08116CFC:
- bl sub_8117990
- adds r0, r4, 0
- bl DestroyTask
-_08116D06:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8116738
-
- thumb_func_start sub_8116D10
-sub_8116D10: @ 8116D10
- push {lr}
- lsls r1, 5
- ldr r0, [r0]
- adds r3, r0, r1
- ldr r0, _08116D44 @ =gUnknown_203B058
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _08116D56
- ldrb r0, [r3, 0x1]
- movs r1, 0x3C
- ands r1, r0
- cmp r1, 0x10
- beq _08116D56
- cmp r1, 0x14
- beq _08116D56
- ldr r0, _08116D48 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x9]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08116D4C
- movs r0, 0x1
- b _08116D5C
- .align 2, 0
-_08116D44: .4byte gUnknown_203B058
-_08116D48: .4byte gSaveBlock2Ptr
-_08116D4C:
- ldrb r1, [r3]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08116D5A
-_08116D56:
- movs r0, 0
- b _08116D5C
-_08116D5A:
- movs r0, 0x2
-_08116D5C:
- pop {r1}
- bx r1
- thumb_func_end sub_8116D10
-
- thumb_func_start sub_8116D60
-sub_8116D60: @ 8116D60
- push {r4,r5,lr}
- adds r4, r0, 0
- strb r1, [r4, 0xF]
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- ldrb r0, [r4, 0xE]
- bl RedrawListMenu
- ldr r5, _08116DD4 @ =gStringVar1
- ldrb r0, [r4, 0xF]
- lsls r0, 5
- ldr r1, [r4]
- adds r1, r0
- adds r1, 0x10
- adds r0, r5, 0
- bl StringCopy7
- ldr r1, [r4]
- ldrb r0, [r4, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r5, 0
- bl ConvertInternationalString
- ldr r1, _08116DD8 @ =gUnknown_84570C8
- ldr r0, _08116DDC @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- ldrb r1, [r4, 0xF]
- lsls r1, 5
- ldr r0, [r4]
- adds r0, r1
- adds r4, r0, 0
- adds r4, 0x10
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_80FBF54
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08116DD4: .4byte gStringVar1
-_08116DD8: .4byte gUnknown_84570C8
-_08116DDC: .4byte gSpecialVar_0x8004
- thumb_func_end sub_8116D60
-
- thumb_func_start sub_8116DE0
-sub_8116DE0: @ 8116DE0
- push {lr}
- ldr r0, _08116E0C @ =sub_8116E1C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _08116E10 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _08116E14 @ =gTasks+0x8
- adds r1, r2
- str r1, [r3]
- movs r2, 0
- strb r2, [r1, 0x8]
- strb r2, [r1, 0x9]
- ldr r2, _08116E18 @ =gUnknown_3002028
- str r1, [r2]
- pop {r1}
- bx r1
- .align 2, 0
-_08116E0C: .4byte sub_8116E1C
-_08116E10: .4byte gUnknown_203B05C
-_08116E14: .4byte gTasks+0x8
-_08116E18: .4byte gUnknown_3002028
- thumb_func_end sub_8116DE0
-
- thumb_func_start sub_8116E1C
-sub_8116E1C: @ 8116E1C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08116E38 @ =gUnknown_203B05C
- ldr r4, [r0]
- ldrb r0, [r4, 0x8]
- cmp r0, 0xB
- bhi _08116F20
- lsls r0, 2
- ldr r1, _08116E3C @ =_08116E40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08116E38: .4byte gUnknown_203B05C
-_08116E3C: .4byte _08116E40
- .align 2, 0
-_08116E40:
- .4byte _08116E70
- .4byte _08116F20
- .4byte _08116EA4
- .4byte _08116EC8
- .4byte _08116F20
- .4byte _08116F20
- .4byte _08116F20
- .4byte _08116F20
- .4byte _08116F20
- .4byte _08116F20
- .4byte _08116EF8
- .4byte _08116F16
-_08116E70:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBBD8
- movs r0, 0x1
- bl sub_80FB128
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r4, 0x4]
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- movs r0, 0x2
- strb r0, [r4, 0x8]
- b _08116F20
-_08116EA4:
- ldr r0, [r4, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r4]
- movs r1, 0x10
- bl sub_811A5E4
- ldr r0, [r4, 0x4]
- movs r1, 0xFF
- bl sub_811A054
- movs r1, 0
- strb r0, [r4, 0x11]
- strb r1, [r4, 0xF]
- movs r0, 0x3
- strb r0, [r4, 0x8]
- b _08116F20
-_08116EC8:
- bl sub_8116FE4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08116EDA
- movs r0, 0x2
- bl PlaySE
-_08116EDA:
- ldr r0, _08116EF4 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x26
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- bne _08116F20
- movs r0, 0xA
- strb r0, [r4, 0x8]
- b _08116F20
- .align 2, 0
-_08116EF4: .4byte gTasks
-_08116EF8:
- ldrb r0, [r4, 0x11]
- bl DestroyTask
- ldr r0, [r4]
- bl Free
- ldr r0, [r4, 0x4]
- bl Free
- bl sub_80F8DC0
- ldrb r0, [r4, 0x8]
- adds r0, 0x1
- strb r0, [r4, 0x8]
- b _08116F20
-_08116F16:
- bl sub_80F8DC0
- adds r0, r5, 0
- bl DestroyTask
-_08116F20:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8116E1C
-
- thumb_func_start sub_8116F28
-sub_8116F28: @ 8116F28
- push {lr}
- adds r2, r0, 0
- cmp r1, 0xFF
- bne _08116F34
-_08116F30:
- movs r0, 0x1
- b _08116F58
-_08116F34:
- cmp r1, 0xD
- bhi _08116F56
- ldr r0, _08116F44 @ =gUnknown_8457094
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- b _08116F50
- .align 2, 0
-_08116F44: .4byte gUnknown_8457094
-_08116F48:
- ldrb r0, [r1]
- cmp r0, r2
- beq _08116F30
- adds r1, 0x1
-_08116F50:
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _08116F48
-_08116F56:
- movs r0, 0
-_08116F58:
- pop {r1}
- bx r1
- thumb_func_end sub_8116F28
-
- thumb_func_start sub_8116F5C
-sub_8116F5C: @ 8116F5C
- push {lr}
- ldr r0, [r0]
- lsls r1, 5
- adds r1, r0, r1
- ldrb r2, [r1, 0x1A]
- lsls r0, r2, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08116F8E
- ldrb r0, [r1, 0xA]
- lsrs r0, 7
- cmp r0, 0
- beq _08116F7A
- movs r0, 0x3
- b _08116F90
-_08116F7A:
- lsls r0, r2, 29
- cmp r0, 0
- bge _08116F84
- movs r0, 0x1
- b _08116F90
-_08116F84:
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _08116F8E
- movs r0, 0x2
- b _08116F90
-_08116F8E:
- movs r0, 0
-_08116F90:
- pop {r1}
- bx r1
- thumb_func_end sub_8116F5C
-
- thumb_func_start sub_8116F94
-sub_8116F94: @ 8116F94
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _08116FE0 @ =gUnknown_203B05C
- ldr r0, [r0]
- mov r8, r0
- bl sub_8116F5C
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 5
- mov r2, r8
- ldr r3, [r2]
- adds r3, r1
- str r0, [sp]
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0x8
- adds r2, r6, 0
- bl sub_811A81C
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08116FE0: .4byte gUnknown_203B05C
- thumb_func_end sub_8116F94
-
- thumb_func_start sub_8116FE4
-sub_8116FE4: @ 8116FE4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r0, _0811704C @ =gUnknown_203B05C
- ldr r6, [r0]
- movs r7, 0
- movs r3, 0
-_08116FF4:
- ldr r0, [r6]
- lsls r5, r3, 5
- adds r2, r0, r5
- ldrb r0, [r2, 0x1A]
- lsls r0, 30
- mov r8, r5
- cmp r0, 0
- beq _081170C0
- ldr r1, [r6, 0x4]
- adds r0, r2, 0
- str r3, [sp]
- bl sub_811A748
- adds r4, r0, 0
- ldr r3, [sp]
- cmp r4, 0xFF
- beq _0811708E
- ldr r0, [r6]
- adds r2, r0, r5
- ldrb r1, [r2, 0x1A]
- lsls r0, r1, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _0811706C
- lsls r0, r4, 3
- subs r0, r4
- lsls r4, r0, 2
- ldr r1, [r6, 0x4]
- adds r1, r4
- adds r0, r2, 0
- bl sub_811A6DC
- ldr r3, [sp]
- cmp r0, 0
- beq _08117050
- ldr r1, [r6]
- ldr r0, [r6, 0x4]
- adds r1, r5
- adds r0, r4
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
- b _0811707A
- .align 2, 0
-_0811704C: .4byte gUnknown_203B05C
-_08117050:
- ldr r0, [r6]
- adds r1, r0, r5
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _08117084
- subs r0, 0x1
- strb r0, [r1, 0x1B]
- ldr r0, [r6]
- adds r0, r5
- ldrb r0, [r0, 0x1B]
- cmp r0, 0
- bne _08117084
- movs r7, 0x2
- b _08117084
-_0811706C:
- movs r4, 0x4
- negs r4, r4
- adds r0, r4, 0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1A]
-_0811707A:
- ldr r0, [r6]
- adds r0, r5
- movs r1, 0x40
- strb r1, [r0, 0x1B]
- movs r7, 0x1
-_08117084:
- ldr r0, [r6]
- add r0, r8
- movs r1, 0
- strh r1, [r0, 0x18]
- b _081170C0
-_0811708E:
- ldr r0, [r6]
- adds r1, r0, r5
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x2
- beq _081170C0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
- ldr r0, [r6]
- adds r2, r0, r5
- ldrh r1, [r2, 0x18]
- ldr r0, _081170FC @ =0x0000012b
- cmp r1, r0
- bls _081170C0
- ldrb r0, [r2, 0x1A]
- movs r7, 0x4
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1A]
- movs r7, 0x2
-_081170C0:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _08116FF4
- movs r5, 0
- movs r4, 0x3
-_081170CE:
- ldr r0, [r6]
- ldr r1, [r6, 0x4]
- adds r1, r5
- movs r2, 0x10
- bl sub_811A798
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _081170E4
- movs r7, 0x1
-_081170E4:
- adds r5, 0x1C
- subs r4, 0x1
- cmp r4, 0
- bge _081170CE
- adds r0, r7, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081170FC: .4byte 0x0000012b
- thumb_func_end sub_8116FE4
-
- thumb_func_start sub_8117100
-sub_8117100: @ 8117100
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl CB2_ReturnFromLinkTrade
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8117100
-
- thumb_func_start sub_8117118
-sub_8117118: @ 8117118
- push {lr}
- ldr r0, _0811712C @ =sub_8117100
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0811712C: .4byte sub_8117100
- thumb_func_end sub_8117118
-
- thumb_func_start sub_8117130
-sub_8117130: @ 8117130
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0811716C @ =gUnknown_203B06C
- mov r8, r0
- bl GetMultiplayerId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r8
- bl sub_811B1EC
- adds r7, r0, 0
- ldr r1, _08117170 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _0811719C
- cmp r0, 0x1
- bgt _08117174
- cmp r0, 0
- beq _0811717E
- b _0811725C
- .align 2, 0
-_0811716C: .4byte gUnknown_203B06C
-_08117170: .4byte gTasks
-_08117174:
- cmp r0, 0x2
- beq _081171D8
- cmp r0, 0x3
- beq _08117210
- b _0811725C
-_0811717E:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08117198 @ =gPlayerParty
- adds r1, r0
- movs r0, 0
- movs r2, 0x64
- bl SendBlock
- b _0811725C
- .align 2, 0
-_08117198: .4byte gPlayerParty
-_0811719C:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0811725C
- bl GetMultiplayerId
- adds r1, r0, 0
- ldr r0, _081171D0 @ =gEnemyParty
- movs r2, 0x1
- eors r1, r2
- lsls r1, 24
- lsrs r1, 16
- ldr r2, _081171D4 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x64
- bl memcpy
- movs r0, 0x32
- bl IncrementGameStat
- bl ResetBlockReceivedFlags
- b _081171FA
- .align 2, 0
-_081171D0: .4byte gEnemyParty
-_081171D4: .4byte gBlockRecvBuffer
-_081171D8:
- ldr r4, _08117204 @ =gBlockSendBuffer
- ldr r0, _08117208 @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, _0811720C @ =0x00002cd0
- adds r1, r0
- adds r0, r4, 0
- movs r2, 0xDC
- bl memcpy
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0xDC
- bl SendBlock
- lsls r0, 24
- cmp r0, 0
- beq _0811725C
-_081171FA:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _0811725C
- .align 2, 0
-_08117204: .4byte gBlockSendBuffer
-_08117208: .4byte gSaveBlock1Ptr
-_0811720C: .4byte 0x00002cd0
-_08117210:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0811725C
- ldr r4, _08117268 @ =gLinkPartnerMail
- bl GetMultiplayerId
- adds r1, r0, 0
- movs r0, 0x1
- eors r1, r0
- lsls r1, 24
- lsrs r1, 16
- ldr r0, _0811726C @ =gBlockRecvBuffer
- adds r1, r0
- adds r0, r4, 0
- movs r2, 0xD8
- bl memcpy
- bl ResetBlockReceivedFlags
- ldr r1, _08117270 @ =gSelectedTradeMonPositions
- strb r7, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- ldr r1, _08117274 @ =gMain
- ldr r0, _08117278 @ =CB2_ReturnToField
- str r0, [r1, 0x8]
- ldr r0, _0811727C @ =CB2_InitTradeAnim_LinkTrade
- bl SetMainCallback2
- mov r0, r8
- bl sub_811B148
- adds r0, r6, 0
- bl DestroyTask
-_0811725C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08117268: .4byte gLinkPartnerMail
-_0811726C: .4byte gBlockRecvBuffer
-_08117270: .4byte gSelectedTradeMonPositions
-_08117274: .4byte gMain
-_08117278: .4byte CB2_ReturnToField
-_0811727C: .4byte CB2_InitTradeAnim_LinkTrade
- thumb_func_end sub_8117130
-
- thumb_func_start sub_8117280
-sub_8117280: @ 8117280
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _081172A4 @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081172A8
- cmp r0, 0x1
- beq _081172C0
- b _0811734A
- .align 2, 0
-_081172A4: .4byte gTasks
-_081172A8:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _081172B8
- movs r0, 0x2
- bl sub_800A474
-_081172B8:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0811734A
-_081172C0:
- bl GetBlockReceivedStatus
- adds r4, r0, 0
- bl sub_800A8D4
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _0811734A
- movs r4, 0
- ldr r0, _081172E0 @ =gTrainerCards
- adds r7, r0, 0
- adds r7, 0x38
- ldr r6, _081172E4 @ =gLinkPlayers
- adds r5, r0, 0
- b _08117302
- .align 2, 0
-_081172E0: .4byte gTrainerCards
-_081172E4: .4byte gLinkPlayers
-_081172E8:
- lsls r0, r4, 8
- ldr r1, _08117338 @ =gBlockRecvBuffer
- adds r1, r0, r1
- adds r0, r5, 0
- movs r2, 0x60
- bl memcpy
- ldrh r0, [r6]
- strb r0, [r7]
- adds r7, 0x60
- adds r6, 0x1C
- adds r5, 0x60
- adds r4, 0x1
-_08117302:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- blt _081172E8
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0811733C
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 16
- ldr r1, _08117338 @ =gBlockRecvBuffer
- adds r1, r0, r1
- adds r0, r1, 0
- adds r0, 0x60
- ldrh r0, [r0]
- bl sub_81446D0
- b _08117340
- .align 2, 0
-_08117338: .4byte gBlockRecvBuffer
-_0811733C:
- bl sub_81446C4
-_08117340:
- bl ResetBlockReceivedFlags
- mov r0, r8
- bl DestroyTask
-_0811734A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8117280
-
- thumb_func_start sub_8117354
-sub_8117354: @ 8117354
- push {r4,lr}
- ldr r0, _0811736C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- beq _08117370
- cmp r0, 0x1
- beq _08117384
- b _081173A2
- .align 2, 0
-_0811736C: .4byte gMain
-_08117370:
- ldr r0, _08117380 @ =sub_8117280
- movs r1, 0x5
- bl CreateTask
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _081173A2
- .align 2, 0
-_08117380: .4byte sub_8117280
-_08117384:
- ldr r0, _081173B8 @ =sub_8117280
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _081173A2
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081173BC @ =CB2_ReturnToField
- bl ShowTrainerCardInLink
-_081173A2:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081173B8: .4byte sub_8117280
-_081173BC: .4byte CB2_ReturnToField
- thumb_func_end sub_8117354
-
- thumb_func_start sub_81173C0
-sub_81173C0: @ 81173C0
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- bl HealPlayerParty
- bl SavePlayerParty
- bl LoadPlayerBag
- ldr r5, _0811742C @ =gLinkPlayers
- ldr r0, _08117430 @ =0x00002211
- str r0, [r5, 0x14]
- bl GetMultiplayerId
- adds r4, r0, 0
- bl GetMultiplayerId
- lsls r4, 24
- lsrs r4, 24
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- adds r1, r5
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x18]
- bl GetMultiplayerId
- adds r4, r0, 0
- bl GetMultiplayerId
- movs r2, 0x1
- eors r4, r2
- lsls r4, 24
- lsrs r4, 24
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- adds r1, r5
- eors r0, r2
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x18]
- ldr r1, _08117434 @ =gMain
- ldr r0, _08117438 @ =sub_8081668
- str r0, [r1, 0x8]
- ldr r0, _0811743C @ =gBattleTypeFlags
- str r6, [r0]
- bl PlayBattleBGM
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811742C: .4byte gLinkPlayers
-_08117430: .4byte 0x00002211
-_08117434: .4byte gMain
-_08117438: .4byte sub_8081668
-_0811743C: .4byte gBattleTypeFlags
- thumb_func_end sub_81173C0
-
- thumb_func_start sub_8117440
-sub_8117440: @ 8117440
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r3, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r0, _081174AC @ =0x0000406f
- adds r1, r3, 0
- bl VarSet
- ldr r6, _081174B0 @ =gSaveBlock1Ptr
- ldr r1, [r6]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- mov r8, r2
- lsls r4, 24
- asrs r4, 24
- lsls r5, 24
- asrs r5, 24
- str r5, [sp]
- adds r3, r4, 0
- bl SetWarpDestination
- ldr r0, [r6]
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- movs r2, 0x5
- ldrsb r2, [r0, r2]
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0
- mov r3, r8
- bl SetDynamicWarpWithCoords
- bl WarpIntoMap
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081174AC: .4byte 0x0000406f
-_081174B0: .4byte gSaveBlock1Ptr
- thumb_func_end sub_8117440
-
- thumb_func_start sub_81174B4
-sub_81174B4: @ 81174B4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- mov r8, r2
- adds r6, r3, 0
- ldr r1, [sp, 0x18]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08117524 @ =gSpecialVar_0x8004
- strh r1, [r0]
- ldr r0, _08117528 @ =0x0000406f
- bl VarSet
- bl GetLinkPlayerCount
- ldr r1, _0811752C @ =gUnknown_3005030
- strb r0, [r1]
- bl GetMultiplayerId
- ldr r1, _08117530 @ =gUnknown_300502C
- strb r0, [r1]
- bl SetCableClubWarp
- lsls r4, 24
- asrs r4, 24
- lsls r5, 24
- asrs r5, 24
- movs r2, 0x1
- negs r2, r2
- mov r0, r8
- lsls r0, 24
- asrs r0, 24
- mov r8, r0
- lsls r6, 24
- asrs r6, 24
- str r6, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- mov r3, r8
- bl SetWarpDestination
- bl WarpIntoMap
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08117524: .4byte gSpecialVar_0x8004
-_08117528: .4byte 0x0000406f
-_0811752C: .4byte gUnknown_3005030
-_08117530: .4byte gUnknown_300502C
- thumb_func_end sub_81174B4
-
- thumb_func_start sub_8117534
-sub_8117534: @ 8117534
- push {r4,lr}
- ldr r0, _0811754C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- beq _08117550
- cmp r0, 0x1
- beq _08117564
- b _08117576
- .align 2, 0
-_0811754C: .4byte gMain
-_08117550:
- ldr r0, _08117560 @ =sub_8117280
- movs r1, 0x5
- bl CreateTask
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08117576
- .align 2, 0
-_08117560: .4byte sub_8117280
-_08117564:
- ldr r0, _0811758C @ =sub_8117280
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08117576
- ldr r0, _08117590 @ =sub_8056788
- bl SetMainCallback2
-_08117576:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811758C: .4byte sub_8117280
-_08117590: .4byte sub_8056788
- thumb_func_end sub_8117534
-
- thumb_func_start sub_8117594
-sub_8117594: @ 8117594
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl TrainerCard_GenerateCardForLinkPlayer
- cmp r5, 0
- beq _081175AE
- bl sub_81440E8
- adds r1, r4, 0
- adds r1, 0x60
- strh r0, [r1]
- b _081175B4
-_081175AE:
- adds r0, r4, 0
- adds r0, 0x60
- strh r5, [r0]
-_081175B4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8117594
-
- thumb_func_start sub_81175BC
-sub_81175BC: @ 81175BC
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81446C4
- ldr r0, _081175DC @ =gUnknown_203B058
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0xD
- bhi _08117620
- lsls r0, 2
- ldr r1, _081175E0 @ =_081175E4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081175DC: .4byte gUnknown_203B058
-_081175E0: .4byte _081175E4
- .align 2, 0
-_081175E4:
- .4byte _0811761C
- .4byte _0811761C
- .4byte _0811761C
- .4byte _0811761C
- .4byte _08117620
- .4byte _08117620
- .4byte _08117620
- .4byte _08117620
- .4byte _0811761C
- .4byte _0811761C
- .4byte _0811761C
- .4byte _08117620
- .4byte _0811761C
- .4byte _0811761C
-_0811761C:
- bl RecordMixTrainerNames
-_08117620:
- ldr r0, _08117638 @ =gUnknown_203B058
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x50
- bls _0811762C
- b _081178E0
-_0811762C:
- lsls r0, 2
- ldr r1, _0811763C @ =_08117640
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08117638: .4byte gUnknown_203B058
-_0811763C: .4byte _08117640
- .align 2, 0
-_08117640:
- .4byte _081177A0
- .4byte _081177C8
- .4byte _081177F0
- .4byte _08117818
- .4byte _08117854
- .4byte _081178E0
- .4byte _081178E0
- .4byte _08117878
- .4byte _08117890
- .4byte _081178B0
- .4byte _081178C8
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _08117784
- .4byte _081178E0
- .4byte _081178E0
- .4byte _08117844
- .4byte _08117854
- .4byte _081178E0
- .4byte _081178E0
- .4byte _08117878
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _081178E0
- .4byte _08117784
-_08117784:
- bl CleanupOverworldWindowsAndTilemaps
- ldr r1, _08117798 @ =gMain
- ldr r0, _0811779C @ =sub_811C1C8
- str r0, [r1, 0x8]
- movs r0, 0x2
- bl InitChooseHalfPartyForBattle
- b _081178E0
- .align 2, 0
-_08117798: .4byte gMain
-_0811779C: .4byte sub_811C1C8
-_081177A0:
- bl CleanupOverworldWindowsAndTilemaps
- ldr r0, _081177C4 @ =gBlockSendBuffer
- movs r1, 0x1
- bl sub_8117594
- bl HealPlayerParty
- bl SavePlayerParty
- bl LoadPlayerBag
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0x6
- b _0811782E
- .align 2, 0
-_081177C4: .4byte gBlockSendBuffer
-_081177C8:
- bl CleanupOverworldWindowsAndTilemaps
- bl HealPlayerParty
- bl SavePlayerParty
- bl LoadPlayerBag
- ldr r0, _081177EC @ =gBlockSendBuffer
- movs r1, 0x1
- bl sub_8117594
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0x6
- b _0811782E
- .align 2, 0
-_081177EC: .4byte gBlockSendBuffer
-_081177F0:
- bl CleanupOverworldWindowsAndTilemaps
- bl HealPlayerParty
- bl SavePlayerParty
- bl LoadPlayerBag
- ldr r0, _08117814 @ =gBlockSendBuffer
- movs r1, 0x1
- bl sub_8117594
- movs r0, 0x5
- str r0, [sp]
- movs r0, 0
- movs r1, 0x3
- b _0811782C
- .align 2, 0
-_08117814: .4byte gBlockSendBuffer
-_08117818:
- ldr r0, _0811783C @ =gBlockSendBuffer
- movs r1, 0x1
- bl sub_8117594
- bl CleanupOverworldWindowsAndTilemaps
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0
- movs r1, 0x1
-_0811782C:
- movs r2, 0x5
-_0811782E:
- movs r3, 0x8
- bl sub_81174B4
- ldr r0, _08117840 @ =sub_8117534
- bl SetMainCallback2
- b _081178E0
- .align 2, 0
-_0811783C: .4byte gBlockSendBuffer
-_08117840: .4byte sub_8117534
-_08117844:
- ldr r0, _08117850 @ =sub_8117130
- movs r1, 0
- bl CreateTask
- b _081178E0
- .align 2, 0
-_08117850: .4byte sub_8117130
-_08117854:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _08117864
- bl sub_80F8CFC
- b _08117872
-_08117864:
- bl sub_80F8D14
- movs r0, 0x45
- movs r1, 0
- movs r2, 0x1
- bl sub_80FAF58
-_08117872:
- bl sub_8128420
- b _081178E0
-_08117878:
- ldr r0, _08117888 @ =gBlockSendBuffer
- movs r1, 0
- bl sub_8117594
- ldr r0, _0811788C @ =sub_8117354
- bl SetMainCallback2
- b _081178E0
- .align 2, 0
-_08117888: .4byte gBlockSendBuffer
-_0811788C: .4byte sub_8117354
-_08117890:
- movs r0, 0x8
- movs r1, 0x5
- movs r2, 0x1
- bl sub_8117440
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081178AC @ =CB2_LoadMap
- bl sub_8147AA8
- b _081178E0
- .align 2, 0
-_081178AC: .4byte CB2_LoadMap
-_081178B0:
- movs r0, 0x7
- movs r1, 0x9
- movs r2, 0x1
- bl sub_8117440
- ldr r0, _081178C4 @ =CB2_LoadMap
- bl sub_814B754
- b _081178E0
- .align 2, 0
-_081178C4: .4byte CB2_LoadMap
-_081178C8:
- movs r0, 0x8
- movs r1, 0x5
- movs r2, 0x1
- bl sub_8117440
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081178F8 @ =CB2_LoadMap
- bl sub_81507FC
-_081178E0:
- adds r0, r4, 0
- bl DestroyTask
- ldr r1, _081178FC @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
- bl ScriptContext2_Disable
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081178F8: .4byte CB2_LoadMap
-_081178FC: .4byte gSpecialVar_Result
- thumb_func_end sub_81175BC
-
- thumb_func_start sub_8117900
-sub_8117900: @ 8117900
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08117924 @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08117944
- cmp r0, 0x1
- bgt _08117928
- cmp r0, 0
- beq _08117932
- b _08117988
- .align 2, 0
-_08117924: .4byte gTasks+0x8
-_08117928:
- cmp r0, 0x2
- beq _08117958
- cmp r0, 0x3
- beq _08117974
- b _08117988
-_08117932:
- ldr r1, _08117940 @ =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
- bl EnableBothScriptContexts
- b _08117968
- .align 2, 0
-_08117940: .4byte gSpecialVar_Result
-_08117944:
- bl ScriptContext1_IsScriptSetUp
- lsls r0, 24
- cmp r0, 0
- bne _08117988
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- b _08117968
-_08117958:
- ldr r0, _08117970 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08117988
- bl sub_800AB9C
-_08117968:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _08117988
- .align 2, 0
-_08117970: .4byte gPaletteFade
-_08117974:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08117988
- adds r0, r5, 0
- bl DestroyTask
- bl sub_81179A4
-_08117988:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8117900
-
- thumb_func_start sub_8117990
-sub_8117990: @ 8117990
- push {lr}
- ldr r0, _081179A0 @ =sub_8117900
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_081179A0: .4byte sub_8117900
- thumb_func_end sub_8117990
-
- thumb_func_start sub_81179A4
-sub_81179A4: @ 81179A4
- push {lr}
- ldr r0, _081179C4 @ =sub_81175BC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081179C8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_081179C4: .4byte sub_81175BC
-_081179C8: .4byte gTasks
- thumb_func_end sub_81179A4
-
- thumb_func_start MEvent_CreateTask_Leader
-MEvent_CreateTask_Leader: @ 81179CC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _081179FC @ =sub_8117A0C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08117A00 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08117A04 @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- movs r2, 0
- strb r2, [r1, 0xC]
- strb r2, [r1, 0xD]
- strb r4, [r1, 0x18]
- ldr r0, _08117A08 @ =gSpecialVar_Result
- strh r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081179FC: .4byte sub_8117A0C
-_08117A00: .4byte gUnknown_203B05C
-_08117A04: .4byte gTasks+0x8
-_08117A08: .4byte gSpecialVar_Result
- thumb_func_end MEvent_CreateTask_Leader
-
- thumb_func_start sub_8117A0C
-sub_8117A0C: @ 8117A0C
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08117A2C @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0xC]
- cmp r0, 0x11
- bls _08117A20
- b _08117ECA
-_08117A20:
- lsls r0, 2
- ldr r1, _08117A30 @ =_08117A34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08117A2C: .4byte gUnknown_203B05C
-_08117A30: .4byte _08117A34
- .align 2, 0
-_08117A34:
- .4byte _08117A7C
- .4byte _08117AB8
- .4byte _08117B7C
- .4byte _08117BAC
- .4byte _08117BBC
- .4byte _08117C0C
- .4byte _08117BE4
- .4byte _08117C12
- .4byte _08117CB2
- .4byte _08117D94
- .4byte _08117DA4
- .4byte _08117DBA
- .4byte _08117DD2
- .4byte _08117DEE
- .4byte _08117E26
- .4byte _08117E4C
- .4byte _08117E80
- .4byte _08117EBA
-_08117A7C:
- ldr r1, _08117AB0 @ =gUnknown_203B058
- ldrb r0, [r5, 0x18]
- strb r0, [r1]
- ldr r1, _08117AB4 @ =gUnknown_203B059
- movs r0, 0x2
- strb r0, [r1]
- ldrb r0, [r5, 0x18]
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- movs r0, 0
- movs r1, 0
- bl sub_80FAF74
- bl sub_800B1F4
- bl OpenLink
- movs r0, 0x2
- bl sub_80FBB8C
- movs r0, 0x1
- strb r0, [r5, 0xC]
- b _08117ECA
- .align 2, 0
-_08117AB0: .4byte gUnknown_203B058
-_08117AB4: .4byte gUnknown_203B059
-_08117AB8:
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0x4]
- movs r0, 0xA0
- bl AllocZeroed
- str r0, [r5]
- movs r0, 0xA0
- bl AllocZeroed
- str r0, [r5, 0x8]
- ldr r0, [r5, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r5]
- movs r1, 0x5
- bl sub_811A5E4
- ldr r0, [r5]
- adds r1, r0, 0
- adds r1, 0x10
- bl sub_80FCD50
- ldr r1, [r5]
- movs r3, 0
- movs r0, 0
- strh r0, [r1, 0x18]
- ldr r2, [r5]
- ldrb r1, [r2, 0x1A]
- subs r0, 0x4
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1A]
- ldr r2, [r5]
- ldrb r1, [r2, 0x1A]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x1A]
- ldr r0, [r5]
- strb r3, [r0, 0x1B]
- ldr r0, [r5, 0x4]
- movs r1, 0xFF
- bl sub_811A054
- strb r0, [r5, 0x17]
- ldr r0, _08117B6C @ =gUnknown_8456CFC
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- bl GetMysteryGiftBaseBlock
- lsls r0, 16
- ldr r2, _08117B70 @ =0x0000ffff
- ldr r1, [sp, 0x4]
- ands r1, r2
- orrs r1, r0
- str r1, [sp, 0x4]
- mov r0, sp
- bl AddWindow
- strb r0, [r5, 0xF]
- ldrb r0, [r5, 0xF]
- bl MG_DrawTextBorder
- ldr r0, _08117B74 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _08117B78 @ =gUnknown_8456D34
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldrb r1, [r5, 0xF]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r5, 0x12]
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- strb r0, [r5, 0x13]
- b _08117C02
- .align 2, 0
-_08117B6C: .4byte gUnknown_8456CFC
-_08117B70: .4byte 0x0000ffff
-_08117B74: .4byte gMultiuseListMenuTemplate
-_08117B78: .4byte gUnknown_8456D34
-_08117B7C:
- ldr r0, _08117B9C @ =gStringVar1
- ldr r2, _08117BA0 @ =gUnknown_8456C74
- ldr r4, _08117BA4 @ =gUnknown_203B058
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- ldr r0, _08117BA8 @ =gStringVar4
- ldrb r1, [r4]
- bl sub_811599C
- movs r0, 0x3
- strb r0, [r5, 0xC]
- b _08117ECA
- .align 2, 0
-_08117B9C: .4byte gStringVar1
-_08117BA0: .4byte gUnknown_8456C74
-_08117BA4: .4byte gUnknown_203B058
-_08117BA8: .4byte gStringVar4
-_08117BAC:
- ldr r0, _08117BB8 @ =gStringVar4
- bl AddTextPrinterToWindow1
- movs r0, 0x4
- strb r0, [r5, 0xC]
- b _08117ECA
- .align 2, 0
-_08117BB8: .4byte gStringVar4
-_08117BBC:
- adds r0, r5, 0
- movs r1, 0x5
- movs r2, 0x6
- bl sub_8116444
- ldr r0, _08117BE0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08117BD4
- b _08117ECA
-_08117BD4:
- movs r0, 0xD
- strb r0, [r5, 0xC]
- bl DestroyWirelessStatusIndicatorSprite
- b _08117ECA
- .align 2, 0
-_08117BE0: .4byte gMain
-_08117BE4:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08117C08 @ =gUnknown_84577F8
- bl MG_PrintTextOnWindow1AndWaitButton
- cmp r0, 0
- bne _08117BF4
- b _08117ECA
-_08117BF4:
- ldr r0, [r5]
- bl sub_81165E8
- strb r0, [r5, 0x13]
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
-_08117C02:
- movs r0, 0x2
- strb r0, [r5, 0xC]
- b _08117ECA
- .align 2, 0
-_08117C08: .4byte gUnknown_84577F8
-_08117C0C:
- movs r0, 0x7
- strb r0, [r5, 0xC]
- b _08117ECA
-_08117C12:
- adds r0, r5, 0
- adds r0, 0xD
- adds r1, r5, 0
- adds r1, 0x14
- ldr r3, _08117C38 @ =gStringVar4
- movs r2, 0
- bl mevent_message_print_and_prompt_yes_no
- lsls r0, 24
- asrs r4, r0, 24
- cmp r4, 0
- beq _08117C42
- cmp r4, 0
- bgt _08117C3C
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _08117C84
- b _08117ECA
- .align 2, 0
-_08117C38: .4byte gStringVar4
-_08117C3C:
- cmp r4, 0x1
- beq _08117C84
- b _08117ECA
-_08117C42:
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- adds r1, r0
- strb r4, [r1, 0x1B]
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- movs r0, 0x5
- strb r0, [r5, 0x19]
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- ldr r2, [r5]
- adds r2, r0
- adds r2, 0x10
- movs r0, 0x5
- b _08117CA8
-_08117C84:
- movs r0, 0x6
- strb r0, [r5, 0x19]
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- ldr r2, [r5]
- adds r2, r0
- adds r2, 0x10
- movs r0, 0x6
-_08117CA8:
- bl sub_80FA670
- movs r0, 0x8
- strb r0, [r5, 0xC]
- b _08117ECA
-_08117CB2:
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r0, 0x2
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- ldrb r2, [r5, 0x13]
- lsls r2, 5
- ldr r1, [r5]
- adds r1, r2
- adds r1, 0x10
- bl sub_80FA6FC
- adds r4, r0, 0
- cmp r4, 0x1
- bne _08117D82
- ldrb r0, [r5, 0x19]
- cmp r0, 0x5
- bne _08117D3C
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- adds r1, r0
- movs r0, 0
- strb r0, [r1, 0x1B]
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- ldrb r0, [r5, 0x13]
- adds r0, 0x1
- strb r0, [r5, 0x13]
- ldr r4, _08117D30 @ =gStringVar1
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r1, r0
- subs r1, 0x10
- adds r0, r4, 0
- bl StringCopy7
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- subs r0, 0x1
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _08117D34 @ =gStringVar4
- ldr r1, _08117D38 @ =gUnknown_8457554
- bl StringExpandPlaceholders
- movs r0, 0x9
- strb r0, [r5, 0xC]
- bl sub_80F8F5C
- b _08117D7C
- .align 2, 0
-_08117D30: .4byte gStringVar1
-_08117D34: .4byte gStringVar4
-_08117D38: .4byte gUnknown_8457554
-_08117D3C:
- ldrb r1, [r5, 0x13]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r4, r0, 0
- adds r4, 0x10
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_80FBD4C
- ldr r1, [r5]
- ldrb r0, [r5, 0x13]
- lsls r0, 5
- adds r1, r0
- ldrb r2, [r1, 0x1A]
- movs r0, 0x4
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1A]
- ldr r0, [r5]
- bl sub_81165E8
- ldrb r0, [r5, 0x12]
- bl RedrawListMenu
- movs r0, 0x2
- strb r0, [r5, 0xC]
-_08117D7C:
- movs r0, 0
- strb r0, [r5, 0x19]
- b _08117ECA
-_08117D82:
- cmp r4, 0x2
- beq _08117D88
- b _08117ECA
-_08117D88:
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- strb r4, [r5, 0xC]
- b _08117ECA
-_08117D94:
- ldr r0, _08117DA0 @ =gStringVar4
- bl AddTextPrinterToWindow1
- movs r0, 0xA
- strb r0, [r5, 0xC]
- b _08117ECA
- .align 2, 0
-_08117DA0: .4byte gStringVar4
-_08117DA4:
- ldrb r0, [r5, 0xE]
- adds r0, 0x1
- strb r0, [r5, 0xE]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x78
- bhi _08117DB4
- b _08117ECA
-_08117DB4:
- movs r0, 0xB
- strb r0, [r5, 0xC]
- b _08117ECA
-_08117DBA:
- adds r0, r5, 0
- movs r1, 0x5
- movs r2, 0x6
- bl sub_8116444
- lsls r0, 24
- cmp r0, 0
- beq _08117DCC
- b _08117ECA
-_08117DCC:
- movs r0, 0xC
- strb r0, [r5, 0xC]
- b _08117ECA
-_08117DD2:
- bl sub_80F8F40
- lsls r0, 24
- cmp r0, 0
- beq _08117DE8
- movs r0, 0
- bl sub_80F8F7C
- movs r0, 0xF
- strb r0, [r5, 0xC]
- b _08117ECA
-_08117DE8:
- movs r0, 0x6
- strb r0, [r5, 0xC]
- b _08117ECA
-_08117DEE:
- bl DestroyWirelessStatusIndicatorSprite
- bl sub_80F8DC0
- ldrb r0, [r5, 0x12]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r5, 0xF]
- bl RemoveWindow
- ldrb r0, [r5, 0x17]
- bl DestroyTask
- ldr r0, [r5, 0x8]
- bl Free
- ldr r0, [r5]
- bl Free
- ldr r0, [r5, 0x4]
- bl Free
- b _08117EB2
-_08117E26:
- adds r0, r5, 0
- adds r0, 0xD
- ldr r1, _08117E44 @ =gUnknown_84571B8
- bl MG_PrintTextOnWindow1AndWaitButton
- cmp r0, 0
- beq _08117ECA
- adds r0, r4, 0
- bl DestroyTask
- ldr r1, _08117E48 @ =gSpecialVar_Result
- movs r0, 0x5
- strh r0, [r1]
- b _08117ECA
- .align 2, 0
-_08117E44: .4byte gUnknown_84571B8
-_08117E48: .4byte gSpecialVar_Result
-_08117E4C:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08117E64
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08117E6A
-_08117E64:
- movs r0, 0xD
- strb r0, [r5, 0xC]
- b _08117ECA
-_08117E6A:
- ldr r0, _08117E7C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08117ECA
- movs r0, 0x1
- bl sub_80FAFE0
- b _08117EB2
- .align 2, 0
-_08117E7C: .4byte gReceivedRemoteLinkPlayers
-_08117E80:
- ldrb r0, [r5, 0x12]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r5, 0xF]
- bl RemoveWindow
- ldrb r0, [r5, 0x17]
- bl DestroyTask
- ldr r0, [r5, 0x8]
- bl Free
- ldr r0, [r5]
- bl Free
- ldr r0, [r5, 0x4]
- bl Free
- bl sub_800AB9C
-_08117EB2:
- ldrb r0, [r5, 0xC]
- adds r0, 0x1
- strb r0, [r5, 0xC]
- b _08117ECA
-_08117EBA:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08117ECA
- adds r0, r4, 0
- bl DestroyTask
-_08117ECA:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8117A0C
-
- thumb_func_start MEvent_CreateTask_CardOrNewsWithFriend
-MEvent_CreateTask_CardOrNewsWithFriend: @ 8117ED4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08117F0C @ =sub_8117F20
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08117F10 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08117F14 @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _08117F18 @ =gUnknown_3002028
- str r1, [r0]
- movs r2, 0
- strb r2, [r1, 0x8]
- strb r2, [r1, 0x9]
- subs r4, 0x15
- strb r4, [r1, 0x12]
- ldr r0, _08117F1C @ =gSpecialVar_Result
- strh r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08117F0C: .4byte sub_8117F20
-_08117F10: .4byte gUnknown_203B05C
-_08117F14: .4byte gTasks+0x8
-_08117F18: .4byte gUnknown_3002028
-_08117F1C: .4byte gSpecialVar_Result
- thumb_func_end MEvent_CreateTask_CardOrNewsWithFriend
-
- thumb_func_start sub_8117F20
-sub_8117F20: @ 8117F20
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08117F40 @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0x8]
- cmp r0, 0xC
- bls _08117F34
- b _08118288
-_08117F34:
- lsls r0, 2
- ldr r1, _08117F44 @ =_08117F48
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08117F40: .4byte gUnknown_203B05C
-_08117F44: .4byte _08117F48
- .align 2, 0
-_08117F48:
- .4byte _08117F7C
- .4byte _08117FB0
- .4byte _08117FC0
- .4byte _08118070
- .4byte _08118150
- .4byte _0811818C
- .4byte _081181EC
- .4byte _08118248
- .4byte _081181EC
- .4byte _08118222
- .4byte _081181EC
- .4byte _0811826C
- .4byte _08118278
-_08117F7C:
- ldrb r0, [r5, 0x12]
- adds r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBBD8
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0x4]
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r5]
- movs r0, 0x1
- strb r0, [r5, 0x8]
- b _08118288
-_08117FB0:
- ldr r0, _08117FBC @ =gUnknown_8458FE4
- bl AddTextPrinterToWindow1
- movs r0, 0x2
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_08117FBC: .4byte gUnknown_8458FE4
-_08117FC0:
- ldr r0, [r5, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r5]
- movs r1, 0x10
- bl sub_811A5E4
- ldr r0, [r5, 0x4]
- ldrb r1, [r5, 0x12]
- adds r1, 0x7
- bl sub_811A054
- movs r4, 0
- strb r0, [r5, 0x11]
- ldr r0, _0811805C @ =gUnknown_8456D4C
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- bl GetMysteryGiftBaseBlock
- lsls r0, 16
- ldr r2, _08118060 @ =0x0000ffff
- ldr r1, [sp, 0x4]
- ands r1, r2
- orrs r1, r0
- str r1, [sp, 0x4]
- mov r0, sp
- bl AddWindow
- strb r0, [r5, 0xB]
- ldr r0, _08118064 @ =gUnknown_8456D54
- bl AddWindow
- strb r0, [r5, 0xD]
- ldrb r0, [r5, 0xB]
- bl MG_DrawTextBorder
- ldr r0, _08118068 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _0811806C @ =gUnknown_8456DDC
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldrb r1, [r5, 0xB]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r5, 0xE]
- ldrb r0, [r5, 0xD]
- bl MG_DrawTextBorder
- ldrb r0, [r5, 0xD]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r5, 0xD]
- bl PutWindowTilemap
- ldrb r0, [r5, 0xD]
- bl sub_8115924
- ldrb r0, [r5, 0xD]
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- strb r4, [r5, 0xF]
- movs r0, 0x3
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_0811805C: .4byte gUnknown_8456D4C
-_08118060: .4byte 0x0000ffff
-_08118064: .4byte gUnknown_8456D54
-_08118068: .4byte gMultiuseListMenuTemplate
-_0811806C: .4byte gUnknown_8456DDC
-_08118070:
- bl sub_8116FE4
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0811808E
- cmp r2, 0x1
- bne _08118086
- movs r0, 0x2
- bl PlaySE
-_08118086:
- ldrb r0, [r5, 0xE]
- bl RedrawListMenu
- b _08118288
-_0811808E:
- ldrb r0, [r5, 0xE]
- bl ListMenu_ProcessInput
- adds r2, r0, 0
- ldr r0, _08118128 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08118138
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- beq _08118138
- ldr r0, [r5]
- lsls r1, r2, 5
- adds r0, r1
- ldrb r1, [r0, 0xA]
- ldrb r0, [r0, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08118130
- lsrs r0, r1, 7
- cmp r0, 0
- bne _08118130
- strb r2, [r5, 0xF]
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- ldrb r0, [r5, 0xE]
- bl RedrawListMenu
- ldr r4, _0811812C @ =gStringVar1
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- ldr r1, [r5]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldrb r1, [r5, 0xF]
- lsls r1, 5
- ldr r0, [r5]
- adds r0, r1
- adds r4, r0, 0
- adds r4, 0x10
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_80FBF54
- movs r0, 0x67
- bl PlaySE
- movs r0, 0x4
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_08118128: .4byte gMain
-_0811812C: .4byte gStringVar1
-_08118130:
- movs r0, 0x7
- bl PlaySE
- b _08118288
-_08118138:
- ldr r0, _0811814C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08118146
- b _08118288
-_08118146:
- movs r0, 0x6
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_0811814C: .4byte gMain
-_08118150:
- ldr r0, _08118184 @ =gUnknown_8459238
- bl AddTextPrinterToWindow1
- ldr r4, _08118188 @ =gStringVar1
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- ldr r1, [r5]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- movs r0, 0x5
- strb r0, [r5, 0x8]
- b _08118288
- .align 2, 0
-_08118184: .4byte gUnknown_8459238
-_08118188: .4byte gStringVar1
-_0811818C:
- ldr r0, _081181C4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _081181AA
- ldr r2, _081181C8 @ =gUnknown_203B058
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 25
- lsrs r0, 25
- strb r0, [r2]
- movs r0, 0xA
- strb r0, [r5, 0x8]
-_081181AA:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _081181D6
- cmp r0, 0x5
- bgt _081181CC
- cmp r0, 0x2
- bgt _08118288
- cmp r0, 0x1
- blt _08118288
- b _081181D0
- .align 2, 0
-_081181C4: .4byte gReceivedRemoteLinkPlayers
-_081181C8: .4byte gUnknown_203B058
-_081181CC:
- cmp r0, 0x6
- bne _08118288
-_081181D0:
- movs r0, 0x8
- strb r0, [r5, 0x8]
- b _08118288
-_081181D6:
- ldr r0, _081181E8 @ =gUnknown_84576AC
- bl AddTextPrinterToWindow1
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- b _08118288
- .align 2, 0
-_081181E8: .4byte gUnknown_84576AC
-_081181EC:
- ldrb r0, [r5, 0xE]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r5, 0xD]
- bl RemoveWindow
- ldrb r0, [r5, 0xB]
- bl RemoveWindow
- ldrb r0, [r5, 0x11]
- bl DestroyTask
- ldr r0, [r5]
- bl Free
- ldr r0, [r5, 0x4]
- bl Free
- ldrb r0, [r5, 0x8]
- adds r0, 0x1
- strb r0, [r5, 0x8]
- b _08118288
-_08118222:
- adds r5, 0x9
- ldr r4, _08118244 @ =gUnknown_8457838
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 22
- adds r0, r4
- ldr r1, [r0]
- adds r0, r5, 0
- bl MG_PrintTextOnWindow1AndWaitButton
- cmp r0, 0
- beq _08118288
- bl DestroyWirelessStatusIndicatorSprite
- b _08118252
- .align 2, 0
-_08118244: .4byte gUnknown_8457838
-_08118248:
- bl DestroyWirelessStatusIndicatorSprite
- ldr r0, _08118264 @ =gUnknown_84571B8
- bl AddTextPrinterToWindow1
-_08118252:
- adds r0, r6, 0
- bl DestroyTask
- bl sub_80F8DC0
- ldr r1, _08118268 @ =gSpecialVar_Result
- movs r0, 0x5
- strh r0, [r1]
- b _08118288
- .align 2, 0
-_08118264: .4byte gUnknown_84571B8
-_08118268: .4byte gSpecialVar_Result
-_0811826C:
- ldrb r0, [r5, 0x8]
- adds r0, 0x1
- strb r0, [r5, 0x8]
- bl sub_800AB9C
- b _08118288
-_08118278:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08118288
- adds r0, r6, 0
- bl DestroyTask
-_08118288:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8117F20
-
- thumb_func_start MEvent_CreateTask_CardOrNewsOverWireless
-MEvent_CreateTask_CardOrNewsOverWireless: @ 8118290
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _081182C8 @ =sub_81182DC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081182CC @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _081182D0 @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _081182D4 @ =gUnknown_3002028
- str r1, [r0]
- movs r2, 0
- strb r2, [r1, 0x8]
- strb r2, [r1, 0x9]
- subs r4, 0x15
- strb r4, [r1, 0x12]
- ldr r0, _081182D8 @ =gSpecialVar_Result
- strh r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081182C8: .4byte sub_81182DC
-_081182CC: .4byte gUnknown_203B05C
-_081182D0: .4byte gTasks+0x8
-_081182D4: .4byte gUnknown_3002028
-_081182D8: .4byte gSpecialVar_Result
- thumb_func_end MEvent_CreateTask_CardOrNewsOverWireless
-
- thumb_func_start sub_81182DC
-sub_81182DC: @ 81182DC
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081182FC @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0x8]
- cmp r0, 0xE
- bls _081182F0
- b _08118604
-_081182F0:
- lsls r0, 2
- ldr r1, _08118300 @ =_08118304
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081182FC: .4byte gUnknown_203B05C
-_08118300: .4byte _08118304
- .align 2, 0
-_08118304:
- .4byte _08118340
- .4byte _0811836E
- .4byte _08118380
- .4byte _08118408
- .4byte _081184C8
- .4byte _08118504
- .4byte _08118564
- .4byte _081185A8
- .4byte _08118564
- .4byte _0811859A
- .4byte _08118564
- .4byte _081185B4
- .4byte _08118564
- .4byte _081185E8
- .4byte _081185F4
-_08118340:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBBD8
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0x4]
- movs r0, 0x80
- lsls r0, 2
- bl AllocZeroed
- str r0, [r5]
- movs r0, 0x1
- strb r0, [r5, 0x8]
- b _08118604
-_0811836E:
- ldr r0, _0811837C @ =gUnknown_84591DC
- bl AddTextPrinterToWindow1
- movs r0, 0x2
- strb r0, [r5, 0x8]
- b _08118604
- .align 2, 0
-_0811837C: .4byte gUnknown_84591DC
-_08118380:
- ldr r0, [r5, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r5]
- movs r1, 0x10
- bl sub_811A5E4
- ldr r0, [r5, 0x4]
- ldrb r1, [r5, 0x12]
- adds r1, 0x7
- bl sub_811A084
- strb r0, [r5, 0x11]
- ldrb r0, [r5, 0x13]
- cmp r0, 0
- beq _081183EC
- ldr r0, _081183F8 @ =gUnknown_8456D4C
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- bl GetMysteryGiftBaseBlock
- lsls r0, 16
- ldr r2, _081183FC @ =0x0000ffff
- ldr r1, [sp, 0x4]
- ands r1, r2
- orrs r1, r0
- str r1, [sp, 0x4]
- mov r0, sp
- bl AddWindow
- strb r0, [r5, 0xB]
- ldrb r0, [r5, 0xB]
- bl MG_DrawTextBorder
- ldr r0, _08118400 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, _08118404 @ =gUnknown_8456DDC
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldrb r1, [r5, 0xB]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- strb r0, [r5, 0xE]
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_081183EC:
- movs r0, 0
- strb r0, [r5, 0xF]
- movs r0, 0x3
- strb r0, [r5, 0x8]
- b _08118604
- .align 2, 0
-_081183F8: .4byte gUnknown_8456D4C
-_081183FC: .4byte 0x0000ffff
-_08118400: .4byte gMultiuseListMenuTemplate
-_08118404: .4byte gUnknown_8456DDC
-_08118408:
- bl sub_8116FE4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0811842E
- cmp r0, 0x1
- bne _0811841E
- movs r0, 0x2
- bl PlaySE
-_0811841E:
- ldrb r0, [r5, 0x13]
- cmp r0, 0
- bne _08118426
- b _08118604
-_08118426:
- ldrb r0, [r5, 0xE]
- bl RedrawListMenu
- b _08118604
-_0811842E:
- ldrb r0, [r5, 0x13]
- cmp r0, 0
- beq _0811843A
- ldrb r0, [r5, 0xE]
- bl ListMenu_ProcessInput
-_0811843A:
- ldrb r0, [r5, 0x14]
- cmp r0, 0x78
- bls _081184A8
- ldr r2, [r5]
- ldrb r1, [r2, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _081184BC
- ldrb r1, [r2, 0xA]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081184BC
- ldrb r1, [r5, 0x12]
- adds r1, 0x7
- adds r0, r2, 0
- bl sub_8119FB0
- cmp r0, 0
- beq _0811849C
- strb r4, [r5, 0xF]
- strb r4, [r5, 0x14]
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- ldr r0, [r5]
- adds r4, r0, 0
- adds r4, 0x10
- adds r0, 0x2
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_80FBF54
- movs r0, 0x67
- bl PlaySE
- movs r0, 0x4
- strb r0, [r5, 0x8]
- b _081184BC
-_0811849C:
- movs r0, 0x16
- bl PlaySE
- movs r0, 0xA
- strb r0, [r5, 0x8]
- b _081184BC
-_081184A8:
- ldr r0, _081184C4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081184BC
- movs r1, 0
- movs r0, 0x6
- strb r0, [r5, 0x8]
- strb r1, [r5, 0x14]
-_081184BC:
- ldrb r0, [r5, 0x14]
- adds r0, 0x1
- strb r0, [r5, 0x14]
- b _08118604
- .align 2, 0
-_081184C4: .4byte gMain
-_081184C8:
- ldr r0, _081184FC @ =gUnknown_845928C
- bl AddTextPrinterToWindow1
- ldr r4, _08118500 @ =gStringVar1
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- ldr r1, [r5]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- movs r0, 0x5
- strb r0, [r5, 0x8]
- b _08118604
- .align 2, 0
-_081184FC: .4byte gUnknown_845928C
-_08118500: .4byte gStringVar1
-_08118504:
- ldr r0, _0811853C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08118522
- ldr r2, _08118540 @ =gUnknown_203B058
- ldr r1, [r5]
- ldrb r0, [r5, 0xF]
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 25
- lsrs r0, 25
- strb r0, [r2]
- movs r0, 0xC
- strb r0, [r5, 0x8]
-_08118522:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _0811854E
- cmp r0, 0x5
- bgt _08118544
- cmp r0, 0x2
- bgt _08118604
- cmp r0, 0x1
- blt _08118604
- b _08118548
- .align 2, 0
-_0811853C: .4byte gReceivedRemoteLinkPlayers
-_08118540: .4byte gUnknown_203B058
-_08118544:
- cmp r0, 0x6
- bne _08118604
-_08118548:
- movs r0, 0x8
- strb r0, [r5, 0x8]
- b _08118604
-_0811854E:
- ldr r0, _08118560 @ =gUnknown_845777C
- bl AddTextPrinterToWindow1
- movs r0, 0
- movs r1, 0
- bl sub_80FB9E4
- b _08118604
- .align 2, 0
-_08118560: .4byte gUnknown_845777C
-_08118564:
- ldrb r0, [r5, 0x13]
- cmp r0, 0
- beq _08118580
- ldrb r0, [r5, 0xE]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldrb r0, [r5, 0xB]
- bl RemoveWindow
-_08118580:
- ldrb r0, [r5, 0x11]
- bl DestroyTask
- ldr r0, [r5]
- bl Free
- ldr r0, [r5, 0x4]
- bl Free
- ldrb r0, [r5, 0x8]
- adds r0, 0x1
- strb r0, [r5, 0x8]
- b _08118604
-_0811859A:
- adds r0, r5, 0
- adds r0, 0x9
- ldr r1, _081185A4 @ =gUnknown_84577BC
- b _081185C2
- .align 2, 0
-_081185A4: .4byte gUnknown_84577BC
-_081185A8:
- adds r0, r5, 0
- adds r0, 0x9
- ldr r1, _081185B0 @ =gUnknown_84571E0
- b _081185C2
- .align 2, 0
-_081185B0: .4byte gUnknown_84571E0
-_081185B4:
- adds r0, r5, 0
- adds r0, 0x9
- ldr r2, _081185E0 @ =gUnknown_845933C
- ldrb r1, [r5, 0x12]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
-_081185C2:
- bl MG_PrintTextOnWindow1AndWaitButton
- cmp r0, 0
- beq _08118604
- bl DestroyWirelessStatusIndicatorSprite
- adds r0, r4, 0
- bl DestroyTask
- bl sub_80F8DC0
- ldr r1, _081185E4 @ =gSpecialVar_Result
- movs r0, 0x5
- strh r0, [r1]
- b _08118604
- .align 2, 0
-_081185E0: .4byte gUnknown_845933C
-_081185E4: .4byte gSpecialVar_Result
-_081185E8:
- ldrb r0, [r5, 0x8]
- adds r0, 0x1
- strb r0, [r5, 0x8]
- bl sub_800AB9C
- b _08118604
-_081185F4:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08118604
- adds r0, r4, 0
- bl DestroyTask
-_08118604:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81182DC
-
- thumb_func_start UnionRoomSpecial
-UnionRoomSpecial: @ 811860C
- push {r4,lr}
- bl ClearAndInitHostRFUtgtGname
- ldr r0, _08118648 @ =sub_81186E0
- movs r1, 0xA
- bl CreateTask
- ldr r4, _0811864C @ =gUnknown_203B05C
- movs r0, 0x96
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- ldr r1, _08118650 @ =gUnknown_300202C
- str r0, [r1]
- movs r1, 0
- strb r1, [r0, 0x14]
- strb r1, [r0, 0x16]
- strh r1, [r0, 0x10]
- strh r1, [r0, 0x12]
- ldr r0, _08118654 @ =gSpecialVar_Result
- strh r1, [r0]
- movs r0, 0xD0
- movs r1, 0x1
- bl sub_8107D38
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08118648: .4byte sub_81186E0
-_0811864C: .4byte gUnknown_203B05C
-_08118650: .4byte gUnknown_300202C
-_08118654: .4byte gSpecialVar_Result
- thumb_func_end UnionRoomSpecial
-
- thumb_func_start sub_8118658
-sub_8118658: @ 8118658
- ldrb r1, [r0, 0x1]
- lsls r1, 8
- ldrb r0, [r0]
- orrs r0, r1
- bx lr
- thumb_func_end sub_8118658
-
- thumb_func_start sub_8118664
-sub_8118664: @ 8118664
- push {lr}
- adds r3, r1, 0
- ldr r1, _08118684 @ =gUnknown_203B05C
- ldr r2, [r1]
- movs r1, 0x8
- strb r1, [r2, 0x14]
- strb r0, [r2, 0x15]
- ldr r0, _08118688 @ =gStringVar4
- cmp r3, r0
- beq _0811867E
- adds r1, r3, 0
- bl StringExpandPlaceholders
-_0811867E:
- pop {r0}
- bx r0
- .align 2, 0
-_08118684: .4byte gUnknown_203B05C
-_08118688: .4byte gStringVar4
- thumb_func_end sub_8118664
-
- thumb_func_start sub_811868C
-sub_811868C: @ 811868C
- push {lr}
- adds r2, r0, 0
- ldr r0, _081186A8 @ =gUnknown_203B05C
- ldr r1, [r0]
- movs r0, 0x1A
- strb r0, [r1, 0x14]
- ldr r0, _081186AC @ =gStringVar4
- cmp r2, r0
- beq _081186A4
- adds r1, r2, 0
- bl StringExpandPlaceholders
-_081186A4:
- pop {r0}
- bx r0
- .align 2, 0
-_081186A8: .4byte gUnknown_203B05C
-_081186AC: .4byte gStringVar4
- thumb_func_end sub_811868C
-
- thumb_func_start sub_81186B0
-sub_81186B0: @ 81186B0
- push {lr}
- ldr r3, _081186C4 @ =gDecompressionBuffer + 0x3F00
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r3, 0
- bl memcpy
- pop {r0}
- bx r0
- .align 2, 0
-_081186C4: .4byte gDecompressionBuffer + 0x3F00
- thumb_func_end sub_81186B0
-
- thumb_func_start sub_81186C8
-sub_81186C8: @ 81186C8
- push {lr}
- ldr r0, [r0]
- ldr r1, _081186DC @ =gDecompressionBuffer + 0x3F00
- movs r2, 0x80
- lsls r2, 1
- bl memcpy
- pop {r0}
- bx r0
- .align 2, 0
-_081186DC: .4byte gDecompressionBuffer + 0x3F00
- thumb_func_end sub_81186C8
-
- thumb_func_start sub_81186E0
-sub_81186E0: @ 81186E0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- movs r5, 0
- ldr r0, _08118710 @ =gUnknown_203B05C
- ldr r6, [r0]
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08118714 @ =gTasks+0x8
- adds r7, r0, r1
- ldrb r0, [r6, 0x14]
- cmp r0, 0x38
- bls _08118706
- bl _081198DC
-_08118706:
- lsls r0, 2
- ldr r1, _08118718 @ =_0811871C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08118710: .4byte gUnknown_203B05C
-_08118714: .4byte gTasks+0x8
-_08118718: .4byte _0811871C
- .align 2, 0
-_0811871C:
- .4byte _08118800
- .4byte _08118858
- .4byte _0811887C
- .4byte _081188CC
- .4byte _081189AA
- .4byte _08118E60
- .4byte _08118C58
- .4byte _08118E60
- .4byte _081198C8
- .4byte _081191D4
- .4byte _081192E0
- .4byte _081190B0
- .4byte _081190CA
- .4byte _08119330
- .4byte _08119354
- .4byte _0811935C
- .4byte _0811936C
- .4byte _0811939A
- .4byte _081193AE
- .4byte _08118F36
- .4byte _08118FBC
- .4byte _08118FDA
- .4byte _0811904E
- .4byte _08118ADE
- .4byte _08118B04
- .4byte _08118B7C
- .4byte _0811989C
- .4byte _08118D50
- .4byte _08118D38
- .4byte _08118DD4
- .4byte _08118C2E
- .4byte _08118DAA
- .4byte _08118DA0
- .4byte _08119164
- .4byte _08119184
- .4byte _081191C4
- .4byte _081192E8
- .4byte _08119324
- .4byte _08118BF8
- .4byte _0811910C
- .4byte _08118E98
- .4byte _08118EC8
- .4byte _081193D8
- .4byte _08119468
- .4byte _081195B8
- .4byte _08119620
- .4byte _0811963C
- .4byte _08119484
- .4byte _08119644
- .4byte _08119784
- .4byte _081197B8
- .4byte _08119840
- .4byte _0811953C
- .4byte _081194F0
- .4byte _08119504
- .4byte _0811959C
- .4byte _081195EC
-_08118800:
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r6, 0x4]
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r6, 0xC]
- movs r0, 0x80
- lsls r0, 1
- bl AllocZeroed
- str r0, [r6]
- movs r0, 0x20
- bl AllocZeroed
- str r0, [r6, 0x8]
- ldr r0, [r6]
- movs r1, 0x8
- bl sub_811A5E4
- ldr r1, _08118854 @ =gUnknown_203B058
- movs r0, 0x40
- strb r0, [r1]
- ldr r0, [r6, 0xC]
- ldr r1, [r6, 0x4]
- movs r2, 0x9
- bl sub_8119E84
- adds r1, r6, 0
- adds r1, 0x20
- strb r0, [r1]
- adds r0, r6, 0
- adds r0, 0x8C
- bl sub_811B754
- bl sub_811BB68
- movs r0, 0x1
- bl _081198DA
- .align 2, 0
-_08118854: .4byte gUnknown_203B058
-_08118858:
- adds r0, r6, 0
- adds r0, 0x21
- movs r2, 0
- ldrsh r1, [r7, r2]
- bl sub_811BAAC
- ldrh r0, [r7]
- adds r0, 0x1
- strh r0, [r7]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- beq _08118876
- bl _081198DC
-_08118876:
- movs r0, 0x2
- bl _081198DA
-_0811887C:
- movs r0, 0x40
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- ldr r2, _081188C4 @ =gUnknown_203B06C
- ldrh r0, [r2, 0x2]
- ldrh r1, [r2, 0xA]
- ldrh r2, [r2, 0xC]
- bl sub_80FAFA0
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBC00
- ldr r0, [r6, 0x8]
- movs r1, 0x1
- bl sub_811A5E4
- ldr r0, [r6, 0x4]
- movs r1, 0x4
- bl sub_811A650
- ldr r0, [r6, 0xC]
- movs r1, 0x4
- bl sub_811A650
- ldr r1, _081188C8 @ =gSpecialVar_Result
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x3
- bl _081198DA
- .align 2, 0
-_081188C4: .4byte gUnknown_203B06C
-_081188C8: .4byte gSpecialVar_Result
-_081188CC:
- bl GetPartyMenuType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8
- beq _081188E4
- bl GetPartyMenuType
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x9
- bne _081189A4
-_081188E4:
- ldr r4, _08118900 @ =gUnknown_203B06C
- ldrh r0, [r4]
- cmp r0, 0
- beq _081189A4
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _08118904
- cmp r0, 0x2
- beq _08118954
- b _08118992
- .align 2, 0
-_08118900: .4byte gUnknown_203B06C
-_08118904:
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- cmp r5, 0x5
- bls _08118930
- adds r0, r4, 0
- bl sub_811B148
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAFA0
- ldr r0, _0811892C @ =gUnknown_8458D54
- bl sub_811868C
- b _08118992
- .align 2, 0
-_0811892C: .4byte gUnknown_8458D54
-_08118930:
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_811B16C
- cmp r0, 0
- bne _08118950
- ldr r1, _0811894C @ =gUnknown_8458CD4
- movs r0, 0x34
- bl sub_8118664
- b _08118992
- .align 2, 0
-_0811894C: .4byte gUnknown_8458CD4
-_08118950:
- movs r0, 0x37
- b _08118990
-_08118954:
- adds r0, r6, 0
- bl sub_81186C8
- ldrb r0, [r4, 0x8]
- strh r0, [r7, 0x2]
- cmp r5, 0x5
- bls _08118970
- ldr r0, _0811896C @ =gUnknown_8458D9C
- bl sub_811868C
- b _08118992
- .align 2, 0
-_0811896C: .4byte gUnknown_8458D9C
-_08118970:
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- ldr r1, _0811899C @ =gUnknown_203B058
- movs r0, 0x44
- strb r0, [r1]
- bl GetCursorSelectionMonId
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_811B1B4
- movs r0, 0x33
-_08118990:
- strb r0, [r6, 0x14]
-_08118992:
- ldr r1, _081189A0 @ =gUnknown_203B06C
- movs r0, 0
- strh r0, [r1]
- bl _081198DC
- .align 2, 0
-_0811899C: .4byte gUnknown_203B058
-_081189A0: .4byte gUnknown_203B06C
-_081189A4:
- movs r0, 0x4
- bl _081198DA
-_081189AA:
- ldr r4, _081189D8 @ =gSpecialVar_Result
- ldrh r0, [r4]
- cmp r0, 0
- beq _08118A0E
- cmp r0, 0x9
- bne _081189E4
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- movs r0, 0x2
- bl PlaySE
- ldr r0, _081189DC @ =gStringVar1
- ldr r1, _081189E0 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- movs r1, 0
- movs r0, 0x2A
- b _08118A06
- .align 2, 0
-_081189D8: .4byte gSpecialVar_Result
-_081189DC: .4byte gStringVar1
-_081189E0: .4byte gSaveBlock2Ptr
-_081189E4:
- cmp r0, 0xB
- bne _081189F8
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- movs r1, 0
- movs r0, 0x17
- b _08118A06
-_081189F8:
- movs r0, 0
- strh r0, [r7]
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r7, 0x2]
- movs r1, 0
- movs r0, 0x18
-_08118A06:
- strb r0, [r6, 0x14]
- strh r1, [r4]
- bl _081198DC
-_08118A0E:
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08118A1E
- bl _081198DC
-_08118A1E:
- ldr r0, _08118A4C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08118A84
- ldr r0, [r6]
- adds r2, r7, 0x2
- adds r3, r6, 0
- adds r3, 0x21
- adds r1, r7, 0
- bl sub_811BF00
- cmp r0, 0
- beq _08118A50
- movs r0, 0x5
- bl PlaySE
- bl sub_811B298
- movs r0, 0x18
- bl _081198DA
- .align 2, 0
-_08118A4C: .4byte gMain
-_08118A50:
- bl sub_811A9B8
- cmp r0, 0
- beq _08118A84
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- movs r0, 0x2
- bl PlaySE
- bl sub_811B298
- ldr r0, _08118A7C @ =gStringVar1
- ldr r1, _08118A80 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0x2D
- bl _081198DA
- .align 2, 0
-_08118A7C: .4byte gStringVar1
-_08118A80: .4byte gSaveBlock2Ptr
-_08118A84:
- bl sub_8119B94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _08118AA6
- cmp r0, 0x2
- bgt _08118A9A
- cmp r0, 0x1
- beq _08118AA0
- b _08118AD4
-_08118A9A:
- cmp r0, 0x4
- beq _08118AAE
- b _08118AD4
-_08118AA0:
- movs r0, 0x37
- bl PlaySE
-_08118AA6:
- adds r0, r6, 0
- bl sub_811BECC
- b _08118AD4
-_08118AAE:
- movs r0, 0xB
- strb r0, [r6, 0x14]
- bl sub_811B298
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAFA0
- adds r0, r6, 0
- bl sub_811B2D8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x53
- movs r2, 0
- bl sub_80FB008
-_08118AD4:
- adds r0, r6, 0
- bl sub_811BEDC
- bl _081198DC
-_08118ADE:
- ldr r0, _08118B00 @ =Task_StartMenuHandleInput
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08118AEE
- bl _081198DC
-_08118AEE:
- movs r0, 0x40
- movs r1, 0
- movs r2, 0
- bl sub_80FB008
- movs r0, 0x4
- bl _081198DA
- .align 2, 0
-_08118B00: .4byte Task_StartMenuHandleInput
-_08118B04:
- bl sub_811A0E0
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- ldr r0, [r6]
- ldrb r1, [r7]
- ldrb r2, [r7, 0x2]
- adds r3, r4, 0
- bl sub_811AA5C
- cmp r0, 0x1
- beq _08118B48
- cmp r0, 0x1
- bgt _08118B3A
- cmp r0, 0
- beq _08118B42
- bl _081198DC
-_08118B3A:
- cmp r0, 0x2
- beq _08118B6C
- bl _081198DC
-_08118B42:
- movs r0, 0x1A
- bl _081198DA
-_08118B48:
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r0, r1, 0
- adds r0, 0x10
- ldr r2, _08118B68 @ =gUnknown_203B058
- ldrb r2, [r2]
- bl sub_80FC114
- strh r5, [r6, 0x12]
- movs r0, 0x19
- bl _081198DA
- .align 2, 0
-_08118B68: .4byte gUnknown_203B058
-_08118B6C:
- ldr r1, _08118B78 @ =gStringVar4
- movs r0, 0x13
- bl sub_8118664
- bl _081198DC
- .align 2, 0
-_08118B78: .4byte gStringVar4
-_08118B7C:
- bl sub_811A0E0
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- blt _08118BC2
- cmp r4, 0x2
- ble _08118B9E
- cmp r4, 0x4
- bne _08118BC2
- movs r0, 0x1
- bl sub_811B258
- strb r4, [r6, 0x14]
- b _08118BC2
-_08118B9E:
- bl sub_80FBB0C
- cmp r0, 0x1
- bne _08118BB4
- ldr r0, _08118BB0 @ =gUnknown_8457F90
- bl sub_811868C
- b _08118BBC
- .align 2, 0
-_08118BB0: .4byte gUnknown_8457F90
-_08118BB4:
- ldr r1, _08118BE4 @ =gUnknown_8457F90
- movs r0, 0x1E
- bl sub_8118664
-_08118BBC:
- ldr r1, _08118BE8 @ =gUnknown_203B058
- movs r0, 0x40
- strb r0, [r1]
-_08118BC2:
- ldr r0, _08118BEC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08118BCE
- bl _081198DC
-_08118BCE:
- ldr r0, _08118BF0 @ =gBlockSendBuffer
- movs r1, 0x1
- bl sub_8117594
- ldr r0, _08118BF4 @ =sub_8117280
- movs r1, 0x5
- bl CreateTask
- movs r0, 0x26
- bl _081198DA
- .align 2, 0
-_08118BE4: .4byte gUnknown_8457F90
-_08118BE8: .4byte gUnknown_203B058
-_08118BEC: .4byte gReceivedRemoteLinkPlayers
-_08118BF0: .4byte gBlockSendBuffer
-_08118BF4: .4byte sub_8117280
-_08118BF8:
- ldr r0, _08118C1C @ =sub_8117280
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08118C08
- bl _081198DC
-_08118C08:
- ldr r0, _08118C20 @ =gUnknown_203B058
- ldrb r0, [r0]
- cmp r0, 0x44
- bne _08118C28
- ldr r1, _08118C24 @ =gUnknown_84578BC
- movs r0, 0x1F
- bl sub_8118664
- bl _081198DC
- .align 2, 0
-_08118C1C: .4byte sub_8117280
-_08118C20: .4byte gUnknown_203B058
-_08118C24: .4byte gUnknown_84578BC
-_08118C28:
- movs r0, 0x5
- bl _081198DA
-_08118C2E:
- ldr r0, _08118C54 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08118C3A
- bl _081198DC
-_08118C3A:
- movs r0, 0
- bl sub_811B258
- movs r2, 0
- ldrsh r0, [r7, r2]
- movs r3, 0x2
- ldrsh r1, [r7, r3]
- ldr r2, [r6]
- bl sub_811C028
- movs r0, 0x2
- bl _081198DA
- .align 2, 0
-_08118C54: .4byte gReceivedRemoteLinkPlayers
-_08118C58:
- adds r0, r6, 0
- adds r0, 0x16
- adds r1, r6, 0
- adds r1, 0x1B
- adds r2, r6, 0
- adds r2, 0x1C
- ldr r3, _08118C8C @ =gUnknown_8456DF4
- ldr r4, _08118C90 @ =gUnknown_8456E1C
- str r4, [sp]
- bl sub_811A218
- adds r5, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _08118C7C
- bl _081198DC
-_08118C7C:
- ldr r0, _08118C94 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08118C98
- movs r0, 0x1C
- bl _081198DA
- .align 2, 0
-_08118C8C: .4byte gUnknown_8456DF4
-_08118C90: .4byte gUnknown_8456E1C
-_08118C94: .4byte gReceivedRemoteLinkPlayers
-_08118C98:
- adds r1, r6, 0
- adds r1, 0x84
- movs r0, 0
- strh r0, [r1]
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- ldr r1, [r6]
- bl sub_811ADC4
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- beq _08118CB6
- cmp r5, 0x40
- bne _08118CE8
-_08118CB6:
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0x40
- strh r1, [r0]
- bl sub_80F9E2C
- ldr r0, _08118CDC @ =gStringVar4
- ldr r2, _08118CE0 @ =gUnknown_845842C
- ldr r1, _08118CE4 @ =gLinkPlayers
- ldrb r1, [r1, 0x13]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0x20
- bl _081198DA
- .align 2, 0
-_08118CDC: .4byte gStringVar4
-_08118CE0: .4byte gUnknown_845842C
-_08118CE4: .4byte gLinkPlayers
-_08118CE8:
- ldr r0, _08118D10 @ =gUnknown_203B058
- strb r5, [r0]
- ldr r1, _08118D14 @ =gUnknown_203B059
- lsrs r0, r5, 8
- strb r0, [r1]
- lsls r0, r5, 24
- lsrs r0, 24
- cmp r0, 0x41
- bne _08118D1C
- bl sub_811B0F0
- cmp r0, 0
- bne _08118D1C
- ldr r1, _08118D18 @ =gUnknown_845847C
- movs r0, 0x5
- bl sub_8118664
- bl _081198DC
- .align 2, 0
-_08118D10: .4byte gUnknown_203B058
-_08118D14: .4byte gUnknown_203B059
-_08118D18: .4byte gUnknown_845847C
-_08118D1C:
- ldr r0, _08118D34 @ =gUnknown_203B058
- ldrb r0, [r0]
- movs r1, 0x40
- orrs r1, r0
- adds r0, r6, 0
- adds r0, 0x4C
- strh r1, [r0]
- bl sub_80F9E2C
- movs r0, 0x1B
- bl _081198DA
- .align 2, 0
-_08118D34: .4byte gUnknown_203B058
-_08118D38:
- ldr r0, _08118D48 @ =gStringVar4
- ldr r1, _08118D4C @ =gUnknown_8458434
- bl StringCopy
- movs r0, 0x24
- bl _081198DA
- .align 2, 0
-_08118D48: .4byte gStringVar4
-_08118D4C: .4byte gUnknown_8458434
-_08118D50:
- adds r0, r6, 0
- bl sub_811B0A4
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- adds r0, r6, 0
- adds r0, 0x4C
- ldrh r1, [r0]
- movs r0, 0x3F
- ands r0, r1
- bl sub_811A9FC
- adds r5, r0, 0
- adds r0, r6, 0
- adds r0, 0x16
- ldr r3, _08118D9C @ =gUnknown_84580F4
- lsls r1, r5, 2
- lsls r2, r4, 4
- adds r1, r2
- adds r1, r3
- ldr r1, [r1]
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08118D90
- bl _081198DC
-_08118D90:
- movs r0, 0
- strh r0, [r7, 0x6]
- movs r0, 0x1D
- bl _081198DA
- .align 2, 0
-_08118D9C: .4byte gUnknown_84580F4
-_08118DA0:
- bl sub_800AAC0
- movs r0, 0x24
- bl _081198DA
-_08118DAA:
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0x44
- strh r1, [r0]
- ldr r2, _08118DD0 @ =gUnknown_203B06C
- ldrh r1, [r2, 0xE]
- adds r3, r6, 0
- adds r3, 0x4E
- strh r1, [r3]
- ldrh r2, [r2, 0x10]
- adds r1, r6, 0
- adds r1, 0x50
- strh r2, [r1]
- bl sub_80F9E2C
- movs r0, 0x1D
- bl _081198DA
- .align 2, 0
-_08118DD0: .4byte gUnknown_203B06C
-_08118DD4:
- ldr r0, _08118DEC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08118DF8
- ldr r0, _08118DF0 @ =gStringVar4
- ldr r1, _08118DF4 @ =gUnknown_8458434
- bl StringCopy
- movs r0, 0x1C
- bl _081198DA
- .align 2, 0
-_08118DEC: .4byte gReceivedRemoteLinkPlayers
-_08118DF0: .4byte gStringVar4
-_08118DF4: .4byte gUnknown_8458434
-_08118DF8:
- adds r0, r6, 0
- bl sub_811B0A4
- adds r0, r6, 0
- adds r0, 0x84
- ldrh r0, [r0]
- cmp r0, 0x51
- bne _08118E2E
- ldr r0, _08118E20 @ =gUnknown_203B058
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _08118E28
- ldr r0, _08118E24 @ =gStringVar4
- adds r1, r6, 0
- movs r2, 0
- bl sub_811B31C
- movs r0, 0x28
- bl _081198DA
- .align 2, 0
-_08118E20: .4byte gUnknown_203B058
-_08118E24: .4byte gStringVar4
-_08118E28:
- movs r0, 0xD
- bl _081198DA
-_08118E2E:
- cmp r0, 0x52
- beq _08118E36
- bl _081198DC
-_08118E36:
- movs r5, 0
- movs r0, 0x20
- strb r0, [r6, 0x14]
- ldr r0, _08118E54 @ =gStringVar4
- ldr r4, _08118E58 @ =gUnknown_203B058
- ldrb r2, [r4]
- movs r1, 0x40
- orrs r1, r2
- ldr r2, _08118E5C @ =gLinkPlayers
- ldrb r2, [r2, 0x13]
- bl sub_811AE68
- strb r5, [r4]
- bl _081198DC
- .align 2, 0
-_08118E54: .4byte gStringVar4
-_08118E58: .4byte gUnknown_203B058
-_08118E5C: .4byte gLinkPlayers
-_08118E60:
- movs r0, 0x2
- ldrsh r1, [r7, r0]
- lsls r1, 5
- ldr r0, [r6]
- adds r0, r1
- bl sub_811AA24
- adds r5, r0, 0
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- ldr r2, _08118E94 @ =gUnknown_8457B04
- lsls r0, r4, 2
- lsls r1, r5, 3
- adds r0, r1
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x6
- bl sub_8118664
- bl _081198DC
- .align 2, 0
-_08118E94: .4byte gUnknown_8457B04
-_08118E98:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08118EC4 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08118EAC
- bl _081198DC
-_08118EAC:
- movs r4, 0
- movs r0, 0x29
- strb r0, [r6, 0x14]
- bl sub_800AB9C
- adds r0, r6, 0
- adds r0, 0x84
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- bl _081198DC
- .align 2, 0
-_08118EC4: .4byte gStringVar4
-_08118EC8:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _08118ED6
- bl _081198DC
-_08118ED6:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _08118F30
- ldr r5, _08118F20 @ =gStringVar1
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r4, _08118F24 @ =gLinkPlayers + 8
- adds r1, r4
- adds r0, r5, 0
- bl StringCopy
- ldrh r0, [r4, 0x18]
- adds r4, 0x1C
- adds r1, r4, 0
- bl sub_80FD338
- adds r5, r0, 0
- ldr r0, _08118F28 @ =gStringVar4
- ldr r2, _08118F2C @ =gUnknown_8457C20
- lsls r1, r5, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringExpandPlaceholders
- movs r0, 0x21
- bl _081198DA
- .align 2, 0
-_08118F20: .4byte gStringVar1
-_08118F24: .4byte gLinkPlayers + 8
-_08118F28: .4byte gStringVar4
-_08118F2C: .4byte gUnknown_8457C20
-_08118F30:
- movs r0, 0x7
- bl _081198DA
-_08118F36:
- adds r0, r6, 0
- adds r0, 0x16
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r5, r0, 24
- cmp r5, 0
- beq _08118F60
- cmp r5, 0
- bgt _08118F58
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _08118F9C
- bl _081198DC
-_08118F58:
- cmp r5, 0x1
- beq _08118F9C
- bl _081198DC
-_08118F60:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r4, _08118F98 @ =gUnknown_203B058
- movs r0, 0x45
- strb r0, [r4]
- movs r0, 0x45
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r0, r1, 0
- adds r0, 0x10
- ldrb r2, [r4]
- bl sub_80FC114
- ldrh r0, [r7, 0x2]
- strh r0, [r6, 0x12]
- movs r0, 0x14
- strb r0, [r6, 0x14]
- strh r5, [r7, 0x6]
- bl _081198DC
- .align 2, 0
-_08118F98: .4byte gUnknown_203B058
-_08118F9C:
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- ldr r1, _08118FB8 @ =gUnknown_8458548
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- bl sub_811868C
- bl _081198DC
- .align 2, 0
-_08118FB8: .4byte gUnknown_8458548
-_08118FBC:
- ldrh r0, [r7, 0x4]
- adds r0, 0x1
- strh r0, [r7, 0x4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3C
- bgt _08118FCE
- bl _081198DC
-_08118FCE:
- movs r1, 0
- movs r0, 0x15
- strb r0, [r6, 0x14]
- strh r1, [r7, 0x4]
- bl _081198DC
-_08118FDA:
- bl sub_80FB9F4
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- beq _08119040
- cmp r4, 0x3
- ble _08118FF8
- cmp r4, 0x4
- bne _08119044
- movs r0, 0x1
- bl sub_811B258
- strb r4, [r6, 0x14]
- b _08119044
-_08118FF8:
- cmp r4, 0x1
- blt _08119044
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- bl sub_80FBB0C
- cmp r0, 0x1
- bne _0811902C
- ldr r0, _08119028 @ =gUnknown_84585E8
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_811868C
- b _08119044
- .align 2, 0
-_08119028: .4byte gUnknown_84585E8
-_0811902C:
- ldr r0, _0811903C @ =gUnknown_84585E8
- lsls r1, r4, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x1E
- bl sub_8118664
- b _08119044
- .align 2, 0
-_0811903C: .4byte gUnknown_84585E8
-_08119040:
- movs r0, 0x16
- strb r0, [r6, 0x14]
-_08119044:
- ldrh r0, [r7, 0x6]
- adds r0, 0x1
- strh r0, [r7, 0x6]
- bl _081198DC
-_0811904E:
- bl sub_80FBA00
- cmp r0, 0
- beq _08119096
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- ldr r1, [r6]
- bl sub_811ADC4
- adds r4, r0, 0
- movs r0, 0x54
- movs r1, 0
- movs r2, 0x1
- bl sub_80FB008
- bl sub_80FBB0C
- cmp r0, 0x1
- bne _08119088
- ldr r0, _08119084 @ =gUnknown_84585E8
- lsls r1, r4, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_811868C
- b _08119096
- .align 2, 0
-_08119084: .4byte gUnknown_84585E8
-_08119088:
- ldr r0, _081190A8 @ =gUnknown_84585E8
- lsls r1, r4, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x1E
- bl sub_8118664
-_08119096:
- ldr r0, _081190AC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _081190A2
- bl _081198DC
-_081190A2:
- movs r0, 0x10
- bl _081198DA
- .align 2, 0
-_081190A8: .4byte gUnknown_84585E8
-_081190AC: .4byte gReceivedRemoteLinkPlayers
-_081190B0:
- movs r0, 0x42
- bl PlaySE
- bl sub_80F8FA0
- movs r0, 0
- movs r1, 0xC
- strb r1, [r6, 0x14]
- adds r1, r6, 0
- adds r1, 0x86
- strh r0, [r1]
- bl _081198DC
-_081190CA:
- bl sub_80FBA00
- cmp r0, 0
- beq _081190DE
- movs r0, 0
- bl sub_811B258
- movs r0, 0x2
- bl _081198DA
-_081190DE:
- ldr r0, _08119100 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _081190EA
- bl _081198DC
-_081190EA:
- ldr r0, _08119104 @ =gBlockSendBuffer
- movs r1, 0x1
- bl sub_8117594
- ldr r0, _08119108 @ =sub_8117280
- movs r1, 0x5
- bl CreateTask
- movs r0, 0x27
- bl _081198DA
- .align 2, 0
-_08119100: .4byte gReceivedRemoteLinkPlayers
-_08119104: .4byte gBlockSendBuffer
-_08119108: .4byte sub_8117280
-_0811910C:
- adds r0, r6, 0
- bl sub_8119904
- ldr r0, _08119150 @ =sub_8117280
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08119122
- bl _081198DC
-_08119122:
- movs r0, 0x21
- strb r0, [r6, 0x14]
- ldr r0, _08119154 @ =gStringVar1
- ldr r4, _08119158 @ =gLinkPlayers + 0x24
- adds r1, r4, 0
- bl StringCopy
- adds r0, r4, 0
- subs r0, 0x24
- ldrh r0, [r0, 0x20]
- adds r1, r4, 0
- bl sub_80FD338
- adds r5, r0, 0
- ldr r0, _0811915C @ =gStringVar4
- ldr r2, _08119160 @ =gUnknown_8457BCC
- lsls r1, r5, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringExpandPlaceholders
- b _081198DC
- .align 2, 0
-_08119150: .4byte sub_8117280
-_08119154: .4byte gStringVar1
-_08119158: .4byte gLinkPlayers + 0x24
-_0811915C: .4byte gStringVar4
-_08119160: .4byte gUnknown_8457BCC
-_08119164:
- adds r0, r6, 0
- bl sub_8119904
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119180 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _0811917C
- b _081198DC
-_0811917C:
- movs r0, 0x22
- b _081198DA
- .align 2, 0
-_08119180: .4byte gStringVar4
-_08119184:
- adds r0, r6, 0
- bl sub_8119904
- adds r0, r6, 0
- bl sub_8119944
- cmp r0, 0
- bne _08119196
- b _081198DC
-_08119196:
- ldr r0, _081191B8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _081191A4
- b _081198DC
-_081191A4:
- movs r0, 0x1
- bl sub_80FBD6C
- ldr r0, _081191BC @ =gStringVar4
- ldr r1, _081191C0 @ =gUnknown_8457E60
- bl StringCopy
- movs r0, 0x24
- b _081198DA
- .align 2, 0
-_081191B8: .4byte gMain
-_081191BC: .4byte gStringVar4
-_081191C0: .4byte gUnknown_8457E60
-_081191C4:
- ldr r1, _081191D0 @ =gStringVar4
- movs r0, 0x9
- bl sub_8118664
- b _081198DC
- .align 2, 0
-_081191D0: .4byte gStringVar4
-_081191D4:
- adds r0, r6, 0
- adds r0, 0x16
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081191FA
- cmp r1, 0
- bgt _081191F4
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081192BA
- b _081198DC
-_081191F4:
- cmp r1, 0x1
- beq _081192BA
- b _081198DC
-_081191FA:
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0x51
- strh r1, [r0]
- ldr r1, _08119228 @ =gUnknown_203B058
- ldrb r1, [r1]
- adds r5, r0, 0
- cmp r1, 0x45
- bne _0811922C
- movs r4, 0x40
- orrs r4, r1
- movs r0, 0x1
- bl sub_811B2A8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- movs r2, 0
- bl sub_80FB008
- b _0811924A
- .align 2, 0
-_08119228: .4byte gUnknown_203B058
-_0811922C:
- movs r0, 0x40
- adds r4, r1, 0
- orrs r4, r0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_811B2A8
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_80FB008
-_0811924A:
- ldr r1, [r6, 0x8]
- movs r0, 0
- strb r0, [r1, 0x1B]
- strh r0, [r7, 0x6]
- ldr r0, _0811927C @ =gUnknown_203B058
- ldrb r0, [r0]
- cmp r0, 0x41
- bne _08119292
- bl sub_811B0F0
- cmp r0, 0
- bne _08119288
- movs r0, 0x52
- strh r0, [r5]
- adds r0, r5, 0
- bl sub_80F9E2C
- movs r0, 0xA
- strb r0, [r6, 0x14]
- ldr r0, _08119280 @ =gStringVar4
- ldr r1, _08119284 @ =gUnknown_84584C0
- bl StringCopy
- b _081198DC
- .align 2, 0
-_0811927C: .4byte gUnknown_203B058
-_08119280: .4byte gStringVar4
-_08119284: .4byte gUnknown_84584C0
-_08119288:
- adds r0, r5, 0
- bl sub_80F9E2C
- movs r0, 0xD
- b _081198DA
-_08119292:
- cmp r0, 0x48
- bne _081192B0
- adds r0, r5, 0
- bl sub_80F9E2C
- ldr r0, _081192AC @ =gStringVar4
- adds r1, r6, 0
- movs r2, 0x1
- bl sub_811B31C
- movs r0, 0x28
- b _081198DA
- .align 2, 0
-_081192AC: .4byte gStringVar4
-_081192B0:
- adds r0, r5, 0
- bl sub_80F9E2C
- movs r0, 0xD
- b _081198DA
-_081192BA:
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0x52
- strh r1, [r0]
- bl sub_80F9E2C
- movs r0, 0xA
- strb r0, [r6, 0x14]
- ldr r0, _081192D8 @ =gStringVar4
- ldr r1, _081192DC @ =gUnknown_203B058
- ldrb r1, [r1]
- bl sub_81162E0
- b _081198DC
- .align 2, 0
-_081192D8: .4byte gStringVar4
-_081192DC: .4byte gUnknown_203B058
-_081192E0:
- bl sub_800AAC0
- movs r0, 0x24
- b _081198DA
-_081192E8:
- ldr r0, _08119318 @ =gReceivedRemoteLinkPlayers
- ldrb r4, [r0]
- cmp r4, 0
- beq _081192F2
- b _081198DC
-_081192F2:
- ldr r1, _0811931C @ =gUnknown_203B058
- movs r0, 0x40
- strb r0, [r1]
- ldr r1, _08119320 @ =gStringVar4
- movs r0, 0x25
- bl sub_8118664
- adds r0, r6, 0
- adds r0, 0x4C
- movs r1, 0
- movs r2, 0xC
- bl memset
- adds r0, r6, 0
- adds r0, 0x86
- strh r4, [r0]
- subs r0, 0x2
- strh r4, [r0]
- b _081198DC
- .align 2, 0
-_08119318: .4byte gReceivedRemoteLinkPlayers
-_0811931C: .4byte gUnknown_203B058
-_08119320: .4byte gStringVar4
-_08119324:
- movs r0, 0x2
- strb r0, [r6, 0x14]
- movs r0, 0
- bl sub_811B258
- b _081198DC
-_08119330:
- ldr r4, _0811934C @ =gStringVar4
- ldr r0, _08119350 @ =gUnknown_203B058
- ldrb r0, [r0]
- movs r1, 0x40
- orrs r1, r0
- adds r0, r4, 0
- bl sub_811AECC
- movs r0, 0xE
- adds r1, r4, 0
- bl sub_8118664
- b _081198DC
- .align 2, 0
-_0811934C: .4byte gStringVar4
-_08119350: .4byte gUnknown_203B058
-_08119354:
- bl sub_800AB9C
- movs r0, 0xF
- b _081198DA
-_0811935C:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _08119368
- b _081198DC
-_08119368:
- movs r0, 0x10
- b _081198DA
-_0811936C:
- ldr r0, [r6, 0x8]
- bl Free
- ldr r0, [r6]
- bl Free
- ldr r0, [r6, 0xC]
- bl Free
- ldr r0, [r6, 0x4]
- bl Free
- adds r0, r6, 0
- adds r0, 0x20
- ldrb r0, [r0]
- bl DestroyTask
- adds r0, r6, 0
- adds r0, 0x21
- bl sub_811BB40
- movs r0, 0x11
- b _081198DA
-_0811939A:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x12
- b _081198DA
-_081193AE:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- beq _081193BA
- b _081198DC
-_081193BA:
- bl sub_811BA78
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, _081193D4 @ =gUnknown_203B05C
- ldr r0, [r0]
- bl Free
- bl sub_81179A4
- b _081198DC
- .align 2, 0
-_081193D4: .4byte gUnknown_203B05C
-_081193D8:
- bl sub_80F9800
- ldrh r1, [r0, 0x8]
- ldr r4, _081193EC @ =0x000003ff
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _081193F0
- movs r0, 0x2B
- b _081198DA
- .align 2, 0
-_081193EC: .4byte 0x000003ff
-_081193F0:
- bl sub_80F9800
- ldrh r1, [r0, 0x8]
- adds r0, r4, 0
- ands r0, r1
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08119414
- ldr r0, _0811940C @ =gStringVar4
- ldr r1, _08119410 @ =gUnknown_8458DE8
- bl StringCopy
- b _0811944A
- .align 2, 0
-_0811940C: .4byte gStringVar4
-_08119410: .4byte gUnknown_8458DE8
-_08119414:
- ldr r4, _08119454 @ =gStringVar1
- bl sub_80F9800
- ldrh r0, [r0, 0x8]
- lsls r0, 22
- lsrs r0, 22
- movs r1, 0xB
- muls r1, r0
- ldr r0, _08119458 @ =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r4, _0811945C @ =gStringVar2
- bl sub_80F9800
- ldrb r1, [r0, 0xB]
- lsrs r1, 1
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, _08119460 @ =gStringVar4
- ldr r1, _08119464 @ =gUnknown_8458DBC
- bl StringExpandPlaceholders
-_0811944A:
- ldr r1, _08119460 @ =gStringVar4
- movs r0, 0x2C
- bl sub_8118664
- b _081198DC
- .align 2, 0
-_08119454: .4byte gStringVar1
-_08119458: .4byte gSpeciesNames
-_0811945C: .4byte gStringVar2
-_08119460: .4byte gStringVar4
-_08119464: .4byte gUnknown_8458DBC
-_08119468:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119480 @ =gUnknown_8458AB8
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _0811947A
- b _081198DC
-_0811947A:
- movs r0, 0x2F
- b _081198DA
- .align 2, 0
-_08119480: .4byte gUnknown_8458AB8
-_08119484:
- adds r0, r6, 0
- adds r0, 0x16
- adds r1, r6, 0
- adds r1, 0x1D
- adds r2, r6, 0
- adds r2, 0x1E
- ldr r3, _081194BC @ =gUnknown_8456E34
- ldr r4, _081194C0 @ =gUnknown_8456E54
- str r4, [sp]
- bl sub_811A218
- adds r5, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _081194A6
- b _081198DC
-_081194A6:
- subs r0, 0x1
- cmp r5, r0
- beq _081194B0
- cmp r5, 0x3
- bne _081194C4
-_081194B0:
- movs r0, 0x4
- strb r0, [r6, 0x14]
- movs r0, 0x1
- bl sub_811B258
- b _081194E4
- .align 2, 0
-_081194BC: .4byte gUnknown_8456E34
-_081194C0: .4byte gUnknown_8456E54
-_081194C4:
- cmp r5, 0x1
- beq _081194CE
- cmp r5, 0x2
- beq _081194DC
- b _081194E4
-_081194CE:
- ldr r1, _081194D8 @ =gUnknown_8458D1C
- movs r0, 0x35
- bl sub_8118664
- b _081194E4
- .align 2, 0
-_081194D8: .4byte gUnknown_8458D1C
-_081194DC:
- ldr r1, _081194EC @ =gUnknown_8458B44
- movs r0, 0x2F
- bl sub_8118664
-_081194E4:
- bl DestroyHelpMessageWindow_
- b _081198DC
- .align 2, 0
-_081194EC: .4byte gUnknown_8458B44
-_081194F0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x36
- b _081198DA
-_08119504:
- ldr r0, _08119528 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08119512
- b _081198DC
-_08119512:
- ldr r1, _0811952C @ =gUnknown_203B06C
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, _08119530 @ =gFieldCallback
- ldr r0, _08119534 @ =sub_807DCE4
- str r0, [r1]
- ldr r1, _08119538 @ =CB2_ReturnToField
- movs r0, 0x8
- bl sub_81277F4
- b _081198DC
- .align 2, 0
-_08119528: .4byte gPaletteFade
-_0811952C: .4byte gUnknown_203B06C
-_08119530: .4byte gFieldCallback
-_08119534: .4byte sub_807DCE4
-_08119538: .4byte CB2_ReturnToField
-_0811953C:
- adds r0, r6, 0
- adds r0, 0x16
- adds r1, r6, 0
- adds r1, 0x1D
- adds r2, r6, 0
- adds r2, 0x1E
- ldr r3, _08119580 @ =gUnknown_8456E6C
- ldr r4, _08119584 @ =gUnknown_8456F04
- str r4, [sp]
- bl sub_811A218
- adds r5, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _0811955E
- b _081198DC
-_0811955E:
- subs r0, 0x1
- cmp r5, r0
- beq _08119568
- cmp r5, 0x12
- bne _08119590
-_08119568:
- ldr r0, _08119588 @ =gUnknown_203B06C
- bl sub_811B148
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAFA0
- ldr r0, _0811958C @ =gUnknown_8458D54
- bl sub_811868C
- b _081198DC
- .align 2, 0
-_08119580: .4byte gUnknown_8456E6C
-_08119584: .4byte gUnknown_8456F04
-_08119588: .4byte gUnknown_203B06C
-_0811958C: .4byte gUnknown_8458D54
-_08119590:
- ldr r0, _08119598 @ =gUnknown_203B06C
- strh r5, [r0, 0x2]
- movs r0, 0x37
- b _081198DA
- .align 2, 0
-_08119598: .4byte gUnknown_203B06C
-_0811959C:
- ldr r2, _081195B0 @ =gUnknown_203B06C
- ldrh r0, [r2, 0x2]
- ldrh r1, [r2, 0xA]
- ldrh r2, [r2, 0xC]
- bl sub_80FAFA0
- ldr r0, _081195B4 @ =gUnknown_8458D78
- bl sub_811868C
- b _081198DC
- .align 2, 0
-_081195B0: .4byte gUnknown_203B06C
-_081195B4: .4byte gUnknown_8458D78
-_081195B8:
- adds r0, r6, 0
- adds r0, 0x16
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081195DE
- cmp r1, 0
- bgt _081195D8
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081195E2
- b _081198DC
-_081195D8:
- cmp r1, 0x1
- beq _081195E2
- b _081198DC
-_081195DE:
- movs r0, 0x38
- b _081198DA
-_081195E2:
- movs r0, 0x1
- bl sub_811B258
- movs r0, 0x4
- b _081198DA
-_081195EC:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119618 @ =gUnknown_8458E10
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _081195FE
- b _081198DC
-_081195FE:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80FAFA0
- ldr r0, _0811961C @ =gUnknown_203B06C
- bl sub_811B148
- movs r0, 0x1
- bl sub_811B258
- movs r0, 0x4
- b _081198DA
- .align 2, 0
-_08119618: .4byte gUnknown_8458E10
-_0811961C: .4byte gUnknown_203B06C
-_08119620:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119638 @ =gUnknown_8458A98
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _08119632
- b _081198DC
-_08119632:
- movs r0, 0x2E
- b _081198DA
- .align 2, 0
-_08119638: .4byte gUnknown_8458A98
-_0811963C:
- bl sub_811A3F8
- movs r0, 0x30
- b _081198DA
-_08119644:
- adds r0, r6, 0
- adds r0, 0x16
- adds r1, r6, 0
- adds r1, 0x1D
- adds r2, r6, 0
- adds r2, 0x4A
- adds r3, r6, 0
- adds r3, 0x1E
- ldr r4, _08119688 @ =gUnknown_8456F24
- str r4, [sp]
- ldr r4, _0811968C @ =gUnknown_8456F7C
- str r4, [sp, 0x4]
- ldr r4, [r6]
- str r4, [sp, 0x8]
- bl sub_811A2EC
- adds r5, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _08119670
- b _081198DC
-_08119670:
- subs r0, 0x1
- cmp r5, r0
- beq _0811967A
- cmp r5, 0x8
- bne _08119690
-_0811967A:
- movs r0, 0x1
- bl sub_811B258
- bl DestroyHelpMessageWindow_
- movs r0, 0x4
- b _081198DA
- .align 2, 0
-_08119688: .4byte gUnknown_8456F24
-_0811968C: .4byte gUnknown_8456F7C
-_08119690:
- ldr r1, [r6]
- lsls r3, r5, 5
- mov r8, r3
- add r1, r8
- ldrb r0, [r1, 0x9]
- lsrs r0, 2
- ldrh r1, [r1, 0x8]
- lsls r1, 22
- lsrs r1, 22
- bl sub_811ADD0
- cmp r0, 0x1
- beq _081196EC
- cmp r0, 0x1
- bgt _081196B4
- cmp r0, 0
- beq _081196BA
- b _081198DC
-_081196B4:
- cmp r0, 0x2
- beq _08119734
- b _081198DC
-_081196BA:
- ldr r4, _081196E4 @ =gStringVar1
- ldr r1, [r6]
- add r1, r8
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r0, [r6]
- add r0, r8
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r1, _081196E8 @ =gUnknown_8458E70
- movs r0, 0x31
- bl sub_8118664
- strh r5, [r7, 0x2]
- b _081198DC
- .align 2, 0
-_081196E4: .4byte gStringVar1
-_081196E8: .4byte gUnknown_8458E70
-_081196EC:
- ldr r4, _08119724 @ =gStringVar1
- ldr r1, [r6]
- add r1, r8
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r0, [r6]
- add r0, r8
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _08119728 @ =gStringVar2
- ldr r1, [r6]
- add r1, r8
- ldrb r2, [r1, 0x9]
- lsrs r2, 2
- lsls r1, r2, 3
- subs r1, r2
- ldr r2, _0811972C @ =gTypeNames
- adds r1, r2
- bl StringCopy
- ldr r1, _08119730 @ =gUnknown_8458ED0
- b _0811976A
- .align 2, 0
-_08119724: .4byte gStringVar1
-_08119728: .4byte gStringVar2
-_0811972C: .4byte gTypeNames
-_08119730: .4byte gUnknown_8458ED0
-_08119734:
- ldr r4, _08119774 @ =gStringVar1
- ldr r1, [r6]
- add r1, r8
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r0, [r6]
- add r0, r8
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _08119778 @ =gStringVar2
- ldr r1, [r6]
- add r1, r8
- ldrb r2, [r1, 0x9]
- lsrs r2, 2
- lsls r1, r2, 3
- subs r1, r2
- ldr r2, _0811977C @ =gTypeNames
- adds r1, r2
- bl StringCopy
- ldr r1, _08119780 @ =gUnknown_8458F04
-_0811976A:
- movs r0, 0x2E
- bl sub_8118664
- b _081198DC
- .align 2, 0
-_08119774: .4byte gStringVar1
-_08119778: .4byte gStringVar2
-_0811977C: .4byte gTypeNames
-_08119780: .4byte gUnknown_8458F04
-_08119784:
- adds r0, r6, 0
- adds r0, 0x16
- movs r1, 0
- bl sub_811A14C
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _081197AA
- cmp r1, 0
- bgt _081197A4
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081197AE
- b _081198DC
-_081197A4:
- cmp r1, 0x1
- beq _081197AE
- b _081198DC
-_081197AA:
- movs r0, 0x32
- b _081198DA
-_081197AE:
- movs r0, 0x1
- bl sub_811B258
- movs r0, 0x4
- b _081198DA
-_081197B8:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _08119820 @ =gUnknown_8458D1C
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- bne _081197CA
- b _081198DC
-_081197CA:
- ldr r4, _08119824 @ =gUnknown_203B06C
- movs r0, 0x2
- strh r0, [r4]
- ldr r2, _08119828 @ =gUnknown_203B064
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- ldr r1, [r6]
- lsls r0, 5
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- ldr r2, _0811982C @ =gUnionRoomRequestedMonType
- ldr r1, [r6]
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0x9]
- lsrs r0, 2
- strb r0, [r2]
- ldr r2, _08119830 @ =gUnionRoomOfferedSpecies
- ldr r1, [r6]
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- lsls r0, 5
- adds r1, r0
- ldrh r0, [r1, 0x8]
- lsls r0, 22
- lsrs r0, 22
- strh r0, [r2]
- ldr r1, _08119834 @ =gFieldCallback
- ldr r0, _08119838 @ =sub_807DCE4
- str r0, [r1]
- ldr r1, _0811983C @ =CB2_ReturnToField
- movs r0, 0x9
- bl sub_81277F4
- adds r0, r6, 0
- bl sub_81186B0
- ldrh r0, [r7, 0x2]
- strb r0, [r4, 0x8]
- b _081198DC
- .align 2, 0
-_08119820: .4byte gUnknown_8458D1C
-_08119824: .4byte gUnknown_203B06C
-_08119828: .4byte gUnknown_203B064
-_0811982C: .4byte gUnionRoomRequestedMonType
-_08119830: .4byte gUnionRoomOfferedSpecies
-_08119834: .4byte gFieldCallback
-_08119838: .4byte sub_807DCE4
-_0811983C: .4byte CB2_ReturnToField
-_08119840:
- ldr r1, _08119890 @ =gUnknown_203B058
- movs r0, 0x44
- strb r0, [r1]
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r0, r1, 0
- adds r0, 0x10
- movs r2, 0x44
- bl sub_80FC114
- ldr r4, _08119894 @ =gStringVar1
- movs r2, 0x2
- ldrsh r0, [r7, r2]
- lsls r0, 5
- ldr r1, [r6]
- adds r1, r0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldr r1, [r6]
- movs r3, 0x2
- ldrsh r0, [r7, r3]
- lsls r0, 5
- adds r1, r0
- ldrb r1, [r1]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- ldr r0, _08119898 @ =gUnknown_8457A34
- ldr r0, [r0, 0x8]
- bl sub_811A0B4
- movs r0, 0x19
- b _081198DA
- .align 2, 0
-_08119890: .4byte gUnknown_203B058
-_08119894: .4byte gStringVar1
-_08119898: .4byte gUnknown_8457A34
-_0811989C:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _081198C4 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _081198DC
- movs r0, 0x1
- bl sub_811B258
- movs r1, 0
- ldrsh r0, [r7, r1]
- movs r2, 0x2
- ldrsh r1, [r7, r2]
- ldr r2, [r6]
- bl sub_811C028
- movs r0, 0x4
- b _081198DA
- .align 2, 0
-_081198C4: .4byte gStringVar4
-_081198C8:
- adds r0, r6, 0
- adds r0, 0x16
- ldr r1, _081198E8 @ =gStringVar4
- bl sub_811A0F8
- lsls r0, 24
- cmp r0, 0
- beq _081198DC
- ldrb r0, [r6, 0x15]
-_081198DA:
- strb r0, [r6, 0x14]
-_081198DC:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081198E8: .4byte gStringVar4
- thumb_func_end sub_81186E0
-
- thumb_func_start var_800D_set_xB
-var_800D_set_xB: @ 81198EC
- push {lr}
- bl InUnionRoom
- cmp r0, 0x1
- bne _081198FC
- ldr r1, _08119900 @ =gSpecialVar_Result
- movs r0, 0xB
- strh r0, [r1]
-_081198FC:
- pop {r0}
- bx r0
- .align 2, 0
-_08119900: .4byte gSpecialVar_Result
- thumb_func_end var_800D_set_xB
-
- thumb_func_start sub_8119904
-sub_8119904: @ 8119904
- push {r4,r5,lr}
- adds r2, r0, 0
- ldr r3, _08119940 @ =gRecvCmds
- ldrh r5, [r3, 0x12]
- adds r4, r5, 0
- cmp r4, 0
- beq _08119938
- ldrh r0, [r3, 0x10]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- movs r0, 0xBC
- lsls r0, 6
- cmp r1, r0
- bne _08119938
- adds r0, r2, 0
- adds r0, 0x86
- strh r5, [r0]
- cmp r4, 0x44
- bne _08119938
- ldrh r1, [r3, 0x14]
- adds r0, 0x2
- strh r1, [r0]
- ldrh r1, [r3, 0x16]
- adds r0, 0x2
- strh r1, [r0]
-_08119938:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08119940: .4byte gRecvCmds
- thumb_func_end sub_8119904
-
- thumb_func_start sub_8119944
-sub_8119944: @ 8119944
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r4, 0
- adds r5, 0x86
- ldrh r0, [r5]
- cmp r0, 0
- beq _08119994
- ldr r0, _08119978 @ =gStringVar4
- ldr r1, _0811997C @ =gLinkPlayers
- adds r1, 0x2F
- ldrb r1, [r1]
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_811AF6C
- cmp r0, 0
- beq _08119994
- cmp r0, 0x1
- bne _08119984
- movs r0, 0x23
- strb r0, [r4, 0x14]
- ldr r1, _08119980 @ =gUnknown_203B058
- ldrh r0, [r5]
- strb r0, [r1]
- movs r0, 0
- b _08119996
- .align 2, 0
-_08119978: .4byte gStringVar4
-_0811997C: .4byte gLinkPlayers
-_08119980: .4byte gUnknown_203B058
-_08119984:
- cmp r0, 0x2
- bne _08119994
- movs r0, 0x24
- strb r0, [r4, 0x14]
- bl sub_800AAC0
- movs r0, 0
- b _08119996
-_08119994:
- movs r0, 0x1
-_08119996:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8119944
-
- thumb_func_start InitUnionRoom
-InitUnionRoom: @ 811999C
- push {r4-r6,lr}
- ldr r5, _081199E8 @ =gUnknown_203B04C
- movs r0, 0x1
- negs r0, r0
- adds r6, r0, 0
- movs r0, 0xFF
- strb r0, [r5]
- ldr r0, _081199EC @ =gQuestLogState
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _081199E0
- ldr r0, _081199F0 @ =sub_81199FC
- movs r1, 0
- bl CreateTask
- ldr r4, _081199F4 @ =gUnknown_203B05C
- movs r0, 0x96
- lsls r0, 2
- bl AllocZeroed
- str r0, [r4]
- ldr r1, _081199F8 @ =gUnknown_300202C
- str r0, [r1]
- movs r1, 0
- strb r1, [r0, 0x14]
- strb r1, [r0, 0x16]
- strh r1, [r0, 0x10]
- strh r1, [r0, 0x12]
- ldrb r0, [r5]
- orrs r0, r6
- strb r0, [r5]
-_081199E0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081199E8: .4byte gUnknown_203B04C
-_081199EC: .4byte gQuestLogState
-_081199F0: .4byte sub_81199FC
-_081199F4: .4byte gUnknown_203B05C
-_081199F8: .4byte gUnknown_300202C
- thumb_func_end InitUnionRoom
-
- thumb_func_start sub_81199FC
-sub_81199FC: @ 81199FC
- push {r4-r6,lr}
- sub sp, 0x20
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08119A1C @ =gUnknown_203B05C
- ldr r5, [r0]
- ldrb r0, [r5, 0x14]
- cmp r0, 0x4
- bls _08119A10
- b _08119B5C
-_08119A10:
- lsls r0, 2
- ldr r1, _08119A20 @ =_08119A24
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08119A1C: .4byte gUnknown_203B05C
-_08119A20: .4byte _08119A24
- .align 2, 0
-_08119A24:
- .4byte _08119A38
- .4byte _08119A3E
- .4byte _08119A60
- .4byte _08119AB0
- .4byte _08119B28
-_08119A38:
- movs r0, 0x1
- strb r0, [r5, 0x14]
- b _08119B5C
-_08119A3E:
- movs r0, 0xC
- movs r1, 0
- movs r2, 0
- bl sub_80FAF58
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBC00
- movs r0, 0x1
- bl sub_80FB128
- movs r0, 0x2
- strb r0, [r5, 0x14]
- b _08119B5C
-_08119A60:
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0x4]
- movs r1, 0x4
- bl sub_811A650
- movs r0, 0x70
- bl AllocZeroed
- str r0, [r5, 0xC]
- movs r1, 0x4
- bl sub_811A650
- movs r0, 0x80
- lsls r0, 1
- bl AllocZeroed
- str r0, [r5]
- movs r1, 0x8
- bl sub_811A5E4
- movs r0, 0x20
- bl AllocZeroed
- str r0, [r5, 0x8]
- movs r1, 0x1
- bl sub_811A5E4
- ldr r0, [r5, 0xC]
- ldr r1, [r5, 0x4]
- movs r2, 0xA
- bl sub_8119E84
- adds r1, r5, 0
- adds r1, 0x20
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r5, 0x14]
- b _08119B5C
-_08119AB0:
- bl sub_8119B94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- blt _08119B5C
- cmp r0, 0x2
- bgt _08119B5C
- ldr r0, _08119B14 @ =gUnknown_203B04C
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08119B5C
- movs r6, 0
-_08119ACA:
- ldr r0, [r5]
- lsls r4, r6, 5
- adds r1, r0, r4
- ldrb r0, [r1, 0x1A]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08119B0A
- adds r1, 0x10
- mov r0, sp
- bl StringCopy
- ldr r0, [r5]
- adds r0, r4
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- mov r0, sp
- bl ConvertInternationalString
- ldr r0, [r5]
- adds r0, r4
- adds r0, 0x2
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- bl sub_80FD338
- cmp r0, 0
- bne _08119B18
-_08119B0A:
- adds r6, 0x1
- cmp r6, 0x7
- ble _08119ACA
- b _08119B5C
- .align 2, 0
-_08119B14: .4byte gUnknown_203B04C
-_08119B18:
- ldr r0, _08119B24 @ =gUnknown_203B04C
- mov r1, sp
- bl StringCopy
- b _08119B5C
- .align 2, 0
-_08119B24: .4byte gUnknown_203B04C
-_08119B28:
- ldr r0, [r5, 0x8]
- bl Free
- ldr r0, [r5]
- bl Free
- ldr r0, [r5, 0xC]
- bl Free
- ldr r0, [r5, 0x4]
- bl Free
- adds r0, r5, 0
- adds r0, 0x20
- ldrb r0, [r0]
- bl DestroyTask
- ldr r0, _08119B64 @ =gUnknown_203B05C
- ldr r0, [r0]
- bl Free
- bl sub_80F8DC0
- adds r0, r4, 0
- bl DestroyTask
-_08119B5C:
- add sp, 0x20
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08119B64: .4byte gUnknown_203B05C
- thumb_func_end sub_81199FC
-
- thumb_func_start BufferUnionRoomPlayerName
-BufferUnionRoomPlayerName: @ 8119B68
- push {r4,lr}
- ldr r4, _08119B78 @ =gUnknown_203B04C
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _08119B7C
- movs r0, 0
- b _08119B8A
- .align 2, 0
-_08119B78: .4byte gUnknown_203B04C
-_08119B7C:
- ldr r0, _08119B90 @ =gStringVar1
- adds r1, r4, 0
- bl StringCopy
- movs r0, 0xFF
- strb r0, [r4]
- movs r0, 0x1
-_08119B8A:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08119B90: .4byte gStringVar1
- thumb_func_end BufferUnionRoomPlayerName
-
- thumb_func_start sub_8119B94
-sub_8119B94: @ 8119B94
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _08119BE8 @ =gUnknown_203B05C
- ldr r4, [r0]
- movs r7, 0
- movs r6, 0
- movs r5, 0
-_08119BA6:
- ldr r0, [r4, 0xC]
- adds r0, r5
- ldr r1, _08119BEC @ =gUnknown_8457034
- bl sub_811A694
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1
- bne _08119BF0
- ldr r1, [r4, 0xC]
- ldr r0, [r4, 0x8]
- adds r1, r5
- ldm r1!, {r2,r5,r6}
- stm r0!, {r2,r5,r6}
- ldm r1!, {r2,r5,r6}
- stm r0!, {r2,r5,r6}
- ldr r1, [r4, 0x8]
- movs r0, 0
- strh r0, [r1, 0x18]
- ldr r2, [r4, 0x8]
- ldrb r1, [r2, 0x1A]
- movs r5, 0x4
- negs r5, r5
- adds r0, r5, 0
- ands r1, r0
- movs r0, 0x1
- orrs r1, r0
- strb r1, [r2, 0x1A]
- ldr r0, [r4, 0x8]
- strb r3, [r0, 0x1B]
- movs r0, 0x4
- b _08119D24
- .align 2, 0
-_08119BE8: .4byte gUnknown_203B05C
-_08119BEC: .4byte gUnknown_8457034
-_08119BF0:
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _08119BA6
- movs r6, 0
- mov r9, r6
-_08119BFC:
- ldr r0, [r4]
- mov r1, r9
- lsls r5, r1, 5
- adds r2, r0, r5
- ldrb r0, [r2, 0x1A]
- lsls r0, 30
- mov r8, r5
- cmp r0, 0
- beq _08119CF0
- ldr r1, [r4, 0x4]
- adds r0, r2, 0
- bl sub_811A748
- adds r6, r0, 0
- cmp r6, 0xFF
- beq _08119C96
- ldr r0, [r4]
- adds r2, r0, r5
- ldrb r1, [r2, 0x1A]
- lsls r0, r1, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _08119C74
- lsls r0, r6, 3
- subs r0, r6
- lsls r6, r0, 2
- ldr r1, [r4, 0x4]
- adds r1, r6
- adds r0, r2, 0
- bl sub_811A6DC
- cmp r0, 0
- beq _08119C5A
- ldr r1, [r4]
- ldr r0, [r4, 0x4]
- adds r1, r5
- adds r0, r6
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0x40
- strb r1, [r0, 0x1B]
- movs r7, 0x1
- b _08119C8C
-_08119C5A:
- ldr r0, [r4]
- adds r1, r0, r5
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _08119C8C
- subs r0, 0x1
- strb r0, [r1, 0x1B]
- ldr r0, [r4]
- adds r0, r5
- ldrb r0, [r0, 0x1B]
- cmp r0, 0
- bne _08119C8C
- b _08119C8A
-_08119C74:
- movs r3, 0x4
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1A]
- ldr r0, [r4]
- adds r0, r5
- movs r1, 0
- strb r1, [r0, 0x1B]
-_08119C8A:
- movs r7, 0x2
-_08119C8C:
- ldr r0, [r4]
- add r0, r8
- movs r1, 0
- strh r1, [r0, 0x18]
- b _08119CF0
-_08119C96:
- ldr r0, [r4]
- adds r1, r0, r5
- ldrb r0, [r1, 0x1A]
- lsls r2, r0, 30
- lsrs r0, r2, 30
- cmp r0, 0x2
- beq _08119CD0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
- ldr r0, [r4]
- adds r2, r0, r5
- ldrh r1, [r2, 0x18]
- ldr r0, _08119CCC @ =0x00000257
- cmp r1, r0
- bls _08119CF0
- ldrb r0, [r2, 0x1A]
- movs r5, 0x4
- negs r5, r5
- adds r1, r5, 0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1A]
- movs r7, 0x2
- b _08119CF0
- .align 2, 0
-_08119CCC: .4byte 0x00000257
-_08119CD0:
- lsrs r0, r2, 30
- cmp r0, 0x2
- bne _08119CF0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
- ldr r0, [r4]
- adds r2, r0, r5
- ldrh r1, [r2, 0x18]
- ldr r0, _08119D30 @ =0x00000383
- cmp r1, r0
- bls _08119CF0
- adds r0, r2, 0
- movs r1, 0x1
- bl sub_811A5E4
-_08119CF0:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r0, 0x7
- bhi _08119D00
- b _08119BFC
-_08119D00:
- movs r5, 0
- movs r6, 0x3
-_08119D04:
- ldr r0, [r4]
- ldr r1, [r4, 0x4]
- adds r1, r5
- movs r2, 0x8
- bl sub_811A798
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08119D1A
- movs r7, 0x1
-_08119D1A:
- adds r5, 0x1C
- subs r6, 0x1
- cmp r6, 0
- bge _08119D04
- adds r0, r7, 0
-_08119D24:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08119D30: .4byte 0x00000383
- thumb_func_end sub_8119B94
-
- thumb_func_start sub_8119D34
-sub_8119D34: @ 8119D34
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, _08119E24 @ =gTasks+0x8
- adds r6, r0, r1
- movs r7, 0
- mov r0, sp
- adds r0, 0x10
- str r0, [sp, 0x18]
-_08119D58:
- lsls r2, r7, 24
- lsrs r2, 24
- mov r0, sp
- ldr r1, [sp, 0x18]
- bl sub_80FCC3C
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, sp
- ldrb r0, [r0, 0xA]
- lsls r0, 25
- lsrs r0, 25
- mov r2, r10
- lsls r1, r2, 2
- add r1, r10
- lsls r1, 3
- ldr r3, _08119E28 @ =gTasks
- adds r1, r3
- movs r5, 0x10
- ldrsh r1, [r1, r5]
- bl sub_8116F28
- cmp r0, 0
- bne _08119D94
- mov r1, sp
- ldr r0, _08119E2C @ =gUnknown_8457034
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
-_08119D94:
- mov r0, sp
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _08119DAC
- mov r1, sp
- ldr r0, _08119E2C @ =gUnknown_8457034
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
-_08119DAC:
- cmp r4, 0
- bne _08119E30
- lsls r0, r7, 3
- mov r8, r0
- adds r1, r7, 0x1
- mov r9, r1
- cmp r7, 0
- ble _08119DEC
- movs r2, 0
- str r2, [sp, 0x1C]
- adds r4, r7, 0
-_08119DC2:
- ldr r0, [r6, 0x4]
- ldr r3, [sp, 0x1C]
- adds r0, r3
- mov r1, sp
- bl sub_811A694
- lsls r0, 24
- cmp r0, 0
- bne _08119DE0
- mov r1, sp
- ldr r0, _08119E2C @ =gUnknown_8457034
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
-_08119DE0:
- ldr r5, [sp, 0x1C]
- adds r5, 0x1C
- str r5, [sp, 0x1C]
- subs r4, 0x1
- cmp r4, 0
- bne _08119DC2
-_08119DEC:
- ldr r1, [r6, 0x4]
- mov r0, r8
- subs r4, r0, r7
- lsls r4, 2
- adds r1, r4
- mov r0, sp
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldr r0, [r6, 0x4]
- adds r0, r4
- ldr r1, _08119E2C @ =gUnknown_8457034
- bl sub_811A694
- ldr r3, [r6, 0x4]
- adds r3, r4
- movs r2, 0x1
- ands r2, r0
- ldrb r0, [r3, 0x18]
- movs r4, 0x2
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- b _08119E68
- .align 2, 0
-_08119E24: .4byte gTasks+0x8
-_08119E28: .4byte gTasks
-_08119E2C: .4byte gUnknown_8457034
-_08119E30:
- ldr r1, [r6]
- lsls r4, r7, 3
- subs r4, r7
- lsls r4, 2
- adds r1, r4
- mov r0, sp
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _08119E80 @ =gUnknown_8457034
- bl sub_811A694
- ldr r3, [r6]
- adds r3, r4
- movs r2, 0x1
- ands r2, r0
- ldrb r0, [r3, 0x18]
- movs r4, 0x2
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- adds r7, 0x1
- mov r9, r7
-_08119E68:
- mov r7, r9
- cmp r7, 0x3
- bgt _08119E70
- b _08119D58
-_08119E70:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08119E80: .4byte gUnknown_8457034
- thumb_func_end sub_8119D34
-
- thumb_func_start sub_8119E84
-sub_8119E84: @ 8119E84
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r0, _08119EB0 @ =sub_8119D34
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r2, _08119EB4 @ =gTasks+0x8
- adds r3, r1, r2
- str r4, [r3]
- str r5, [r3, 0x4]
- adds r2, r1
- strh r6, [r2, 0x8]
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08119EB0: .4byte sub_8119D34
-_08119EB4: .4byte gTasks+0x8
- thumb_func_end sub_8119E84
-
- thumb_func_start sub_8119EB8
-sub_8119EB8: @ 8119EB8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- ldr r1, _08119FA4 @ =gTasks+0x8
- adds r6, r0, r1
- movs r3, 0
-_08119ED6:
- lsls r4, r3, 3
- subs r0, r4, r3
- lsls r5, r0, 2
- ldr r0, [r6]
- adds r0, r5
- adds r1, r0, 0
- adds r1, 0x10
- lsls r2, r3, 24
- lsrs r2, 24
- str r3, [sp]
- bl sub_80FCC3C
- ldr r0, [r6]
- adds r0, r5
- ldrb r0, [r0, 0xA]
- lsls r0, 25
- lsrs r0, 25
- mov r2, r10
- lsls r1, r2, 2
- add r1, r10
- lsls r1, 3
- ldr r7, _08119FA8 @ =gTasks
- adds r1, r7
- movs r2, 0xC
- ldrsh r1, [r1, r2]
- bl sub_8116F28
- mov r8, r4
- ldr r3, [sp]
- cmp r0, 0
- bne _08119F22
- ldr r1, [r6]
- adds r1, r5
- ldr r0, _08119FAC @ =gUnknown_8457034
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
- ldm r0!, {r2,r4,r7}
- stm r1!, {r2,r4,r7}
-_08119F22:
- adds r4, r3, 0x1
- mov r9, r4
- cmp r3, 0
- ble _08119F66
- str r5, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- adds r4, r3, 0
-_08119F32:
- ldr r1, [r6]
- ldr r7, [sp, 0x8]
- adds r0, r1, r7
- ldr r2, [sp, 0x4]
- adds r1, r2
- str r3, [sp]
- bl sub_811A694
- lsls r0, 24
- ldr r3, [sp]
- cmp r0, 0
- bne _08119F5A
- ldr r1, [r6]
- ldr r5, [sp, 0x4]
- adds r1, r5
- ldr r0, _08119FAC @ =gUnknown_8457034
- ldm r0!, {r2,r5,r7}
- stm r1!, {r2,r5,r7}
- ldm r0!, {r2,r5,r7}
- stm r1!, {r2,r5,r7}
-_08119F5A:
- ldr r7, [sp, 0x8]
- adds r7, 0x1C
- str r7, [sp, 0x8]
- subs r4, 0x1
- cmp r4, 0
- bne _08119F32
-_08119F66:
- mov r0, r8
- subs r4, r0, r3
- lsls r4, 2
- ldr r0, [r6]
- adds r0, r4
- ldr r1, _08119FAC @ =gUnknown_8457034
- bl sub_811A694
- ldr r3, [r6]
- adds r3, r4
- movs r2, 0x1
- ands r2, r0
- ldrb r0, [r3, 0x18]
- movs r4, 0x2
- negs r4, r4
- adds r1, r4, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- mov r3, r9
- cmp r3, 0x3
- ble _08119ED6
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08119FA4: .4byte gTasks+0x8
-_08119FA8: .4byte gTasks
-_08119FAC: .4byte gUnknown_8457034
- thumb_func_end sub_8119EB8
-
- thumb_func_start sub_8119FB0
-sub_8119FB0: @ 8119FB0
- push {lr}
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7
- bne _08119FC0
- ldrb r1, [r0]
- movs r0, 0x20
- b _08119FC8
-_08119FC0:
- cmp r1, 0x8
- bne _08119FD2
- ldrb r1, [r0]
- movs r0, 0x10
-_08119FC8:
- ands r0, r1
- cmp r0, 0
- beq _08119FD2
- movs r0, 0x1
- b _08119FD4
-_08119FD2:
- movs r0, 0
-_08119FD4:
- pop {r1}
- bx r1
- thumb_func_end sub_8119FB0
-
- thumb_func_start sub_8119FD8
-sub_8119FD8: @ 8119FD8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0811A04C @ =gTasks+0x8
- adds r4, r1, r0
- movs r6, 0
- subs r0, 0x8
- movs r5, 0
- adds r1, r0
- mov r8, r1
-_08119FF6:
- ldr r0, [r4]
- adds r0, r5
- adds r1, r0, 0
- adds r1, 0x10
- lsls r2, r6, 24
- lsrs r2, 24
- bl sub_80FCCF4
- lsls r0, 24
- cmp r0, 0
- beq _0811A01A
- ldr r0, [r4]
- adds r0, r5
- mov r2, r8
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- bl sub_8119FB0
-_0811A01A:
- ldr r0, [r4]
- adds r0, r5
- ldr r1, _0811A050 @ =gUnknown_8457034
- bl sub_811A694
- ldr r3, [r4]
- adds r3, r5
- movs r2, 0x1
- ands r2, r0
- ldrb r0, [r3, 0x18]
- movs r7, 0x2
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- orrs r0, r2
- strb r0, [r3, 0x18]
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _08119FF6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A04C: .4byte gTasks+0x8
-_0811A050: .4byte gUnknown_8457034
- thumb_func_end sub_8119FD8
-
- thumb_func_start sub_811A054
-sub_811A054: @ 811A054
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, _0811A07C @ =sub_8119EB8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r1, _0811A080 @ =gTasks+0x8
- adds r3, r2, r1
- str r4, [r3]
- adds r1, r2
- strh r5, [r1, 0x4]
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811A07C: .4byte sub_8119EB8
-_0811A080: .4byte gTasks+0x8
- thumb_func_end sub_811A054
-
- thumb_func_start sub_811A084
-sub_811A084: @ 811A084
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, _0811A0AC @ =sub_8119FD8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r1, _0811A0B0 @ =gTasks+0x8
- adds r3, r2, r1
- str r4, [r3]
- adds r1, r2
- strh r5, [r1, 0x4]
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811A0AC: .4byte sub_8119FD8
-_0811A0B0: .4byte gTasks+0x8
- thumb_func_end sub_811A084
-
- thumb_func_start sub_811A0B4
-sub_811A0B4: @ 811A0B4
- push {r4,lr}
- adds r4, r0, 0
- bl LoadStdWindowFrameGfx
- movs r0, 0
- movs r1, 0x1
- bl DrawDialogueFrame
- ldr r0, _0811A0DC @ =gStringVar4
- adds r1, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- movs r1, 0x1
- bl AddTextPrinterWithCustomSpeedForMessage
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811A0DC: .4byte gStringVar4
- thumb_func_end sub_811A0B4
-
- thumb_func_start sub_811A0E0
-sub_811A0E0: @ 811A0E0
- push {lr}
- bl RunTextPrinters_CheckPrinter0Active
- lsls r0, 16
- cmp r0, 0
- beq _0811A0F0
- movs r0, 0
- b _0811A0F2
-_0811A0F0:
- movs r0, 0x1
-_0811A0F2:
- pop {r1}
- bx r1
- thumb_func_end sub_811A0E0
-
- thumb_func_start sub_811A0F8
-sub_811A0F8: @ 811A0F8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _0811A10A
- cmp r0, 0x1
- beq _0811A130
- b _0811A142
-_0811A10A:
- bl LoadStdWindowFrameGfx
- movs r0, 0
- movs r1, 0x1
- bl DrawDialogueFrame
- ldr r0, _0811A12C @ =gStringVar4
- adds r1, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x1
- bl AddTextPrinterForMessage
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0811A142
- .align 2, 0
-_0811A12C: .4byte gStringVar4
-_0811A130:
- bl RunTextPrinters_CheckPrinter0Active
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0811A142
- strb r0, [r4]
- movs r0, 0x1
- b _0811A144
-_0811A142:
- movs r0, 0
-_0811A144:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811A0F8
-
- thumb_func_start sub_811A14C
-sub_811A14C: @ 811A14C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _0811A15E
- cmp r0, 0x1
- beq _0811A174
- b _0811A1A0
-_0811A15E:
- cmp r5, 0
- beq _0811A168
- movs r0, 0x3
- negs r0, r0
- b _0811A1A4
-_0811A168:
- bl DisplayYesNoMenuDefaultYes
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0811A1A0
-_0811A174:
- cmp r5, 0
- beq _0811A186
- bl DestroyYesNoMenu
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x3
- negs r0, r0
- b _0811A1A4
-_0811A186:
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x2
- bhi _0811A1A0
- strb r5, [r4]
- adds r0, r1, 0
- b _0811A1A4
-_0811A1A0:
- movs r0, 0x2
- negs r0, r0
-_0811A1A4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811A14C
-
- thumb_func_start sub_811A1AC
-sub_811A1AC: @ 811A1AC
- push {r4,lr}
- sub sp, 0x8
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl DrawStdWindowFrame
- adds r0, r4, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r2, _0811A1F8 @ =gUnknown_8459378
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0
- movs r3, 0x8
- bl sub_811A444
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x2
- bl CopyWindowToVram
- adds r0, r4, 0
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811A1F8: .4byte gUnknown_8459378
- thumb_func_end sub_811A1AC
-
- thumb_func_start sub_811A1FC
-sub_811A1FC: @ 811A1FC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- adds r0, r4, 0
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811A1FC
-
- thumb_func_start sub_811A218
-sub_811A218: @ 811A218
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- adds r5, r1, 0
- mov r9, r2
- adds r0, r3, 0
- ldrb r4, [r7]
- cmp r4, 0
- beq _0811A234
- cmp r4, 0x1
- beq _0811A274
- b _0811A2DA
-_0811A234:
- bl AddWindow
- strb r0, [r5]
- ldrb r0, [r5]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _0811A270 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, [sp, 0x1C]
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldm r1!, {r3,r4,r6}
- stm r2!, {r3,r4,r6}
- ldrb r1, [r5]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- mov r1, r9
- strb r0, [r1]
- ldrb r0, [r5]
- movs r1, 0x1
- bl CopyWindowToVram
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- b _0811A2DA
- .align 2, 0
-_0811A270: .4byte gMultiuseListMenuTemplate
-_0811A274:
- mov r3, r9
- ldrb r0, [r3]
- bl ListMenu_ProcessInput
- mov r8, r0
- ldr r0, _0811A2AC @ =gMain
- ldrh r1, [r0, 0x2E]
- ands r4, r1
- cmp r4, 0
- beq _0811A2B0
- mov r4, r9
- ldrb r0, [r4]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r5]
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- ldrb r0, [r5]
- bl RemoveWindow
- movs r0, 0
- strb r0, [r7]
- mov r0, r8
- b _0811A2DE
- .align 2, 0
-_0811A2AC: .4byte gMain
-_0811A2B0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811A2DA
- mov r6, r9
- ldrb r0, [r6]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r5]
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- ldrb r0, [r5]
- bl RemoveWindow
- strb r4, [r7]
- movs r0, 0x2
- negs r0, r0
- b _0811A2DE
-_0811A2DA:
- movs r0, 0x1
- negs r0, r0
-_0811A2DE:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811A218
-
- thumb_func_start sub_811A2EC
-sub_811A2EC: @ 811A2EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r7, r3, 0
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811A308
- cmp r0, 0x1
- beq _0811A358
- b _0811A3E6
-_0811A308:
- ldr r0, _0811A350 @ =gUnknown_8456F1C
- bl sub_811A1AC
- strb r0, [r7]
- ldr r0, [sp, 0x1C]
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0
- bl DrawStdWindowFrame
- ldr r0, _0811A354 @ =gMultiuseListMenuTemplate
- adds r2, r0, 0
- ldr r1, [sp, 0x20]
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldm r1!, {r3,r6,r7}
- stm r2!, {r3,r6,r7}
- ldrb r1, [r4]
- strb r1, [r0, 0x10]
- movs r1, 0
- movs r2, 0x1
- bl ListMenuInit
- strb r0, [r5]
- ldrb r0, [r4]
- movs r1, 0x1
- bl CopyWindowToVram
- mov r1, r9
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0811A3E6
- .align 2, 0
-_0811A350: .4byte gUnknown_8456F1C
-_0811A354: .4byte gMultiuseListMenuTemplate
-_0811A358:
- ldrb r0, [r5]
- bl ListMenu_ProcessInput
- adds r1, r0, 0
- ldr r0, _0811A3A8 @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- beq _0811A3E6
- cmp r1, 0x8
- beq _0811A37E
- movs r0, 0x2
- ands r0, r2
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r0, 0
- beq _0811A3AC
-_0811A37E:
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r4]
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- ldrb r0, [r4]
- bl RemoveWindow
- ldrb r0, [r7]
- bl sub_811A1FC
- movs r0, 0
- mov r3, r9
- strb r0, [r3]
- movs r0, 0x2
- negs r0, r0
- b _0811A3EA
- .align 2, 0
-_0811A3A8: .4byte gMain
-_0811A3AC:
- ldr r0, [sp, 0x24]
- bl sub_811AD7C
- adds r6, r0, 0
- cmp r6, 0
- blt _0811A3E0
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0
- bl DestroyListMenuTask
- ldrb r0, [r4]
- movs r1, 0x1
- bl ClearStdWindowAndFrame
- ldrb r0, [r4]
- bl RemoveWindow
- ldrb r0, [r7]
- bl sub_811A1FC
- mov r0, r8
- mov r7, r9
- strb r0, [r7]
- adds r0, r6, 0
- b _0811A3EA
-_0811A3E0:
- movs r0, 0x7
- bl PlaySE
-_0811A3E6:
- movs r0, 0x1
- negs r0, r0
-_0811A3EA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811A2EC
-
- thumb_func_start sub_811A3F8
-sub_811A3F8: @ 811A3F8
- push {lr}
- sub sp, 0xC
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_811A3F8
-
- thumb_func_start sub_811A41C
-sub_811A41C: @ 811A41C
- push {lr}
- sub sp, 0xC
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- bl EnableBothScriptContexts
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_811A41C
-
- thumb_func_start sub_811A444
-sub_811A444: @ 811A444
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r5, [sp, 0x1C]
- ldr r4, [sp, 0x20]
- lsls r3, 24
- lsrs r3, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- str r2, [sp]
- mov r2, sp
- strb r0, [r2, 0x4]
- mov r0, sp
- strb r1, [r0, 0x5]
- strb r3, [r0, 0x6]
- strb r5, [r0, 0x7]
- strb r3, [r0, 0x8]
- strb r5, [r0, 0x9]
- ldrb r1, [r2, 0xC]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0xC]
- ldr r2, _0811A490 @ =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- cmp r4, 0x6
- bls _0811A486
- b _0811A5D2
-_0811A486:
- lsls r0, r4, 2
- ldr r1, _0811A494 @ =_0811A498
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811A490: .4byte gTextFlags
-_0811A494: .4byte _0811A498
- .align 2, 0
-_0811A498:
- .4byte _0811A4B4
- .4byte _0811A4E0
- .4byte _0811A50C
- .4byte _0811A538
- .4byte _0811A564
- .4byte _0811A590
- .4byte _0811A5A8
-_0811A4B4:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x30
- b _0811A5CE
-_0811A4E0:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x50
- b _0811A5CE
-_0811A50C:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x60
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x70
- b _0811A5CE
-_0811A538:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x30
- b _0811A5CE
-_0811A564:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0xC]
- ldrb r1, [r2, 0xD]
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0xD]
- ands r0, r3
- movs r1, 0x30
- b _0811A5CE
-_0811A590:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r4, 0xF
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0x70
- b _0811A5BE
-_0811A5A8:
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r2, sp
- ldrb r1, [r2, 0xC]
- movs r4, 0xF
- movs r3, 0xF
- adds r0, r3, 0
- ands r0, r1
- movs r1, 0xE0
-_0811A5BE:
- orrs r0, r1
- strb r0, [r2, 0xC]
- mov r1, sp
- ldrb r0, [r1, 0xD]
- orrs r0, r4
- strb r0, [r1, 0xD]
- ands r0, r3
- movs r1, 0x90
-_0811A5CE:
- orrs r0, r1
- strb r0, [r2, 0xD]
-_0811A5D2:
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811A444
-
- thumb_func_start sub_811A5E4
-sub_811A5E4: @ 811A5E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _0811A63C
- ldr r2, _0811A64C @ =gUnknown_8457034
- mov r8, r2
- movs r5, 0
- mov r9, r5
- movs r6, 0x4
- negs r6, r6
- mov r12, r6
- adds r2, r0, 0
- adds r2, 0x18
- adds r4, r0, 0
- movs r7, 0xFF
- mov r10, r7
- adds r3, r1, 0
-_0811A610:
- adds r1, r4, 0
- mov r0, r8
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- mov r0, r10
- strh r0, [r2]
- ldrb r1, [r2, 0x2]
- mov r0, r12
- ands r0, r1
- movs r1, 0x5
- negs r1, r1
- ands r0, r1
- strb r0, [r2, 0x2]
- mov r5, r9
- strb r5, [r2, 0x3]
- adds r2, 0x20
- adds r4, 0x20
- subs r3, 0x1
- cmp r3, 0
- bne _0811A610
-_0811A63C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A64C: .4byte gUnknown_8457034
- thumb_func_end sub_811A5E4
-
- thumb_func_start sub_811A650
-sub_811A650: @ 811A650
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _0811A690 @ =gUnknown_8457034
- mov r12, r1
- movs r5, 0x2
- negs r5, r5
- mov r8, r5
- adds r2, r0, 0
- adds r2, 0x18
- adds r3, r0, 0
- movs r4, 0x3
-_0811A668:
- adds r1, r3, 0
- mov r0, r12
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldrb r1, [r2]
- mov r0, r8
- ands r0, r1
- strb r0, [r2]
- adds r2, 0x1C
- adds r3, 0x1C
- subs r4, 0x1
- cmp r4, 0
- bge _0811A668
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A690: .4byte gUnknown_8457034
- thumb_func_end sub_811A650
-
- thumb_func_start sub_811A694
-sub_811A694: @ 811A694
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- movs r2, 0
- adds r4, r5, 0x2
- adds r3, r6, 0x2
-_0811A6A0:
- adds r0, r4, r2
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0811A6C8
- adds r2, 0x1
- cmp r2, 0x1
- ble _0811A6A0
- movs r2, 0
- adds r4, r5, 0
- adds r4, 0x10
- adds r3, r6, 0
- adds r3, 0x10
-_0811A6BC:
- adds r0, r4, r2
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0811A6CC
-_0811A6C8:
- movs r0, 0x1
- b _0811A6D4
-_0811A6CC:
- adds r2, 0x1
- cmp r2, 0x7
- ble _0811A6BC
- movs r0, 0
-_0811A6D4:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811A694
-
- thumb_func_start sub_811A6DC
-sub_811A6DC: @ 811A6DC
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldrb r3, [r5, 0xA]
- movs r0, 0x7F
- ldrb r2, [r6, 0xA]
- adds r1, r0, 0
- ands r1, r3
- ands r0, r2
- cmp r1, r0
- bne _0811A740
- movs r0, 0x80
- adds r1, r0, 0
- ands r1, r3
- ands r0, r2
- cmp r1, r0
- bne _0811A740
- movs r2, 0
- adds r4, r5, 0x4
- adds r3, r6, 0x4
-_0811A704:
- adds r0, r4, r2
- adds r1, r3, r2
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0811A740
- adds r2, 0x1
- cmp r2, 0x3
- ble _0811A704
- ldrh r2, [r5, 0x8]
- ldr r0, _0811A73C @ =0x000003ff
- ldrh r3, [r6, 0x8]
- adds r1, r0, 0
- ands r1, r2
- ands r0, r3
- cmp r1, r0
- bne _0811A740
- ldrb r2, [r5, 0x9]
- movs r0, 0xFC
- ldrb r3, [r6, 0x9]
- adds r1, r0, 0
- ands r1, r2
- ands r0, r3
- cmp r1, r0
- bne _0811A740
- movs r0, 0
- b _0811A742
- .align 2, 0
-_0811A73C: .4byte 0x000003ff
-_0811A740:
- movs r0, 0x1
-_0811A742:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811A6DC
-
- thumb_func_start sub_811A748
-sub_811A748: @ 811A748
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- movs r7, 0xFF
- movs r6, 0
- adds r4, r1, 0
- adds r4, 0x18
- adds r5, r1, 0
-_0811A75A:
- ldrb r1, [r4]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811A782
- mov r0, r8
- adds r1, r5, 0
- bl sub_811A694
- lsls r0, 24
- cmp r0, 0
- bne _0811A782
- lsls r0, r6, 24
- lsrs r7, r0, 24
- ldrb r0, [r4]
- movs r2, 0x2
- negs r2, r2
- adds r1, r2, 0
- ands r0, r1
- strb r0, [r4]
-_0811A782:
- adds r4, 0x1C
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _0811A75A
- adds r0, r7, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811A748
-
- thumb_func_start sub_811A798
-sub_811A798: @ 811A798
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r3, r0, 0
- mov r8, r1
- lsls r2, 24
- lsrs r6, r2, 24
- ldrb r1, [r1, 0x18]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811A80C
- movs r5, 0
- cmp r5, r6
- bge _0811A80C
- movs r0, 0x4
- negs r0, r0
- mov r9, r0
- movs r1, 0x2
- negs r1, r1
- mov r12, r1
- adds r2, r3, 0
- adds r2, 0x18
- adds r1, r3, 0
-_0811A7CA:
- ldrb r0, [r2, 0x2]
- movs r3, 0x3
- ands r3, r0
- cmp r3, 0
- bne _0811A802
- mov r0, r8
- ldm r0!, {r4,r6,r7}
- stm r1!, {r4,r6,r7}
- ldm r0!, {r4,r6,r7}
- stm r1!, {r4,r6,r7}
- strh r3, [r2]
- ldrb r1, [r2, 0x2]
- mov r0, r9
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x2]
- movs r0, 0x40
- strb r0, [r2, 0x3]
- mov r0, r8
- ldrb r1, [r0, 0x18]
- mov r0, r12
- ands r0, r1
- mov r1, r8
- strb r0, [r1, 0x18]
- lsls r0, r5, 24
- lsrs r0, 24
- b _0811A80E
-_0811A802:
- adds r2, 0x20
- adds r1, 0x20
- adds r5, 0x1
- cmp r5, r6
- blt _0811A7CA
-_0811A80C:
- movs r0, 0xFF
-_0811A80E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811A798
-
- thumb_func_start sub_811A81C
-sub_811A81C: @ 811A81C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- adds r4, r1, 0
- adds r5, r3, 0
- ldr r3, [sp, 0x50]
- ldr r1, [sp, 0x54]
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0811A904 @ =gStringVar4
- mov r8, r0
- adds r1, 0x1
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r1, _0811A908 @ =gUnknown_84571B0
- mov r0, r8
- bl StringAppend
- str r6, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0
- mov r2, r8
- adds r3, r4, 0
- bl sub_811A444
- adds r4, 0x12
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- ldrb r0, [r5, 0xA]
- lsls r0, 25
- lsrs r2, r0, 25
- ldrb r1, [r5, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0811A8F2
- movs r0, 0x40
- ands r2, r0
- cmp r2, 0
- bne _0811A8F2
- add r4, sp, 0x10
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- str r6, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0x2
- adds r2, r4, 0
- mov r3, r9
- bl sub_811A444
- ldrb r1, [r5, 0x2]
- ldrb r0, [r5, 0x3]
- lsls r0, 8
- orrs r1, r0
- add r0, sp, 0x8
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- ldr r1, _0811A90C @ =gUnknown_84571B4
- mov r0, r8
- bl StringCopy
- mov r0, r8
- add r1, sp, 0x8
- bl StringAppend
- mov r3, r9
- adds r3, 0x4D
- lsls r3, 24
- lsrs r3, 24
- str r6, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- adds r0, r7, 0
- movs r1, 0
- mov r2, r8
- bl sub_811A444
-_0811A8F2:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A904: .4byte gStringVar4
-_0811A908: .4byte gUnknown_84571B0
-_0811A90C: .4byte gUnknown_84571B4
- thumb_func_end sub_811A81C
-
- thumb_func_start sub_811A910
-sub_811A910: @ 811A910
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x30
- adds r5, r3, 0
- ldr r3, [sp, 0x4C]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r7, r3, 24
- ldrb r1, [r5, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- bne _0811A9A2
- add r4, sp, 0x10
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- mov r0, r8
- str r0, [sp]
- str r7, [sp, 0x4]
- mov r0, r9
- movs r1, 0x2
- adds r2, r4, 0
- adds r3, r6, 0
- bl sub_811A444
- ldrb r1, [r5, 0x2]
- ldrb r0, [r5, 0x3]
- lsls r0, 8
- orrs r1, r0
- add r0, sp, 0x8
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- ldr r4, _0811A9B0 @ =gStringVar4
- ldr r1, _0811A9B4 @ =gUnknown_84571B4
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- add r1, sp, 0x8
- bl StringAppend
- adds r3, r6, 0
- adds r3, 0x47
- lsls r3, 24
- lsrs r3, 24
- mov r0, r8
- str r0, [sp]
- str r7, [sp, 0x4]
- mov r0, r9
- movs r1, 0
- adds r2, r4, 0
- bl sub_811A444
-_0811A9A2:
- add sp, 0x30
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A9B0: .4byte gStringVar4
-_0811A9B4: .4byte gUnknown_84571B4
- thumb_func_end sub_811A910
-
- thumb_func_start sub_811A9B8
-sub_811A9B8: @ 811A9B8
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x9
- bne _0811A9F0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bne _0811A9F0
- ldr r0, _0811A9EC @ =gPlayerAvatar
- ldrb r0, [r0, 0x3]
- cmp r0, 0x2
- beq _0811A9E6
- cmp r0, 0
- bne _0811A9F0
-_0811A9E6:
- movs r0, 0x1
- b _0811A9F2
- .align 2, 0
-_0811A9EC: .4byte gPlayerAvatar
-_0811A9F0:
- movs r0, 0
-_0811A9F2:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811A9B8
-
- thumb_func_start sub_811A9FC
-sub_811A9FC: @ 811A9FC
- push {lr}
- cmp r0, 0x4
- beq _0811AA14
- cmp r0, 0x4
- ble _0811AA1C
- cmp r0, 0x5
- beq _0811AA10
- cmp r0, 0x8
- beq _0811AA18
- b _0811AA1C
-_0811AA10:
- movs r0, 0x1
- b _0811AA1E
-_0811AA14:
- movs r0, 0x2
- b _0811AA1E
-_0811AA18:
- movs r0, 0x3
- b _0811AA1E
-_0811AA1C:
- movs r0, 0
-_0811AA1E:
- pop {r1}
- bx r1
- thumb_func_end sub_811A9FC
-
- thumb_func_start sub_811AA24
-sub_811AA24: @ 811AA24
- push {r4,lr}
- sub sp, 0x20
- adds r4, r0, 0
- adds r1, r4, 0
- adds r1, 0x10
- mov r0, sp
- bl StringCopy
- ldrb r1, [r4]
- lsls r1, 28
- lsrs r1, 28
- mov r0, sp
- bl ConvertInternationalString
- adds r4, 0x2
- adds r0, r4, 0
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- bl sub_80FD338
- add sp, 0x20
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811AA24
-
- thumb_func_start sub_811AA5C
-sub_811AA5C: @ 811AA5C
- push {r4-r7,lr}
- adds r7, r3, 0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r2, 19
- adds r5, r0, r2
- ldrb r1, [r5, 0xA]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AAE4
- cmp r6, 0
- bne _0811AAE4
- ldr r4, _0811AAC4 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- adds r0, r5, 0x2
- bl sub_8118658
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl sub_80FD338
- adds r2, r0, 0
- ldrb r1, [r5, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- bne _0811AAD0
- ldr r0, _0811AAC8 @ =gStringVar4
- ldr r3, _0811AACC @ =gUnknown_8457F80
- lsls r1, r7, 2
- lsls r2, 3
- adds r1, r2
- adds r1, r3
- ldr r1, [r1]
- bl StringExpandPlaceholders
- movs r0, 0x2
- b _0811ABD2
- .align 2, 0
-_0811AAC4: .4byte gStringVar1
-_0811AAC8: .4byte gStringVar4
-_0811AACC: .4byte gUnknown_8457F80
-_0811AAD0:
- ldr r0, _0811AAE0 @ =gUnknown_8457A34
- lsls r1, r2, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_811A0B4
- movs r0, 0x1
- b _0811ABD2
- .align 2, 0
-_0811AAE0: .4byte gUnknown_8457A34
-_0811AAE4:
- ldr r4, _0811AB24 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl ConvertInternationalString
- cmp r6, 0
- beq _0811AB0A
- adds r0, r5, r6
- ldrb r0, [r0, 0x3]
- lsrs r7, r0, 3
- movs r0, 0x1
- ands r7, r0
-_0811AB0A:
- ldrb r0, [r5, 0xA]
- lsls r0, 25
- lsrs r0, 25
- movs r1, 0x3F
- ands r1, r0
- cmp r1, 0x4
- beq _0811AB58
- cmp r1, 0x4
- bgt _0811AB28
- cmp r1, 0x1
- beq _0811AB32
- b _0811ABC8
- .align 2, 0
-_0811AB24: .4byte gStringVar1
-_0811AB28:
- cmp r1, 0x5
- beq _0811AB78
- cmp r1, 0x8
- beq _0811AB9C
- b _0811ABC8
-_0811AB32:
- ldr r5, _0811AB50 @ =gStringVar4
- ldr r4, _0811AB54 @ =gUnknown_8458758
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsrs r1, 14
- lsls r0, r7, 4
- adds r1, r0
- adds r1, r4
- ldr r1, [r1]
- b _0811ABB6
- .align 2, 0
-_0811AB50: .4byte gStringVar4
-_0811AB54: .4byte gUnknown_8458758
-_0811AB58:
- ldr r5, _0811AB70 @ =gStringVar4
- ldr r4, _0811AB74 @ =gUnknown_8458A78
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- lsls r1, r7, 4
- b _0811ABB0
- .align 2, 0
-_0811AB70: .4byte gStringVar4
-_0811AB74: .4byte gUnknown_8458A78
-_0811AB78:
- ldr r5, _0811AB94 @ =gStringVar4
- ldr r4, _0811AB98 @ =gUnknown_84588BC
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsrs r1, 14
- lsls r0, r7, 4
- adds r1, r0
- adds r1, r4
- ldr r1, [r1]
- b _0811ABB6
- .align 2, 0
-_0811AB94: .4byte gStringVar4
-_0811AB98: .4byte gUnknown_84588BC
-_0811AB9C:
- ldr r5, _0811ABC0 @ =gStringVar4
- ldr r4, _0811ABC4 @ =gUnknown_84589AC
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- lsls r0, 2
- lsls r1, r7, 3
-_0811ABB0:
- adds r0, r1
- adds r0, r4
- ldr r1, [r0]
-_0811ABB6:
- adds r0, r5, 0
- bl StringExpandPlaceholders
- b _0811ABD0
- .align 2, 0
-_0811ABC0: .4byte gStringVar4
-_0811ABC4: .4byte gUnknown_84589AC
-_0811ABC8:
- ldr r0, _0811ABD8 @ =gStringVar4
- ldr r1, _0811ABDC @ =gUnknown_8457F90
- bl StringExpandPlaceholders
-_0811ABD0:
- movs r0, 0
-_0811ABD2:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811ABD8: .4byte gStringVar4
-_0811ABDC: .4byte gUnknown_8457F90
- thumb_func_end sub_811AA5C
-
- thumb_func_start nullsub_92
-nullsub_92: @ 811ABE0
- bx lr
- thumb_func_end nullsub_92
-
- thumb_func_start sub_811ABE4
-sub_811ABE4: @ 811ABE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- ldr r4, [sp, 0x28]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r4, 24
- lsrs r4, 24
- ldrh r0, [r2, 0x8]
- lsls r0, 22
- lsrs r0, 22
- mov r8, r0
- ldrb r0, [r2, 0x9]
- lsrs r7, r0, 2
- ldrb r0, [r2, 0xB]
- lsrs r0, 1
- mov r9, r0
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r3, 0
- movs r3, 0x8
- bl sub_811A444
- movs r0, 0xCE
- lsls r0, 1
- cmp r8, r0
- bne _0811AC3C
- ldr r2, _0811AC38 @ =gUnknown_8458FBC
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0x44
- bl sub_811A444
- b _0811AC90
- .align 2, 0
-_0811AC38: .4byte gUnknown_8458FBC
-_0811AC3C:
- adds r1, r7, 0x1
- adds r0, r6, 0
- movs r2, 0x44
- adds r3, r5, 0
- bl BlitMoveInfoIcon
- movs r0, 0xB
- mov r2, r8
- muls r2, r0
- ldr r0, _0811ACA0 @ =gSpeciesNames
- adds r2, r0
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0x76
- bl sub_811A444
- add r0, sp, 0x8
- mov r1, r9
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x2
- add r1, sp, 0x8
- movs r2, 0
- bl GetStringWidth
- lsls r0, 16
- lsrs r0, 16
- movs r3, 0xDA
- subs r3, r0
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- str r4, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- add r2, sp, 0x8
- bl sub_811A444
-_0811AC90:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811ACA0: .4byte gSpeciesNames
- thumb_func_end sub_811ABE4
-
- thumb_func_start sub_811ACA4
-sub_811ACA4: @ 811ACA4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r0, _0811ACF8 @ =gUnknown_203B05C
- ldr r6, [r0]
- movs r0, 0x3
- negs r0, r0
- cmp r4, r0
- bne _0811AD38
- ldr r0, _0811ACFC @ =gUnknown_8456F7C
- ldrb r0, [r0, 0x14]
- lsls r0, 28
- lsrs r0, 28
- cmp r8, r0
- bne _0811AD38
- bl sub_80F9800
- adds r2, r0, 0
- ldrh r1, [r2, 0x8]
- ldr r0, _0811AD00 @ =0x000003ff
- ands r0, r1
- cmp r0, 0
- beq _0811AD6C
- ldr r0, _0811AD04 @ =gSaveBlock2Ptr
- ldr r3, [r0]
- movs r0, 0x5
- str r0, [sp]
- mov r0, r9
- mov r1, r8
- bl sub_811ABE4
- b _0811AD6C
- .align 2, 0
-_0811ACF8: .4byte gUnknown_203B05C
-_0811ACFC: .4byte gUnknown_8456F7C
-_0811AD00: .4byte 0x000003ff
-_0811AD04: .4byte gSaveBlock2Ptr
-_0811AD08:
- mov r0, r12
- adds r1, r0, r4
- adds r1, 0x10
- add r0, sp, 0x4
- bl StringCopy
- ldr r0, [r6]
- adds r0, r4
- ldrb r1, [r0]
- lsls r1, 28
- lsrs r1, 28
- add r0, sp, 0x4
- bl ConvertInternationalString
- ldr r2, [r6]
- adds r2, r4
- movs r0, 0x6
- str r0, [sp]
- mov r0, r9
- mov r1, r8
- add r3, sp, 0x4
- bl sub_811ABE4
- b _0811AD6C
-_0811AD38:
- movs r5, 0
- movs r1, 0
- ldr r0, [r6]
- mov r12, r0
- mov r2, r12
- adds r2, 0x8
- movs r3, 0
- adds r7, r4, 0x1
-_0811AD48:
- ldrb r0, [r2, 0x12]
- lsls r0, 30
- lsrs r0, 30
- adds r4, r3, 0
- cmp r0, 0x1
- bne _0811AD5E
- ldrh r0, [r2]
- lsls r0, 22
- cmp r0, 0
- beq _0811AD5E
- adds r5, 0x1
-_0811AD5E:
- cmp r5, r7
- beq _0811AD08
- adds r2, 0x20
- adds r3, 0x20
- adds r1, 0x1
- cmp r1, 0x7
- ble _0811AD48
-_0811AD6C:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811ACA4
-
- thumb_func_start sub_811AD7C
-sub_811AD7C: @ 811AD7C
- push {r4-r7,lr}
- movs r4, 0
- movs r3, 0
- movs r7, 0x3
- ldr r6, _0811ADAC @ =0x000003ff
- adds r2, r0, 0
- adds r2, 0x8
- adds r5, r1, 0x1
-_0811AD8C:
- ldrb r1, [r2, 0x12]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0x1
- bne _0811ADA2
- ldrh r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0811ADA2
- adds r4, 0x1
-_0811ADA2:
- cmp r4, r5
- bne _0811ADB0
- adds r0, r3, 0
- b _0811ADBC
- .align 2, 0
-_0811ADAC: .4byte 0x000003ff
-_0811ADB0:
- adds r2, 0x20
- adds r3, 0x1
- cmp r3, 0x7
- ble _0811AD8C
- movs r0, 0x1
- negs r0, r0
-_0811ADBC:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811AD7C
-
- thumb_func_start sub_811ADC4
-sub_811ADC4: @ 811ADC4
- lsls r0, 5
- adds r0, r1
- ldrb r0, [r0, 0xB]
- lsls r0, 31
- lsrs r0, 31
- bx lr
- thumb_func_end sub_811ADC4
-
- thumb_func_start sub_811ADD0
-sub_811ADD0: @ 811ADD0
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _0811AE10
- movs r4, 0
- b _0811ADFA
-_0811ADE0:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0811AE08 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _0811AE40
- adds r4, 0x1
-_0811ADFA:
- ldr r0, _0811AE0C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- blt _0811ADE0
- movs r0, 0x2
- b _0811AE5C
- .align 2, 0
-_0811AE08: .4byte gPlayerParty
-_0811AE0C: .4byte gPlayerPartyCount
-_0811AE10:
- movs r4, 0
- ldr r0, _0811AE44 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- bge _0811AE5A
- ldr r6, _0811AE48 @ =gBaseStats
-_0811AE1C:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0811AE4C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r0, r6
- ldrb r0, [r1, 0x6]
- cmp r0, r5
- beq _0811AE40
- ldrb r0, [r1, 0x7]
- cmp r0, r5
- bne _0811AE50
-_0811AE40:
- movs r0, 0
- b _0811AE5C
- .align 2, 0
-_0811AE44: .4byte gPlayerPartyCount
-_0811AE48: .4byte gBaseStats
-_0811AE4C: .4byte gPlayerParty
-_0811AE50:
- adds r4, 0x1
- ldr r0, _0811AE64 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r4, r0
- blt _0811AE1C
-_0811AE5A:
- movs r0, 0x1
-_0811AE5C:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AE64: .4byte gPlayerPartyCount
- thumb_func_end sub_811ADD0
-
- thumb_func_start sub_811AE68
-sub_811AE68: @ 811AE68
- push {lr}
- adds r3, r0, 0
- cmp r1, 0x44
- beq _0811AEA4
- cmp r1, 0x44
- bgt _0811AE7A
- cmp r1, 0x41
- beq _0811AE84
- b _0811AEC2
-_0811AE7A:
- cmp r1, 0x45
- beq _0811AE94
- cmp r1, 0x48
- beq _0811AEB4
- b _0811AEC2
-_0811AE84:
- ldr r0, _0811AE90 @ =gUnknown_8458314
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- b _0811AEA6
- .align 2, 0
-_0811AE90: .4byte gUnknown_8458314
-_0811AE94:
- ldr r0, _0811AEA0 @ =gUnknown_84585E8
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- b _0811AEA6
- .align 2, 0
-_0811AEA0: .4byte gUnknown_84585E8
-_0811AEA4:
- ldr r1, _0811AEB0 @ =gUnknown_8458F9C
-_0811AEA6:
- adds r0, r3, 0
- bl StringExpandPlaceholders
- b _0811AEC2
- .align 2, 0
-_0811AEB0: .4byte gUnknown_8458F9C
-_0811AEB4:
- ldr r0, _0811AEC8 @ =gUnknown_84583B4
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r3, 0
- bl StringExpandPlaceholders
-_0811AEC2:
- pop {r0}
- bx r0
- .align 2, 0
-_0811AEC8: .4byte gUnknown_84583B4
- thumb_func_end sub_811AE68
-
- thumb_func_start sub_811AECC
-sub_811AECC: @ 811AECC
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- adds r6, r4, 0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _0811AF00 @ =gLinkPlayers
- movs r0, 0x1
- adds r1, r3, 0
- eors r1, r0
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x13]
- cmp r4, 0x44
- beq _0811AF20
- cmp r4, 0x44
- bgt _0811AF04
- cmp r4, 0x41
- beq _0811AF0A
- b _0811AF60
- .align 2, 0
-_0811AF00: .4byte gLinkPlayers
-_0811AF04:
- cmp r6, 0x45
- beq _0811AF44
- b _0811AF60
-_0811AF0A:
- ldr r2, _0811AF1C @ =gUnknown_8458230
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r1, r0
- b _0811AF32
- .align 2, 0
-_0811AF1C: .4byte gUnknown_8458230
-_0811AF20:
- ldr r2, _0811AF40 @ =gUnknown_8458230
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r1, r0
- adds r2, 0x8
-_0811AF32:
- adds r1, r2
- ldr r1, [r1]
- adds r0, r5, 0
- bl StringCopy
- b _0811AF60
- .align 2, 0
-_0811AF40: .4byte gUnknown_8458230
-_0811AF44:
- ldr r2, _0811AF68 @ =gUnknown_8458230
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 3
- adds r1, r0
- adds r2, 0x4
- adds r1, r2
- ldr r1, [r1]
- adds r0, r5, 0
- bl StringCopy
-_0811AF60:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AF68: .4byte gUnknown_8458230
- thumb_func_end sub_811AECC
-
- thumb_func_start sub_811AF6C
-sub_811AF6C: @ 811AF6C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r5, r2, 0
- adds r6, r3, 0
- movs r2, 0
- mov r8, r2
- ldrh r0, [r5]
- subs r0, 0x40
- cmp r0, 0x8
- bls _0811AF86
- b _0811B092
-_0811AF86:
- lsls r0, 2
- ldr r1, _0811AF90 @ =_0811AF94
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811AF90: .4byte _0811AF94
- .align 2, 0
-_0811AF94:
- .4byte _0811B088
- .4byte _0811AFB8
- .4byte _0811B092
- .4byte _0811B092
- .4byte _0811AFC8
- .4byte _0811AFC0
- .4byte _0811B092
- .4byte _0811B092
- .4byte _0811B078
-_0811AFB8:
- ldr r1, _0811AFBC @ =gUnknown_8457CA4
- b _0811B07A
- .align 2, 0
-_0811AFBC: .4byte gUnknown_8457CA4
-_0811AFC0:
- ldr r1, _0811AFC4 @ =gUnknown_8457CF8
- b _0811B07A
- .align 2, 0
-_0811AFC4: .4byte gUnknown_8457CF8
-_0811AFC8:
- adds r0, r6, 0
- adds r0, 0x58
- ldr r4, _0811AFF0 @ =gUnknown_203B06C
- ldrh r1, [r4, 0xC]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- adds r0, 0x63
- ldrh r2, [r4, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _0811AFF4 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- movs r4, 0
- b _0811AFFA
- .align 2, 0
-_0811AFF0: .4byte gUnknown_203B06C
-_0811AFF4: .4byte gSpeciesNames
-_0811AFF8:
- adds r4, 0x1
-_0811AFFA:
- cmp r4, 0x3
- bgt _0811B030
- ldr r0, _0811B044 @ =gRfuLinkStatus
- ldr r0, [r0]
- lsls r1, r4, 5
- adds r0, r1
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bne _0811AFF8
- ldrh r1, [r5, 0x4]
- adds r0, r6, 0
- adds r0, 0x6E
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldrh r1, [r5, 0x2]
- movs r0, 0xB
- muls r1, r0
- ldr r0, _0811B048 @ =gSpeciesNames
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0x79
- bl StringCopy
- ldrh r5, [r5, 0x2]
- mov r8, r5
-_0811B030:
- movs r0, 0xCE
- lsls r0, 1
- cmp r8, r0
- bne _0811B050
- ldr r1, _0811B04C @ =gUnknown_8457DB8
- adds r0, r7, 0
- bl StringCopy
- b _0811B080
- .align 2, 0
-_0811B044: .4byte gRfuLinkStatus
-_0811B048: .4byte gSpeciesNames
-_0811B04C: .4byte gUnknown_8457DB8
-_0811B050:
- movs r4, 0
- adds r5, r6, 0
- adds r5, 0x58
-_0811B056:
- lsls r0, r4, 24
- lsrs r0, 24
- adds r1, r5, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- adds r5, 0xB
- adds r4, 0x1
- cmp r4, 0x3
- ble _0811B056
- ldr r1, _0811B074 @ =gUnknown_8457D44
- adds r0, r7, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- b _0811B080
- .align 2, 0
-_0811B074: .4byte gUnknown_8457D44
-_0811B078:
- ldr r1, _0811B084 @ =gUnknown_8457C48
-_0811B07A:
- adds r0, r7, 0
- bl StringExpandPlaceholders
-_0811B080:
- movs r2, 0x1
- b _0811B092
- .align 2, 0
-_0811B084: .4byte gUnknown_8457C48
-_0811B088:
- ldr r1, _0811B0A0 @ =gUnknown_8457E0C
- adds r0, r7, 0
- bl StringExpandPlaceholders
- movs r2, 0x2
-_0811B092:
- adds r0, r2, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B0A0: .4byte gUnknown_8457E0C
- thumb_func_end sub_811AF6C
-
- thumb_func_start sub_811B0A4
-sub_811B0A4: @ 811B0A4
- push {lr}
- adds r2, r0, 0
- ldr r0, _0811B0C4 @ =gRecvCmds
- ldrh r1, [r0, 0x2]
- cmp r1, 0
- beq _0811B0C8
- cmp r1, 0x51
- beq _0811B0B8
- cmp r1, 0x52
- bne _0811B0C8
-_0811B0B8:
- adds r0, r2, 0
- adds r0, 0x84
- strh r1, [r0]
- movs r0, 0x1
- b _0811B0CA
- .align 2, 0
-_0811B0C4: .4byte gRecvCmds
-_0811B0C8:
- movs r0, 0
-_0811B0CA:
- pop {r1}
- bx r1
- thumb_func_end sub_811B0A4
-
- thumb_func_start InUnionRoom
-InUnionRoom: @ 811B0D0
- push {lr}
- movs r2, 0
- ldr r0, _0811B0EC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _0811B0E4
- movs r2, 0x1
-_0811B0E4:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811B0EC: .4byte gSaveBlock1Ptr
- thumb_func_end InUnionRoom
-
- thumb_func_start sub_811B0F0
-sub_811B0F0: @ 811B0F0
- push {r4-r6,lr}
- movs r6, 0
- movs r5, 0
- ldr r0, _0811B138 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r6, r0
- bge _0811B130
-_0811B0FE:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0811B13C @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x1E
- bhi _0811B126
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0811B126
- adds r6, 0x1
-_0811B126:
- adds r5, 0x1
- ldr r0, _0811B138 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- blt _0811B0FE
-_0811B130:
- cmp r6, 0x1
- bgt _0811B140
- movs r0, 0
- b _0811B142
- .align 2, 0
-_0811B138: .4byte gPlayerPartyCount
-_0811B13C: .4byte gPlayerParty
-_0811B140:
- movs r0, 0x1
-_0811B142:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811B0F0
-
- thumb_func_start sub_811B148
-sub_811B148: @ 811B148
- movs r1, 0
- strh r1, [r0]
- strh r1, [r0, 0x2]
- str r1, [r0, 0x4]
- strh r1, [r0, 0xA]
- strh r1, [r0, 0xC]
- strh r1, [r0, 0xE]
- strh r1, [r0, 0x10]
- str r1, [r0, 0x14]
- bx lr
- thumb_func_end sub_811B148
-
- thumb_func_start Script_ResetUnionRoomTrade
-Script_ResetUnionRoomTrade: @ 811B15C
- push {lr}
- ldr r0, _0811B168 @ =gUnknown_203B06C
- bl sub_811B148
- pop {r0}
- bx r0
- .align 2, 0
-_0811B168: .4byte gUnknown_203B06C
- thumb_func_end Script_ResetUnionRoomTrade
-
- thumb_func_start sub_811B16C
-sub_811B16C: @ 811B16C
- push {r4,r5,lr}
- adds r5, r1, 0
- movs r1, 0x64
- adds r4, r0, 0
- muls r4, r1
- ldr r0, _0811B1A8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- strh r0, [r5, 0xC]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [r5, 0x4]
- ldrh r1, [r5, 0xA]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _0811B1AC
- movs r0, 0
- b _0811B1AE
- .align 2, 0
-_0811B1A8: .4byte gPlayerParty
-_0811B1AC:
- movs r0, 0x1
-_0811B1AE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811B16C
-
- thumb_func_start sub_811B1B4
-sub_811B1B4: @ 811B1B4
- push {r4,r5,lr}
- adds r5, r1, 0
- movs r1, 0x64
- adds r4, r0, 0
- muls r4, r1
- ldr r0, _0811B1E8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- strh r0, [r5, 0xE]
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- strh r0, [r5, 0x10]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [r5, 0x14]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B1E8: .4byte gPlayerParty
- thumb_func_end sub_811B1B4
-
- thumb_func_start sub_811B1EC
-sub_811B1EC: @ 811B1EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 24
- movs r2, 0
- mov r8, r2
- cmp r1, 0
- bne _0811B20A
- ldrh r7, [r0, 0xA]
- ldr r6, [r0, 0x4]
- b _0811B20E
-_0811B202:
- lsls r0, r5, 16
- lsrs r0, 16
- mov r8, r0
- b _0811B242
-_0811B20A:
- ldrh r7, [r0, 0xE]
- ldr r6, [r0, 0x14]
-_0811B20E:
- movs r5, 0
- b _0811B23A
-_0811B212:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0811B250 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- cmp r0, r6
- bne _0811B238
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r7
- beq _0811B202
-_0811B238:
- adds r5, 0x1
-_0811B23A:
- ldr r0, _0811B254 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r5, r0
- blt _0811B212
-_0811B242:
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B250: .4byte gPlayerParty
-_0811B254: .4byte gPlayerPartyCount
- thumb_func_end sub_811B1EC
-
- thumb_func_start sub_811B258
-sub_811B258: @ 811B258
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811A3F8
- bl ScriptContext2_Disable
- bl sub_80696F0
- ldr r1, _0811B290 @ =gUnknown_203B058
- movs r0, 0
- strb r0, [r1]
- cmp r4, 0
- beq _0811B288
- ldr r2, _0811B294 @ =gUnknown_203B06C
- ldrh r0, [r2, 0x2]
- ldrh r1, [r2, 0xA]
- ldrh r2, [r2, 0xC]
- bl sub_80FAFA0
- movs r0, 0x40
- movs r1, 0
- movs r2, 0
- bl sub_80FB008
-_0811B288:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B290: .4byte gUnknown_203B058
-_0811B294: .4byte gUnknown_203B06C
- thumb_func_end sub_811B258
-
- thumb_func_start sub_811B298
-sub_811B298: @ 811B298
- push {lr}
- bl ScriptContext2_Enable
- bl ScriptFreezeObjectEvents
- pop {r0}
- bx r0
- thumb_func_end sub_811B298
-
- thumb_func_start sub_811B2A8
-sub_811B2A8: @ 811B2A8
- push {r4,lr}
- movs r4, 0x80
- ldr r3, _0811B2D4 @ =gLinkPlayers
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r1, r3
- ldrb r2, [r0, 0x13]
- lsls r2, 3
- orrs r2, r4
- adds r3, 0x4
- adds r1, r3
- ldr r0, [r1]
- movs r1, 0x7
- ands r0, r1
- orrs r0, r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B2D4: .4byte gLinkPlayers
- thumb_func_end sub_811B2A8
-
- thumb_func_start sub_811B2D8
-sub_811B2D8: @ 811B2D8
- push {r4,lr}
- movs r3, 0x80
- movs r2, 0
- ldr r4, [r0, 0xC]
-_0811B2E0:
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r1, r4, r0
- ldrb r0, [r1, 0x18]
- lsls r0, 31
- cmp r0, 0
- beq _0811B308
- ldrb r0, [r1, 0xB]
- lsls r0, 31
- lsrs r0, 31
- lsls r0, 3
- orrs r3, r0
- ldrb r1, [r1, 0x2]
- movs r0, 0x7
- ands r0, r1
- orrs r3, r0
- lsls r0, r3, 24
- lsrs r3, r0, 24
- b _0811B312
-_0811B308:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _0811B2E0
-_0811B312:
- adds r0, r3, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B2D8
-
- thumb_func_start sub_811B31C
-sub_811B31C: @ 811B31C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 5
- ldr r0, _0811B4B0 @ =gTrainerCards
- adds r1, r0
- mov r8, r1
- bl DynamicPlaceholderTextUtil_Reset
- mov r6, r9
- adds r6, 0xAC
- bl sub_80447F0
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xD
- muls r1, r0
- ldr r0, _0811B4B4 @ =gTrainerClassNames
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- movs r0, 0
- adds r1, r6, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- mov r1, r8
- adds r1, 0x30
- movs r0, 0x1
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r4, 0xB0
- lsls r4, 1
- add r4, r9
- ldr r1, _0811B4B8 @ =gUnknown_84594B0
- mov r2, r8
- ldrb r0, [r2, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0x2
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- mov r5, r9
- adds r5, 0xCA
- mov r0, r8
- ldrh r1, [r0, 0xC]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x3
- adds r1, r5, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r2, 0xD9
- add r2, r9
- mov r10, r2
- mov r0, r8
- ldrh r1, [r0, 0x10]
- mov r0, r10
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r4, r9
- adds r4, 0xE8
- mov r2, r8
- ldrh r1, [r2, 0x12]
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r0, 0x4
- mov r1, r10
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r0, 0x5
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r4, 0xC8
- lsls r4, 1
- add r4, r9
- ldr r1, _0811B4BC @ =gUnknown_84594C4
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- ldr r0, _0811B4C0 @ =gStringVar4
- adds r1, r4, 0
- bl StringCopy
- mov r0, r8
- ldrh r1, [r0, 0x14]
- ldr r4, _0811B4C4 @ =0x0000270f
- cmp r1, r4
- ble _0811B40A
- adds r1, r4, 0
-_0811B40A:
- adds r0, r6, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- movs r0, 0
- adds r1, r6, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- mov r2, r8
- ldrh r1, [r2, 0x16]
- cmp r1, r4
- ble _0811B426
- adds r1, r4, 0
-_0811B426:
- mov r4, r9
- adds r4, 0xBB
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- movs r0, 0x2
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- mov r0, r8
- ldrh r1, [r0, 0x20]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- movs r0, 0x3
- adds r1, r5, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r7, 0
- movs r6, 0x80
- lsls r6, 19
- mov r5, r8
- adds r5, 0x28
- mov r4, r10
-_0811B45E:
- ldrh r1, [r5]
- adds r0, r4, 0
- bl CopyEasyChatWord
- lsrs r0, r6, 24
- adds r1, r4, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- movs r2, 0x80
- lsls r2, 17
- adds r6, r2
- adds r5, 0x2
- adds r4, 0xF
- adds r7, 0x1
- cmp r7, 0x3
- ble _0811B45E
- movs r4, 0xC8
- lsls r4, 1
- add r4, r9
- ldr r1, _0811B4C8 @ =gUnknown_8459504
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- ldr r5, _0811B4C0 @ =gStringVar4
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
- ldr r0, [sp]
- cmp r0, 0x1
- bne _0811B4D0
- ldr r1, _0811B4CC @ =gUnknown_8459588
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
- b _0811B4F0
- .align 2, 0
-_0811B4B0: .4byte gTrainerCards
-_0811B4B4: .4byte gTrainerClassNames
-_0811B4B8: .4byte gUnknown_84594B0
-_0811B4BC: .4byte gUnknown_84594C4
-_0811B4C0: .4byte gStringVar4
-_0811B4C4: .4byte 0x0000270f
-_0811B4C8: .4byte gUnknown_8459504
-_0811B4CC: .4byte gUnknown_8459588
-_0811B4D0:
- ldr r2, [sp]
- cmp r2, 0
- bne _0811B4F0
- ldr r0, _0811B500 @ =gUnknown_8459580
- mov r2, r8
- ldrb r1, [r2]
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r4, 0
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
-_0811B4F0:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B500: .4byte gUnknown_8459580
- thumb_func_end sub_811B31C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/union_room_player_avatar.s b/asm/union_room_player_avatar.s
deleted file mode 100644
index 5c6786ae6..000000000
--- a/asm/union_room_player_avatar.s
+++ /dev/null
@@ -1,2064 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start is_walking_or_running
-is_walking_or_running: @ 811B504
- push {lr}
- ldr r0, _0811B518 @ =gPlayerAvatar
- ldrb r0, [r0, 0x3]
- cmp r0, 0x2
- beq _0811B512
- cmp r0, 0
- bne _0811B51C
-_0811B512:
- movs r0, 0x1
- b _0811B51E
- .align 2, 0
-_0811B518: .4byte gPlayerAvatar
-_0811B51C:
- movs r0, 0
-_0811B51E:
- pop {r1}
- bx r1
- thumb_func_end is_walking_or_running
-
- thumb_func_start sub_811B524
-sub_811B524: @ 811B524
- ldr r3, _0811B538 @ =gUnknown_84570D8
- movs r2, 0x7
- ands r2, r1
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- adds r2, r1
- adds r2, r3
- ldrb r0, [r2]
- bx lr
- .align 2, 0
-_0811B538: .4byte gUnknown_84570D8
- thumb_func_end sub_811B524
-
- thumb_func_start sub_811B53C
-sub_811B53C: @ 811B53C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r4, _0811B584 @ =gUnknown_84570EC
- mov r8, r4
- lsls r0, 2
- adds r4, r0, r4
- movs r6, 0
- ldrsh r5, [r4, r6]
- ldr r6, _0811B588 @ =gUnknown_845710C
- lsls r1, 1
- adds r4, r1, r6
- ldrb r4, [r4]
- lsls r4, 24
- asrs r4, 24
- adds r5, r4
- adds r5, 0x7
- str r5, [r2]
- movs r2, 0x2
- add r8, r2
- add r0, r8
- movs r4, 0
- ldrsh r0, [r0, r4]
- adds r6, 0x1
- adds r1, r6
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- adds r0, r1
- adds r0, 0x7
- str r0, [r3]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B584: .4byte gUnknown_84570EC
-_0811B588: .4byte gUnknown_845710C
- thumb_func_end sub_811B53C
-
- thumb_func_start sub_811B58C
-sub_811B58C: @ 811B58C
- push {r4-r7,lr}
- mov r12, r3
- ldr r7, _0811B5CC @ =gUnknown_84570EC
- lsls r5, r0, 2
- adds r0, r5, r7
- movs r4, 0
- ldrsh r3, [r0, r4]
- ldr r6, _0811B5D0 @ =gUnknown_845710C
- lsls r4, r1, 1
- adds r0, r4, r6
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r3, r0
- adds r3, 0x7
- cmp r3, r2
- bne _0811B5D4
- adds r0, r7, 0x2
- adds r0, r5, r0
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r0, r6, 0x1
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r1, r0
- adds r1, 0x7
- cmp r1, r12
- bne _0811B5D4
- movs r0, 0x1
- b _0811B5D6
- .align 2, 0
-_0811B5CC: .4byte gUnknown_84570EC
-_0811B5D0: .4byte gUnknown_845710C
-_0811B5D4:
- movs r0, 0
-_0811B5D6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811B58C
-
- thumb_func_start sub_811B5DC
-sub_811B5DC: @ 811B5DC
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_811B5DC
-
- thumb_func_start sub_811B5F0
-sub_811B5F0: @ 811B5F0
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end sub_811B5F0
-
- thumb_func_start sub_811B600
-sub_811B600: @ 811B600
- push {lr}
- adds r0, 0x63
- lsls r0, 16
- lsrs r0, 16
- bl FlagClear
- pop {r0}
- bx r0
- thumb_func_end sub_811B600
-
- thumb_func_start sub_811B610
-sub_811B610: @ 811B610
- push {lr}
- ldr r2, _0811B628 @ =0x00004010
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_0811B628: .4byte 0x00004010
- thumb_func_end sub_811B610
-
- thumb_func_start sub_811B62C
-sub_811B62C: @ 811B62C
- push {lr}
- ldr r1, _0811B644 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B648 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl show_sprite
- pop {r0}
- bx r0
- .align 2, 0
-_0811B644: .4byte gUnknown_8457120
-_0811B648: .4byte gSaveBlock1Ptr
- thumb_func_end sub_811B62C
-
- thumb_func_start sub_811B64C
-sub_811B64C: @ 811B64C
- push {lr}
- ldr r1, _0811B664 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B668 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl RemoveObjectEventByLocalIdAndMap
- pop {r0}
- bx r0
- .align 2, 0
-_0811B664: .4byte gUnknown_8457120
-_0811B668: .4byte gSaveBlock1Ptr
- thumb_func_end sub_811B64C
-
- thumb_func_start sub_811B66C
-sub_811B66C: @ 811B66C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- ldr r1, _0811B6B8 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B6BC @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- mov r3, sp
- bl TryGetObjectEventIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0811B6D0
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811B6C0 @ =gObjectEvents
- adds r4, r0, r1
- adds r0, r4, 0
- bl ObjectEventIsMovementOverridden
- lsls r0, 24
- cmp r0, 0
- bne _0811B6D0
- ldrb r1, [r5]
- adds r0, r4, 0
- bl ObjectEventSetHeldMovement
- lsls r0, 24
- cmp r0, 0
- bne _0811B6C4
- movs r0, 0x1
- b _0811B6D2
- .align 2, 0
-_0811B6B8: .4byte gUnknown_8457120
-_0811B6BC: .4byte gSaveBlock1Ptr
-_0811B6C0: .4byte gObjectEvents
-_0811B6C4:
- ldr r0, _0811B6DC @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B6E0 @ =0x00000183
- ldr r2, _0811B6E4 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
-_0811B6D0:
- movs r0, 0
-_0811B6D2:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B6DC: .4byte gUnknown_8457138
-_0811B6E0: .4byte 0x00000183
-_0811B6E4: .4byte gUnknown_8457174
- thumb_func_end sub_811B66C
-
- thumb_func_start sub_811B6E8
-sub_811B6E8: @ 811B6E8
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _0811B724 @ =gUnknown_8457120
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0811B728 @ =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- mov r3, sp
- bl TryGetObjectEventIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0811B748
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0811B72C @ =gObjectEvents
- adds r4, r0, r1
- adds r0, r4, 0
- bl ObjectEventClearHeldMovementIfFinished
- lsls r0, 24
- cmp r0, 0
- bne _0811B730
- movs r0, 0
- b _0811B74A
- .align 2, 0
-_0811B724: .4byte gUnknown_8457120
-_0811B728: .4byte gSaveBlock1Ptr
-_0811B72C: .4byte gObjectEvents
-_0811B730:
- bl ScriptContext2_IsEnabled
- lsls r0, 24
- cmp r0, 0
- bne _0811B742
- adds r0, r4, 0
- bl npc_sync_anim_pause_bits
- b _0811B748
-_0811B742:
- adds r0, r4, 0
- bl FreezeObjectEvent
-_0811B748:
- movs r0, 0x1
-_0811B74A:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B6E8
-
- thumb_func_start sub_811B754
-sub_811B754: @ 811B754
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0811B798 @ =gUnknown_203B088
- movs r1, 0
- str r1, [r0]
- ldr r0, _0811B79C @ =gUnknown_203B084
- str r4, [r0]
- cmp r4, 0
- bne _0811B774
- ldr r0, _0811B7A0 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- movs r1, 0xDD
- lsls r1, 1
- ldr r2, _0811B7A4 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B774:
- movs r1, 0
- adds r0, r4, 0
- movs r2, 0x7
-_0811B77A:
- strb r1, [r0]
- strb r1, [r0, 0x1]
- strb r1, [r0, 0x2]
- strb r1, [r0, 0x3]
- adds r0, 0x4
- subs r2, 0x1
- cmp r2, 0
- bge _0811B77A
- bl sub_811BA18
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B798: .4byte gUnknown_203B088
-_0811B79C: .4byte gUnknown_203B084
-_0811B7A0: .4byte gUnknown_8457138
-_0811B7A4: .4byte gUnknown_8457178
- thumb_func_end sub_811B754
-
- thumb_func_start sub_811B7A8
-sub_811B7A8: @ 811B7A8
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r0, 0
- ldrsb r0, [r5, r0]
- cmp r0, 0
- beq _0811B7BC
- cmp r0, 0x1
- beq _0811B7DC
- b _0811B7FA
-_0811B7BC:
- ldr r1, _0811B7D8 @ =gUnknown_845718D
- adds r0, r4, 0
- bl sub_811B66C
- cmp r0, 0x1
- bne _0811B7FA
- adds r0, r4, 0
- bl sub_811B5F0
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0811B7FA
- .align 2, 0
-_0811B7D8: .4byte gUnknown_845718D
-_0811B7DC:
- adds r0, r4, 0
- bl sub_811B6E8
- cmp r0, 0
- beq _0811B7FA
- adds r0, r4, 0
- bl sub_811B64C
- adds r0, r4, 0
- bl sub_811B5F0
- movs r0, 0
- strb r0, [r5]
- movs r0, 0x1
- b _0811B7FC
-_0811B7FA:
- movs r0, 0
-_0811B7FC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_811B7A8
-
- thumb_func_start sub_811B804
-sub_811B804: @ 811B804
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- adds r5, r1, 0
- adds r7, r2, 0
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r0, 0x2
- beq _0811B8A0
- cmp r0, 0x2
- bgt _0811B820
- cmp r0, 0
- beq _0811B826
- b _0811B8B2
-_0811B820:
- cmp r0, 0x3
- beq _0811B888
- b _0811B8B2
-_0811B826:
- bl is_walking_or_running
- cmp r0, 0
- beq _0811B8B2
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r4, r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811B8B2
- mov r0, sp
- adds r1, r4, 0
- bl plaer_get_pos_including_state_based_drift
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r4, r0]
- adds r0, r5, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811B8B2
- ldrb r1, [r7, 0x1]
- adds r0, r5, 0
- bl sub_811B610
- adds r0, r5, 0
- bl sub_811B62C
- adds r0, r5, 0
- bl sub_811B600
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
-_0811B888:
- ldr r1, _0811B89C @ =gUnknown_845718F
- adds r0, r5, 0
- bl sub_811B66C
- cmp r0, 0x1
- bne _0811B8B2
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _0811B8B2
- .align 2, 0
-_0811B89C: .4byte gUnknown_845718F
-_0811B8A0:
- adds r0, r5, 0
- bl sub_811B6E8
- cmp r0, 0
- beq _0811B8B2
- movs r0, 0
- strb r0, [r6]
- movs r0, 0x1
- b _0811B8B4
-_0811B8B2:
- movs r0, 0
-_0811B8B4:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811B804
-
- thumb_func_start sub_811B8BC
-sub_811B8BC: @ 811B8BC
- push {r4-r6,lr}
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r1, _0811B8F4 @ =gUnknown_203B084
- lsls r0, 2
- ldr r1, [r1]
- adds r4, r1, r0
- cmp r1, 0
- bne _0811B8DA
- ldr r0, _0811B8F8 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B8FC @ =0x00000231
- ldr r2, _0811B900 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B8DA:
- movs r0, 0x1
- strb r0, [r4, 0x3]
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_811B524
- strb r0, [r4, 0x1]
- ldrb r0, [r4]
- cmp r0, 0
- beq _0811B904
- movs r0, 0
- b _0811B906
- .align 2, 0
-_0811B8F4: .4byte gUnknown_203B084
-_0811B8F8: .4byte gUnknown_8457138
-_0811B8FC: .4byte 0x00000231
-_0811B900: .4byte gUnknown_8457178
-_0811B904:
- movs r0, 0x1
-_0811B906:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811B8BC
-
- thumb_func_start sub_811B90C
-sub_811B90C: @ 811B90C
- push {r4,lr}
- ldr r1, _0811B934 @ =gUnknown_203B084
- lsls r0, 2
- ldr r1, [r1]
- adds r4, r1, r0
- cmp r1, 0
- bne _0811B926
- ldr r0, _0811B938 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811B93C @ =0x00000241
- ldr r2, _0811B940 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B926:
- movs r0, 0x2
- strb r0, [r4, 0x3]
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _0811B944
- movs r0, 0
- b _0811B946
- .align 2, 0
-_0811B934: .4byte gUnknown_203B084
-_0811B938: .4byte gUnknown_8457138
-_0811B93C: .4byte 0x00000241
-_0811B940: .4byte gUnknown_8457178
-_0811B944:
- movs r0, 0x1
-_0811B946:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811B90C
-
- thumb_func_start sub_811B94C
-sub_811B94C: @ 811B94C
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r1, [r4]
- cmp r1, 0x1
- beq _0811B9AE
- cmp r1, 0x1
- bgt _0811B962
- cmp r1, 0
- beq _0811B96C
- b _0811B9CE
-_0811B962:
- cmp r1, 0x2
- beq _0811B978
- cmp r1, 0x3
- beq _0811B9BC
- b _0811B9CE
-_0811B96C:
- ldrb r0, [r4, 0x3]
- cmp r0, 0x1
- bne _0811B9CE
- movs r0, 0x2
- strb r0, [r4]
- strb r1, [r4, 0x2]
-_0811B978:
- adds r0, r5, 0
- movs r1, 0
- bl sub_811BBC8
- adds r1, r0, 0
- cmp r1, 0
- bne _0811B99E
- ldrb r0, [r4, 0x3]
- cmp r0, 0x2
- bne _0811B99E
- strb r1, [r4]
- strb r1, [r4, 0x2]
- adds r0, r5, 0
- bl sub_811B64C
- adds r0, r5, 0
- bl sub_811B5F0
- b _0811B9CE
-_0811B99E:
- adds r0, r4, 0x2
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_811B804
- cmp r0, 0x1
- bne _0811B9CE
- b _0811B9CC
-_0811B9AE:
- ldrb r0, [r4, 0x3]
- cmp r0, 0x2
- bne _0811B9CE
- movs r1, 0
- movs r0, 0x3
- strb r0, [r4]
- strb r1, [r4, 0x2]
-_0811B9BC:
- adds r0, r4, 0x2
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_811B7A8
- cmp r0, 0x1
- bne _0811B9CE
- movs r0, 0
-_0811B9CC:
- strb r0, [r4]
-_0811B9CE:
- movs r0, 0
- strb r0, [r4, 0x3]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811B94C
-
- thumb_func_start sub_811B9D8
-sub_811B9D8: @ 811B9D8
- push {r4,r5,lr}
- ldr r5, _0811BA08 @ =gUnknown_203B084
- ldr r0, [r5]
- cmp r0, 0
- bne _0811B9EE
- ldr r0, _0811BA0C @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BA10 @ =0x00000283
- ldr r2, _0811BA14 @ =gUnknown_8457178 "UnionObjWork != NULL"
- movs r3, 0x1
- bl AGBAssert
-_0811B9EE:
- movs r4, 0
-_0811B9F0:
- lsls r0, r4, 2
- ldr r1, [r5]
- adds r1, r0
- adds r0, r4, 0
- bl sub_811B94C
- adds r4, 0x1
- cmp r4, 0x7
- ble _0811B9F0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BA08: .4byte gUnknown_203B084
-_0811BA0C: .4byte gUnknown_8457138
-_0811BA10: .4byte 0x00000283
-_0811BA14: .4byte gUnknown_8457178
- thumb_func_end sub_811B9D8
-
- thumb_func_start sub_811BA18
-sub_811BA18: @ 811BA18
- push {r4,lr}
- ldr r4, _0811BA38 @ =sub_811B9D8
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0811BA3C
- adds r0, r4, 0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- b _0811BA4A
- .align 2, 0
-_0811BA38: .4byte sub_811B9D8
-_0811BA3C:
- ldr r0, _0811BA50 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BA54 @ =0x0000028f
- ldr r2, _0811BA58 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
- movs r0, 0x10
-_0811BA4A:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BA50: .4byte gUnknown_8457138
-_0811BA54: .4byte 0x0000028f
-_0811BA58: .4byte gUnknown_8457174
- thumb_func_end sub_811BA18
-
- thumb_func_start sub_811BA5C
-sub_811BA5C: @ 811BA5C
- push {lr}
- ldr r0, _0811BA74 @ =sub_811B9D8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- bhi _0811BA70
- bl DestroyTask
-_0811BA70:
- pop {r0}
- bx r0
- .align 2, 0
-_0811BA74: .4byte sub_811B9D8
- thumb_func_end sub_811BA5C
-
- thumb_func_start sub_811BA78
-sub_811BA78: @ 811BA78
- push {r4,lr}
- movs r4, 0
-_0811BA7C:
- adds r0, r4, 0
- bl sub_811B5DC
- cmp r0, 0
- bne _0811BA92
- adds r0, r4, 0
- bl sub_811B64C
- adds r0, r4, 0
- bl sub_811B5F0
-_0811BA92:
- adds r4, 0x1
- cmp r4, 0x7
- ble _0811BA7C
- ldr r1, _0811BAA8 @ =gUnknown_203B084
- movs r0, 0
- str r0, [r1]
- bl sub_811BA5C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BAA8: .4byte gUnknown_203B084
- thumb_func_end sub_811BA78
-
- thumb_func_start sub_811BAAC
-sub_811BAAC: @ 811BAAC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- str r0, [sp, 0x8]
- mov r9, r1
- movs r7, 0
- mov r0, r9
- lsls r0, 2
- mov r8, r0
- ldr r0, _0811BB38 @ =gUnknown_84570EC
- mov r2, r8
- adds r1, r2, r0
- ldrh r1, [r1]
- mov r2, sp
- strh r1, [r2, 0xC]
- adds r0, 0x2
- add r0, r8
- ldrh r0, [r0]
- mov r10, r0
- ldr r6, _0811BB3C @ =gUnknown_845710C
-_0811BADA:
- mov r5, r8
- add r5, r9
- adds r5, r7
- adds r4, r5, 0
- subs r4, 0x38
- lsls r4, 24
- lsrs r4, 24
- movs r2, 0
- ldrsb r2, [r6, r2]
- mov r0, sp
- ldrh r0, [r0, 0xC]
- adds r2, r0, r2
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x1
- ldrsb r3, [r6, r3]
- add r3, r10
- lsls r3, 16
- asrs r3, 16
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x19
- adds r1, r4, 0
- bl sprite_new
- ldr r1, [sp, 0x8]
- adds r5, r1, r5
- strb r0, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8069124
- adds r6, 0x2
- adds r7, 0x1
- cmp r7, 0x4
- ble _0811BADA
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BB38: .4byte gUnknown_84570EC
-_0811BB3C: .4byte gUnknown_845710C
- thumb_func_end sub_811BAAC
-
- thumb_func_start sub_811BB40
-sub_811BB40: @ 811BB40
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r4, 0
- ldr r6, _0811BB64 @ =gSprites
-_0811BB48:
- adds r0, r5, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- adds r4, 0x1
- cmp r4, 0x27
- ble _0811BB48
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BB64: .4byte gSprites
- thumb_func_end sub_811BB40
-
- thumb_func_start sub_811BB68
-sub_811BB68: @ 811BB68
- push {r4-r7,lr}
- sub sp, 0x8
- movs r5, 0
- add r7, sp, 0x4
-_0811BB70:
- movs r4, 0
- adds r6, r5, 0x1
-_0811BB74:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- adds r3, r7, 0
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0
- bl sub_8059024
- adds r4, 0x1
- cmp r4, 0x4
- ble _0811BB74
- adds r5, r6, 0
- cmp r5, 0x7
- ble _0811BB70
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BB68
-
- thumb_func_start sub_811BBA0
-sub_811BBA0: @ 811BBA0
- push {lr}
- adds r1, r0, 0
- cmp r1, 0
- beq _0811BBB4
- ldr r0, _0811BBB0 @ =gUnknown_845711B
- adds r0, r1, r0
- ldrb r0, [r0]
- b _0811BBC4
- .align 2, 0
-_0811BBB0: .4byte gUnknown_845711B
-_0811BBB4:
- ldrb r1, [r2, 0xA]
- movs r0, 0x7F
- ands r0, r1
- cmp r0, 0x45
- beq _0811BBC2
- movs r0, 0x4
- b _0811BBC4
-_0811BBC2:
- movs r0, 0x1
-_0811BBC4:
- pop {r1}
- bx r1
- thumb_func_end sub_811BBA0
-
- thumb_func_start sub_811BBC8
-sub_811BBC8: @ 811BBC8
- push {lr}
- adds r2, r0, 0
- lsls r0, r2, 2
- adds r0, r2
- adds r0, r1
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- bl sub_806916C
- pop {r1}
- bx r1
- thumb_func_end sub_811BBC8
-
- thumb_func_start sub_811BBE0
-sub_811BBE0: @ 811BBE0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r5, r0, 0
- adds r6, r1, 0
- mov r9, r3
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r0, r5, 2
- adds r0, r5
- adds r7, r0, r6
- adds r0, r5, 0
- bl sub_811BBC8
- cmp r0, 0x1
- bne _0811BC1E
- adds r4, r7, 0
- subs r4, 0x38
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl sub_8069124
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_80691A4
-_0811BC1E:
- adds r0, r7, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- mov r1, r8
- bl sub_8069094
- adds r0, r6, 0
- adds r1, r5, 0
- mov r2, r9
- bl sub_811BBA0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_811C008
- add r3, sp, 0x4
- adds r0, r5, 0
- adds r1, r6, 0
- mov r2, sp
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0x1
- bl sub_8059024
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BBE0
-
- thumb_func_start sub_811BC68
-sub_811BC68: @ 811BC68
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r0, r4, 2
- adds r0, r4
- adds r0, r5
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_80691A4
- add r3, sp, 0x4
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl sub_811B53C
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- movs r2, 0
- bl sub_8059024
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BC68
-
- thumb_func_start sub_811BCA0
-sub_811BCA0: @ 811BCA0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r7, r0, 0
- mov r8, r1
- mov r6, sp
- adds r6, 0x2
- mov r0, sp
- adds r1, r6, 0
- bl PlayerGetDestCoords
- add r4, sp, 0x4
- mov r5, sp
- adds r5, 0x6
- adds r0, r4, 0
- adds r1, r5, 0
- bl plaer_get_pos_including_state_based_drift
- lsls r0, r7, 2
- adds r0, r7
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- bl sub_806916C
- mov r10, r6
- mov r9, r4
- adds r6, r5, 0
- cmp r0, 0x1
- bne _0811BD2C
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- mov r0, r10
- movs r1, 0
- ldrsh r3, [r0, r1]
- adds r0, r7, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811BD98
- movs r0, 0
- ldrsh r2, [r4, r0]
- movs r1, 0
- ldrsh r3, [r6, r1]
- adds r0, r7, 0
- movs r1, 0
- bl sub_811B58C
- cmp r0, 0x1
- beq _0811BD98
- mov r2, r8
- ldrb r0, [r2, 0xB]
- lsls r0, 31
- lsrs r0, 31
- ldrb r1, [r2, 0x2]
- bl sub_811B524
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r7, 0
- movs r1, 0
- mov r3, r8
- bl sub_811BBE0
-_0811BD2C:
- movs r5, 0x1
- mov r4, r8
- adds r4, 0x4
-_0811BD32:
- ldrb r0, [r4]
- cmp r0, 0
- bne _0811BD42
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811BC68
- b _0811BD90
-_0811BD42:
- mov r0, sp
- movs r1, 0
- ldrsh r2, [r0, r1]
- mov r0, r10
- movs r1, 0
- ldrsh r3, [r0, r1]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811B58C
- cmp r0, 0
- bne _0811BD90
- mov r0, r9
- movs r1, 0
- ldrsh r2, [r0, r1]
- movs r0, 0
- ldrsh r3, [r6, r0]
- adds r0, r7, 0
- adds r1, r5, 0
- bl sub_811B58C
- cmp r0, 0
- bne _0811BD90
- ldrb r2, [r4]
- lsrs r0, r2, 3
- movs r1, 0x1
- ands r0, r1
- movs r1, 0x7
- ands r1, r2
- bl sub_811B524
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r7, 0
- adds r1, r5, 0
- mov r3, r8
- bl sub_811BBE0
-_0811BD90:
- adds r4, 0x1
- adds r5, 0x1
- cmp r5, 0x4
- ble _0811BD32
-_0811BD98:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811BCA0
-
- thumb_func_start sub_811BDA8
-sub_811BDA8: @ 811BDA8
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r0, [r4, 0xA]
- lsls r0, 25
- lsrs r0, 25
- subs r0, 0x40
- cmp r0, 0x14
- bhi _0811BE4C
- lsls r0, 2
- ldr r1, _0811BDC4 @ =_0811BDC8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811BDC4: .4byte _0811BDC8
- .align 2, 0
-_0811BDC8:
- .4byte _0811BE1C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE4C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE3C
- .4byte _0811BE1C
-_0811BE1C:
- ldrb r1, [r4, 0xB]
- lsls r1, 31
- lsrs r1, 31
- ldrb r2, [r4, 0x2]
- adds r0, r5, 0
- bl sub_811B8BC
- movs r4, 0
-_0811BE2C:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BC68
- adds r4, 0x1
- cmp r4, 0x4
- bls _0811BE2C
- b _0811BE58
-_0811BE3C:
- adds r0, r5, 0
- bl sub_811B90C
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BCA0
- b _0811BE58
-_0811BE4C:
- ldr r0, _0811BE60 @ =gUnknown_8457138 "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/rfu_union_tool.c"
- ldr r1, _0811BE64 @ =0x000003d3
- ldr r2, _0811BE68 @ =gUnknown_8457174 "0"
- movs r3, 0x1
- bl AGBAssert
-_0811BE58:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BE60: .4byte gUnknown_8457138
-_0811BE64: .4byte 0x000003d3
-_0811BE68: .4byte gUnknown_8457174
- thumb_func_end sub_811BDA8
-
- thumb_func_start sub_811BE6C
-sub_811BE6C: @ 811BE6C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811B90C
- movs r4, 0
-_0811BE76:
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BC68
- adds r4, 0x1
- cmp r4, 0x4
- ble _0811BE76
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BE6C
-
- thumb_func_start sub_811BE8C
-sub_811BE8C: @ 811BE8C
- push {r4,r5,lr}
- ldr r2, _0811BEAC @ =gUnknown_203B088
- movs r1, 0
- str r1, [r2]
- movs r5, 0
- ldr r4, [r0]
-_0811BE98:
- ldrb r0, [r4, 0x1A]
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x1
- bne _0811BEB0
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BDA8
- b _0811BEBC
- .align 2, 0
-_0811BEAC: .4byte gUnknown_203B088
-_0811BEB0:
- cmp r1, 0x2
- bne _0811BEBC
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811BE6C
-_0811BEBC:
- adds r4, 0x20
- adds r5, 0x1
- cmp r5, 0x7
- ble _0811BE98
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811BE8C
-
- thumb_func_start sub_811BECC
-sub_811BECC: @ 811BECC
- ldr r1, _0811BED8 @ =gUnknown_203B088
- movs r0, 0x96
- lsls r0, 1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0811BED8: .4byte gUnknown_203B088
- thumb_func_end sub_811BECC
-
- thumb_func_start sub_811BEDC
-sub_811BEDC: @ 811BEDC
- push {lr}
- adds r2, r0, 0
- ldr r0, _0811BEFC @ =gUnknown_203B088
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- movs r0, 0x96
- lsls r0, 1
- cmp r1, r0
- bls _0811BEF6
- adds r0, r2, 0
- bl sub_811BE8C
-_0811BEF6:
- pop {r0}
- bx r0
- .align 2, 0
-_0811BEFC: .4byte gUnknown_203B088
- thumb_func_end sub_811BEDC
-
- thumb_func_start sub_811BF00
-sub_811BF00: @ 811BF00
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r5, r0, 0
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- bl is_walking_or_running
- cmp r0, 0
- bne _0811BF48
- b _0811BFEE
-_0811BF1C:
- ldr r4, _0811BF44 @ =gUnknown_8457116
- bl GetPlayerFacingDirection
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r2, [r0]
- adds r0, r6, 0
- ldr r1, [sp, 0xC]
- bl sub_811C008
- ldr r0, [sp, 0x4]
- strh r6, [r0]
- mov r1, sp
- ldrh r2, [r1, 0xC]
- ldr r1, [sp, 0x8]
- strh r2, [r1]
- movs r0, 0x1
- b _0811BFF0
- .align 2, 0
-_0811BF44: .4byte gUnknown_8457116
-_0811BF48:
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- movs r0, 0
- str r0, [sp, 0xC]
- ldr r0, _0811C000 @ =gUnknown_84570EC
- adds r7, r5, 0
- movs r1, 0
- mov r10, r1
- adds r2, r0, 0x2
- str r2, [sp, 0x10]
- str r0, [sp, 0x14]
-_0811BF66:
- movs r6, 0
- ldr r4, [sp, 0x14]
- movs r0, 0
- ldrsh r4, [r4, r0]
- mov r9, r4
- ldr r1, [sp, 0x10]
- mov r8, r1
- ldr r5, _0811C004 @ =gUnknown_845710C
-_0811BF76:
- mov r2, r10
- adds r3, r2, r6
- mov r0, sp
- movs r4, 0
- ldrsh r1, [r0, r4]
- movs r0, 0
- ldrsb r0, [r5, r0]
- add r0, r9
- adds r0, 0x7
- cmp r1, r0
- bne _0811BFCA
- mov r1, sp
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- mov r4, r8
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r2, 0x1
- ldrsb r2, [r5, r2]
- adds r1, r2
- adds r1, 0x7
- cmp r0, r1
- bne _0811BFCA
- adds r0, r3, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_806916C
- cmp r0, 0
- bne _0811BFCA
- adds r0, r4, 0
- bl sub_8069294
- cmp r0, 0
- bne _0811BFCA
- ldrb r1, [r7, 0x1A]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0x1
- beq _0811BF1C
-_0811BFCA:
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _0811BF76
- adds r7, 0x20
- movs r4, 0x5
- add r10, r4
- ldr r0, [sp, 0x10]
- adds r0, 0x4
- str r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- adds r1, 0x4
- str r1, [sp, 0x14]
- ldr r2, [sp, 0xC]
- adds r2, 0x1
- str r2, [sp, 0xC]
- cmp r2, 0x7
- ble _0811BF66
-_0811BFEE:
- movs r0, 0
-_0811BFF0:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C000: .4byte gUnknown_84570EC
-_0811C004: .4byte gUnknown_845710C
- thumb_func_end sub_811BF00
-
- thumb_func_start sub_811C008
-sub_811C008: @ 811C008
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r1, 0
- lsls r1, r2, 24
- lsrs r1, 24
- lsls r0, r3, 2
- adds r0, r3
- subs r0, 0x38
- adds r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl sub_8069058
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811C008
-
- thumb_func_start sub_811C028
-sub_811C028: @ 811C028
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r3, r4, 5
- adds r3, r2
- adds r2, r3, 0
- bl sub_811BBA0
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_811C008
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_811C028
-
- thumb_func_start sub_811C04C
-sub_811C04C: @ 811C04C
- push {r4-r7,lr}
- movs r0, 0xA
- bl sub_81173C0
- movs r4, 0
- movs r7, 0x64
- ldr r6, _0811C0CC @ =gPlayerParty
- ldr r5, _0811C0D0 @ =gEnemyParty
-_0811C05C:
- ldr r0, _0811C0D4 @ =gSelectedOrderFromParty
- adds r0, r4, r0
- ldrb r0, [r0]
- subs r0, 0x1
- adds r1, r0, 0
- muls r1, r7
- adds r1, r6
- adds r0, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r5, 0x64
- adds r4, 0x1
- cmp r4, 0x1
- ble _0811C05C
- ldr r4, _0811C0CC @ =gPlayerParty
- movs r0, 0xFA
- lsls r0, 1
- adds r5, r4, r0
-_0811C082:
- adds r0, r4, 0
- bl ZeroMonData
- adds r4, 0x64
- cmp r4, r5
- ble _0811C082
- ldr r4, _0811C0CC @ =gPlayerParty
- movs r5, 0
- adds r6, r4, 0
- adds r6, 0x64
-_0811C096:
- ldr r1, _0811C0D0 @ =gEnemyParty
- adds r1, r5, r1
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
- adds r4, 0x64
- adds r5, 0x64
- cmp r4, r6
- ble _0811C096
- movs r0, 0x32
- bl IncrementGameStat
- bl CalculatePlayerPartyCount
- ldr r0, _0811C0D8 @ =gTrainerBattleOpponent_A
- movs r2, 0xC0
- lsls r2, 4
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _0811C0DC @ =CB2_InitBattle
- bl SetMainCallback2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0CC: .4byte gPlayerParty
-_0811C0D0: .4byte gEnemyParty
-_0811C0D4: .4byte gSelectedOrderFromParty
-_0811C0D8: .4byte gTrainerBattleOpponent_A
-_0811C0DC: .4byte CB2_InitBattle
- thumb_func_end sub_811C04C
-
- thumb_func_start sub_811C0E0
-sub_811C0E0: @ 811C0E0
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x18
- adds r5, r0, 0
- mov r10, r1
- adds r6, r2, 0
- ldr r4, [sp, 0x34]
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- mov r8, r0
- ldr r1, _0811C14C @ =gUnknown_84571A8
- mov r9, r1
- ldrb r0, [r1]
- lsls r1, r0, 4
- orrs r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- str r3, [sp, 0x14]
- bl FillWindowPixelBuffer
- mov r0, r8
- str r0, [sp]
- str r0, [sp, 0x4]
- mov r1, r9
- str r1, [sp, 0x8]
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- mov r0, r10
- str r0, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0x3
- adds r2, r6, 0
- ldr r3, [sp, 0x14]
- bl AddTextPrinterParameterized4
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C14C: .4byte gUnknown_84571A8
- thumb_func_end sub_811C0E0
-
- thumb_func_start sub_811C150
-sub_811C150: @ 811C150
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0811C168
- cmp r0, 0x1
- beq _0811C196
- b _0811C1AA
-_0811C168:
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD
- bl DrawTextBorderOuter
- str r5, [sp]
- movs r0, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x2
- bl sub_811C0E0
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0811C1AA
-_0811C196:
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0811C1AA
- strh r0, [r4]
- movs r0, 0x1
- b _0811C1AC
-_0811C1AA:
- movs r0, 0
-_0811C1AC:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_811C150
-
- thumb_func_start sub_811C1B4
-sub_811C1B4: @ 811C1B4
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_811C1B4
-
- thumb_func_start sub_811C1C8
-sub_811C1C8: @ 811C1C8
- push {r4,lr}
- sub sp, 0xC
- ldr r1, _0811C1E8 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x33
- bls _0811C1DE
- b _0811C516
-_0811C1DE:
- lsls r0, 2
- ldr r1, _0811C1EC @ =_0811C1F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811C1E8: .4byte gMain
-_0811C1EC: .4byte _0811C1F0
- .align 2, 0
-_0811C1F0:
- .4byte _0811C2C0
- .4byte _0811C364
- .4byte _0811C38C
- .4byte _0811C3B0
- .4byte _0811C400
- .4byte _0811C516
- .4byte _0811C4E4
- .4byte _0811C4C0
- .4byte _0811C4E4
- .4byte _0811C500
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C516
- .4byte _0811C48C
- .4byte _0811C4A8
-_0811C2C0:
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r4, _0811C350 @ =gUnknown_203B08C
- movs r0, 0x4
- bl AllocZeroed
- str r0, [r4]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0811C354 @ =gUnknown_8457194
- movs r0, 0
- movs r2, 0x1
- bl InitBgsFromTemplates
- bl ResetTempTileDataBuffers
- ldr r0, _0811C358 @ =gUnknown_8457198
- bl InitWindows
- lsls r0, 16
- cmp r0, 0
- bne _0811C300
- b _0811C52A
-_0811C300:
- bl DeactivateAllTextPrinters
- movs r0, 0
- bl ClearWindowTilemap
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD0
- bl TextWindow_SetStdFrame0_WithPal
- bl Menu_LoadStdPal
- ldr r0, _0811C35C @ =sub_811C1B4
- bl SetVBlankCallback
- ldr r1, _0811C360 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0811C4F2
- .align 2, 0
-_0811C350: .4byte gUnknown_203B08C
-_0811C354: .4byte gUnknown_8457194
-_0811C358: .4byte gUnknown_8457198
-_0811C35C: .4byte sub_811C1B4
-_0811C360: .4byte gMain
-_0811C364:
- ldr r0, _0811C380 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C384 @ =gUnknown_841E538
- movs r2, 0
- bl sub_811C150
- cmp r0, 0
- bne _0811C376
- b _0811C516
-_0811C376:
- ldr r1, _0811C388 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C380: .4byte gUnknown_203B08C
-_0811C384: .4byte gUnknown_841E538
-_0811C388: .4byte gMain
-_0811C38C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- ldr r1, _0811C3AC @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0811C4F2
- .align 2, 0
-_0811C3AC: .4byte gMain
-_0811C3B0:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- beq _0811C3BC
- b _0811C516
-_0811C3BC:
- ldr r4, _0811C3D8 @ =gBlockSendBuffer
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x20
- bl memset
- ldr r0, _0811C3DC @ =gSelectedOrderFromParty
- ldrb r1, [r0]
- ldrb r0, [r0, 0x1]
- cmn r1, r0
- bne _0811C3E0
- movs r0, 0x52
- b _0811C3E2
- .align 2, 0
-_0811C3D8: .4byte gBlockSendBuffer
-_0811C3DC: .4byte gSelectedOrderFromParty
-_0811C3E0:
- movs r0, 0x51
-_0811C3E2:
- strb r0, [r4]
- ldr r1, _0811C3F8 @ =gBlockSendBuffer
- movs r0, 0
- movs r2, 0x20
- bl SendBlock
- ldr r1, _0811C3FC @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C3F8: .4byte gBlockSendBuffer
-_0811C3FC: .4byte gMain
-_0811C400:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0811C40E
- b _0811C516
-_0811C40E:
- ldr r1, _0811C440 @ =gBlockRecvBuffer
- ldrh r0, [r1]
- cmp r0, 0x51
- bne _0811C448
- movs r2, 0x80
- lsls r2, 1
- adds r0, r1, r2
- ldrh r0, [r0]
- cmp r0, 0x51
- bne _0811C448
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0811C444 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x32
- b _0811C47E
- .align 2, 0
-_0811C440: .4byte gBlockRecvBuffer
-_0811C444: .4byte gMain
-_0811C448:
- bl sub_800AAC0
- ldr r4, _0811C46C @ =gBlockRecvBuffer
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 16
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x52
- bne _0811C474
- ldr r0, _0811C470 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x6
- b _0811C47E
- .align 2, 0
-_0811C46C: .4byte gBlockRecvBuffer
-_0811C470: .4byte gMain
-_0811C474:
- ldr r0, _0811C488 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x8
-_0811C47E:
- strb r1, [r0]
- bl ResetBlockReceivedFlags
- b _0811C516
- .align 2, 0
-_0811C488: .4byte gMain
-_0811C48C:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _0811C516
- bl sub_800AB9C
- ldr r1, _0811C4A4 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0811C4F2
- .align 2, 0
-_0811C4A4: .4byte gMain
-_0811C4A8:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C4BC @ =sub_811C04C
- bl SetMainCallback2
- b _0811C516
- .align 2, 0
-_0811C4BC: .4byte sub_811C04C
-_0811C4C0:
- ldr r0, _0811C4D8 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C4DC @ =gUnknown_841E58D
- movs r2, 0x1
- bl sub_811C150
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C4E0 @ =CB2_ReturnToField
- bl SetMainCallback2
- b _0811C516
- .align 2, 0
-_0811C4D8: .4byte gUnknown_203B08C
-_0811C4DC: .4byte gUnknown_841E58D
-_0811C4E0: .4byte CB2_ReturnToField
-_0811C4E4:
- ldr r0, _0811C4FC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0811C516
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
-_0811C4F2:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0811C516
- .align 2, 0
-_0811C4FC: .4byte gReceivedRemoteLinkPlayers
-_0811C500:
- ldr r0, _0811C534 @ =gUnknown_203B08C
- ldr r0, [r0]
- ldr r1, _0811C538 @ =gUnknown_841E572
- movs r2, 0x1
- bl sub_811C150
- cmp r0, 0
- beq _0811C516
- ldr r0, _0811C53C @ =CB2_ReturnToField
- bl SetMainCallback2
-_0811C516:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
-_0811C52A:
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C534: .4byte gUnknown_203B08C
-_0811C538: .4byte gUnknown_841E572
-_0811C53C: .4byte CB2_ReturnToField
- thumb_func_end sub_811C1C8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index 09cc3cfb2..cfbef4ec2 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -1,13 +1,23 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
+#include "constants/battle.h"
+#include "constants/battle_ai.h"
+#include "constants/abilities.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/battle_move_effects.h"
+#include "constants/hold_effects.h"
+#include "constants/pokemon.h"
.include "asm/macros/battle_ai_script.inc"
.section script_data, "aw", %progbits
+@ The FRLG scripts are improved subtly by Emerald in a few places
+@ To make adding these improvements easier they are commented and tagged with "Improvement in Emerald"
+@ Emerald also adds a few entirely new AI commands (mostly to expand Double Battle AI), which are not included
+
gBattleAI_ScriptsTable:: @ 81D9BF4
.4byte AI_CheckBadMove
- .4byte AI_TryToFaint
.4byte AI_CheckViability
+ .4byte AI_TryToFaint
.4byte AI_SetupFirstTurn
.4byte AI_Risky
.4byte AI_PreferStrongestMove
@@ -39,3087 +49,3209 @@ gBattleAI_ScriptsTable:: @ 81D9BF4
.4byte AI_FirstBattle
AI_CheckBadMove:: @ 81D9C74
- is_most_powerful_move
- if_equal 0, AI_sub_81D9CE0
- if_damage_bonus 0, AI_sub_81DA433
- get_ability 0
- if_equal 10, AI_sub_81D9CA6
- if_equal 11, AI_sub_81D9CB3
- if_equal 18, AI_sub_81D9CC0
- if_equal 25, AI_sub_81D9CCD
- if_equal 26, AI_sub_81D9CD8
- jump AI_sub_81D9CE0
-
-AI_sub_81D9CA6:: @ 81D9CA6
- get_type 4
- if_arg_equal 13, AI_sub_81DA436
- jump AI_sub_81D9CE0
-
-AI_sub_81D9CB3:: @ 81D9CB3
- get_type 4
- if_arg_equal 11, AI_sub_81DA436
- jump AI_sub_81D9CE0
-
-AI_sub_81D9CC0:: @ 81D9CC0
- get_type 4
- if_arg_equal 10, AI_sub_81DA436
- jump AI_sub_81D9CE0
-
-AI_sub_81D9CCD:: @ 81D9CCD
- if_damage_bonus 80, AI_sub_81D9CE0
- jump AI_sub_81DA433
-
-AI_sub_81D9CD8:: @ 81D9CD8
- get_type 4
- if_arg_equal 4, AI_sub_81DA433
-
-AI_sub_81D9CE0:: @ 81D9CE0
- get_ability 0
- if_not_equal 43, AI_sub_81D9D27
- if_move 45, AI_sub_81DA433
- if_move 46, AI_sub_81DA433
- if_move 47, AI_sub_81DA433
- if_move 48, AI_sub_81DA433
- if_move 103, AI_sub_81DA433
- if_move 173, AI_sub_81DA433
- if_move 253, AI_sub_81DA433
- if_move 319, AI_sub_81DA433
- if_move 320, AI_sub_81DA433
-
-AI_sub_81D9D27:: @ 81D9D27
- if_effect 1, AI_sub_81D9FB6
- if_effect 7, AI_sub_81D9FCF
- if_effect 8, AI_sub_81DA008
- if_effect 10, AI_sub_81DA020
- if_effect 11, AI_sub_81DA029
- if_effect 12, AI_sub_81DA032
- if_effect 13, AI_sub_81DA03B
- if_effect 14, AI_sub_81DA044
- if_effect 15, AI_sub_81DA04D
- if_effect 16, AI_sub_81DA056
- if_effect 18, AI_sub_81DA05F
- if_effect 19, AI_sub_81DA074
- if_effect 20, AI_sub_81DA081
- if_effect 21, AI_sub_81DA08E
- if_effect 22, AI_sub_81DA09B
- if_effect 23, AI_sub_81DA0A8
- if_effect 24, AI_sub_81DA0BD
- if_effect 25, AI_sub_81DA0D4
- if_effect 26, AI_sub_81DA1B2
- if_effect 28, AI_sub_81DA14A
- if_effect 33, AI_sub_81DA15B
- if_effect 35, AI_sub_81DA18A
- if_effect 38, AI_sub_81DA195
- if_effect 39, AI_sub_81DA1B2
- if_effect 40, AI_sub_81DA1B2
- if_effect 46, AI_sub_81DA1CC
- if_effect 47, AI_sub_81DA1D7
- if_effect 49, AI_sub_81DA1E2
- if_effect 50, AI_sub_81DA020
- if_effect 51, AI_sub_81DA029
- if_effect 52, AI_sub_81DA032
- if_effect 53, AI_sub_81DA03B
- if_effect 54, AI_sub_81DA044
- if_effect 55, AI_sub_81DA04D
- if_effect 56, AI_sub_81DA056
- if_effect 58, AI_sub_81DA05F
- if_effect 59, AI_sub_81DA074
- if_effect 60, AI_sub_81DA081
- if_effect 61, AI_sub_81DA08E
- if_effect 62, AI_sub_81DA09B
- if_effect 63, AI_sub_81DA0A8
- if_effect 64, AI_sub_81DA0BD
- if_effect 65, AI_sub_81DA1F5
- if_effect 66, AI_sub_81DA15B
- if_effect 67, AI_sub_81DA200
- if_effect 79, AI_sub_81DA219
- if_effect 80, AI_sub_81DA1B2
- if_effect 84, AI_sub_81DA22B
- if_effect 86, AI_sub_81DA246
- if_effect 87, AI_sub_81DA1B2
- if_effect 88, AI_sub_81DA1B2
- if_effect 89, AI_sub_81DA1B2
- if_effect 90, AI_sub_81DA24E
- if_effect 92, AI_sub_81DA256
- if_effect 97, AI_sub_81DA256
- if_effect 99, AI_sub_81DA1B2
- if_effect 106, AI_sub_81DA261
- if_effect 107, AI_sub_81D9FF3
- if_effect 108, AI_sub_81DA056
- if_effect 109, AI_sub_81DA26C
- if_effect 112, AI_sub_81DA27D
- if_effect 113, AI_sub_81DA288
- if_effect 114, AI_sub_81DA293
- if_effect 115, AI_sub_81DA29E
- if_effect 118, AI_sub_81DA1E2
- if_effect 120, AI_sub_81DA2A6
- if_effect 121, AI_sub_81DA1B2
- if_effect 122, AI_sub_81DA1B2
- if_effect 123, AI_sub_81DA1B2
- if_effect 124, AI_sub_81DA2E6
- if_effect 126, AI_sub_81DA1AA
- if_effect 127, AI_sub_81DA301
- if_effect -126, AI_sub_81DA1B2
- if_effect -120, AI_sub_81DA30A
- if_effect -119, AI_sub_81DA312
- if_effect -114, AI_sub_81DA019
- if_effect -113, AI_sub_81DA0D4
- if_effect -112, AI_sub_81DA1B2
- if_effect -111, AI_sub_81DA1B2
- if_effect -108, AI_sub_81DA31A
- if_effect -103, AI_sub_81DA433
- if_effect -100, AI_sub_81DA029
- if_effect -98, AI_sub_81DA325
- if_effect -96, AI_sub_81DA32E
- if_effect -95, AI_sub_81DA337
- if_effect -94, AI_sub_81DA337
- if_effect -92, AI_sub_81DA346
- if_effect -91, AI_sub_81DA34E
- if_effect -90, AI_sub_81DA1E2
- if_effect -89, AI_sub_81DA359
- if_effect -88, AI_sub_81DA2F1
- if_effect -86, AI_sub_81DA1B2
- if_effect -80, AI_sub_81DA37E
- if_effect -79, AI_sub_81DA386
- if_effect -75, AI_sub_81DA38F
- if_effect -74, AI_sub_81DA1B2
- if_effect -72, AI_sub_81DA39A
- if_effect -68, AI_sub_81DA386
- if_effect -67, AI_sub_81DA1B2
- if_effect -64, AI_sub_81DA3A3
- if_effect -63, AI_sub_81DA3AE
- if_effect -60, AI_sub_81DA1B2
- if_effect -55, AI_sub_81DA3B9
- if_effect -51, AI_sub_81DA3C4
- if_effect -50, AI_sub_81DA3D5
- if_effect -48, AI_sub_81DA3E6
- if_effect -46, AI_sub_81DA3F7
- if_effect -45, AI_sub_81DA402
- if_effect -44, AI_sub_81DA413
- end
-
-AI_sub_81D9FB6:: @ 81D9FB6
- get_ability 0
- if_equal 15, AI_sub_81DA433
- if_equal 72, AI_sub_81DA433
- if_status 0, 255, AI_sub_81DA433
- end
-
-AI_sub_81D9FCF:: @ 81D9FCF
- if_damage_bonus 0, AI_sub_81DA433
- get_ability 0
- if_equal 6, AI_sub_81DA433
- count_alive_pokemon 1
- if_not_equal 0, AI_sub_81D9FF2
- count_alive_pokemon 0
- if_not_equal 0, AI_sub_81DA433
- jump AI_sub_81DA424
-
-AI_sub_81D9FF2:: @ 81D9FF2
- end
-
-AI_sub_81D9FF3:: @ 81D9FF3
- if_status2 0, 0x8000000, AI_sub_81DA433
- if_not_status 0, 7, AI_sub_81DA430
- end
-
-AI_sub_81DA008:: @ 81DA008
- if_not_status 0, 7, AI_sub_81DA430
- if_damage_bonus 0, AI_sub_81DA433
- end
-
-AI_sub_81DA019:: @ 81DA019
- if_hp_less_than 1, 51, AI_sub_81DA433
-
-AI_sub_81DA020:: @ 81DA020
- if_stat_level_equal 1, 1, 12, AI_sub_81DA433
- end
-
-AI_sub_81DA029:: @ 81DA029
- if_stat_level_equal 1, 2, 12, AI_sub_81DA433
- end
-
-AI_sub_81DA032:: @ 81DA032
- if_stat_level_equal 1, 3, 12, AI_sub_81DA433
- end
-
-AI_sub_81DA03B:: @ 81DA03B
- if_stat_level_equal 1, 4, 12, AI_sub_81DA433
- end
-
-AI_sub_81DA044:: @ 81DA044
- if_stat_level_equal 1, 5, 12, AI_sub_81DA433
- end
-
-AI_sub_81DA04D:: @ 81DA04D
- if_stat_level_equal 1, 6, 12, AI_sub_81DA433
- end
-
-AI_sub_81DA056:: @ 81DA056
- if_stat_level_equal 1, 7, 12, AI_sub_81DA433
- end
-
-AI_sub_81DA05F:: @ 81DA05F
- if_stat_level_equal 0, 1, 0, AI_sub_81DA433
- get_ability 0
- if_equal 52, AI_sub_81DA433
- jump AI_sub_81DA0C5
+@ if_move MOVE_FISSURE, AI_CBM_CheckIfNegatesType @ Improvement in Emerald
+@ if_move MOVE_HORN_DRILL, AI_CBM_CheckIfNegatesType
+ get_how_powerful_move_is
+ if_equal MOVE_POWER_DISCOURAGED, AI_CheckBadMove_CheckSoundproof
+
+AI_CBM_CheckIfNegatesType::
+ if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_VOLT_ABSORB, CheckIfVoltAbsorbCancelsElectric
+ if_equal ABILITY_WATER_ABSORB, CheckIfWaterAbsorbCancelsWater
+ if_equal ABILITY_FLASH_FIRE, CheckIfFlashFireCancelsFire
+ if_equal ABILITY_WONDER_GUARD, CheckIfWonderGuardCancelsMove
+ if_equal ABILITY_LEVITATE, CheckIfLevitateCancelsGroundMove
+ goto AI_CheckBadMove_CheckSoundproof
+
+CheckIfVoltAbsorbCancelsElectric:: @ 81D9CA6
+ get_curr_move_type
+ if_equal_ TYPE_ELECTRIC, Score_Minus12
+ goto AI_CheckBadMove_CheckSoundproof
+
+CheckIfWaterAbsorbCancelsWater:: @ 81D9CB3
+ get_curr_move_type
+ if_equal_ TYPE_WATER, Score_Minus12
+ goto AI_CheckBadMove_CheckSoundproof
+
+CheckIfFlashFireCancelsFire:: @ 81D9CC0
+ get_curr_move_type
+ if_equal_ TYPE_FIRE, Score_Minus12
+ goto AI_CheckBadMove_CheckSoundproof
+
+CheckIfWonderGuardCancelsMove:: @ 81D9CCD
+ if_type_effectiveness AI_EFFECTIVENESS_x2, AI_CheckBadMove_CheckSoundproof
+ goto Score_Minus10
+
+CheckIfLevitateCancelsGroundMove:: @ 81D9CD8
+ get_curr_move_type
+ if_equal_ TYPE_GROUND, Score_Minus10
+
+AI_CheckBadMove_CheckSoundproof:: @ 81D9CE0
+ get_ability AI_TARGET
+ if_not_equal ABILITY_SOUNDPROOF, AI_CheckBadMove_CheckEffect
+ if_move MOVE_GROWL, Score_Minus10
+ if_move MOVE_ROAR, Score_Minus10
+ if_move MOVE_SING, Score_Minus10
+ if_move MOVE_SUPERSONIC, Score_Minus10
+ if_move MOVE_SCREECH, Score_Minus10
+ if_move MOVE_SNORE, Score_Minus10
+ if_move MOVE_UPROAR, Score_Minus10
+ if_move MOVE_METAL_SOUND, Score_Minus10
+ if_move MOVE_GRASS_WHISTLE, Score_Minus10
+
+AI_CheckBadMove_CheckEffect:: @ 81D9D27
+ if_effect EFFECT_SLEEP, AI_CBM_Sleep
+ if_effect EFFECT_EXPLOSION, AI_CBM_Explosion
+ if_effect EFFECT_DREAM_EATER, AI_CBM_DreamEater
+ if_effect EFFECT_ATTACK_UP, AI_CBM_AttackUp
+ if_effect EFFECT_DEFENSE_UP, AI_CBM_DefenseUp
+ if_effect EFFECT_SPEED_UP, AI_CBM_SpeedUp
+ if_effect EFFECT_SPECIAL_ATTACK_UP, AI_CBM_SpAtkUp
+ if_effect EFFECT_SPECIAL_DEFENSE_UP, AI_CBM_SpDefUp
+ if_effect EFFECT_ACCURACY_UP, AI_CBM_AccUp
+ if_effect EFFECT_EVASION_UP, AI_CBM_EvasionUp
+ if_effect EFFECT_ATTACK_DOWN, AI_CBM_AttackDown
+ if_effect EFFECT_DEFENSE_DOWN, AI_CBM_DefenseDown
+ if_effect EFFECT_SPEED_DOWN, AI_CBM_SpeedDown
+ if_effect EFFECT_SPECIAL_ATTACK_DOWN, AI_CBM_SpAtkDown
+ if_effect EFFECT_SPECIAL_DEFENSE_DOWN, AI_CBM_SpDefDown
+ if_effect EFFECT_ACCURACY_DOWN, AI_CBM_AccDown
+ if_effect EFFECT_EVASION_DOWN, AI_CBM_EvasionDown
+ if_effect EFFECT_HAZE, AI_CBM_Haze
+ if_effect EFFECT_BIDE, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_ROAR, AI_CBM_Roar
+ if_effect EFFECT_TOXIC, AI_CBM_Poison
+ if_effect EFFECT_LIGHT_SCREEN, AI_CBM_LightScreen
+ if_effect EFFECT_OHKO, AI_CBM_OneHitKO
+ if_effect EFFECT_RAZOR_WIND, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_SUPER_FANG, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_MIST, AI_CBM_Mist
+ if_effect EFFECT_FOCUS_ENERGY, AI_CBM_FocusEnergy
+ if_effect EFFECT_CONFUSE, AI_CBM_Confuse
+ if_effect EFFECT_ATTACK_UP_2, AI_CBM_AttackUp
+ if_effect EFFECT_DEFENSE_UP_2, AI_CBM_DefenseUp
+ if_effect EFFECT_SPEED_UP_2, AI_CBM_SpeedUp
+ if_effect EFFECT_SPECIAL_ATTACK_UP_2, AI_CBM_SpAtkUp
+ if_effect EFFECT_SPECIAL_DEFENSE_UP_2, AI_CBM_SpDefUp
+ if_effect EFFECT_ACCURACY_UP_2, AI_CBM_AccUp
+ if_effect EFFECT_EVASION_UP_2, AI_CBM_EvasionUp
+ if_effect EFFECT_ATTACK_DOWN_2, AI_CBM_AttackDown
+ if_effect EFFECT_DEFENSE_DOWN_2, AI_CBM_DefenseDown
+ if_effect EFFECT_SPEED_DOWN_2, AI_CBM_SpeedDown
+ if_effect EFFECT_SPECIAL_ATTACK_DOWN_2, AI_CBM_SpAtkDown
+ if_effect EFFECT_SPECIAL_DEFENSE_DOWN_2, AI_CBM_SpDefDown
+ if_effect EFFECT_ACCURACY_DOWN_2, AI_CBM_AccDown
+ if_effect EFFECT_EVASION_DOWN_2, AI_CBM_EvasionDown
+ if_effect EFFECT_REFLECT, AI_CBM_Reflect
+ if_effect EFFECT_POISON, AI_CBM_Poison
+ if_effect EFFECT_PARALYZE, AI_CBM_Paralyze
+ if_effect EFFECT_SUBSTITUTE, AI_CBM_Substitute
+ if_effect EFFECT_RECHARGE, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_LEECH_SEED, AI_CBM_LeechSeed
+ if_effect EFFECT_DISABLE, AI_CBM_Disable
+ if_effect EFFECT_LEVEL_DAMAGE, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_PSYWAVE, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_COUNTER, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_ENCORE, AI_CBM_Encore
+ if_effect EFFECT_SNORE, AI_CBM_DamageDuringSleep
+ if_effect EFFECT_SLEEP_TALK, AI_CBM_DamageDuringSleep
+ if_effect EFFECT_FLAIL, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_MEAN_LOOK, AI_CBM_CantEscape
+ if_effect EFFECT_NIGHTMARE, AI_CBM_Nightmare
+ if_effect EFFECT_MINIMIZE, AI_CBM_EvasionUp
+ if_effect EFFECT_CURSE, AI_CBM_Curse
+ if_effect EFFECT_SPIKES, AI_CBM_Spikes
+ if_effect EFFECT_FORESIGHT, AI_CBM_Foresight
+ if_effect EFFECT_PERISH_SONG, AI_CBM_PerishSong
+ if_effect EFFECT_SANDSTORM, AI_CBM_Sandstorm
+ if_effect EFFECT_SWAGGER, AI_CBM_Confuse
+ if_effect EFFECT_ATTRACT, AI_CBM_Attract
+ if_effect EFFECT_RETURN, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_PRESENT, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_FRUSTRATION, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_SAFEGUARD, AI_CBM_Safeguard
+ if_effect EFFECT_MAGNITUDE, AI_CBM_Magnitude
+ if_effect EFFECT_BATON_PASS, AI_CBM_BatonPass
+ if_effect EFFECT_SONICBOOM, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_RAIN_DANCE, AI_CBM_RainDance
+ if_effect EFFECT_SUNNY_DAY, AI_CBM_SunnyDay
+ if_effect EFFECT_BELLY_DRUM, AI_CBM_BellyDrum
+ if_effect EFFECT_PSYCH_UP, AI_CBM_Haze
+ if_effect EFFECT_MIRROR_COAT, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_SKULL_BASH, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_FUTURE_SIGHT, AI_CBM_FutureSight
+ if_effect EFFECT_TELEPORT, Score_Minus10
+ if_effect EFFECT_DEFENSE_CURL, AI_CBM_DefenseUp
+ if_effect EFFECT_FAKE_OUT, AI_CBM_FakeOut
+ if_effect EFFECT_STOCKPILE, AI_CBM_Stockpile
+ if_effect EFFECT_SPIT_UP, AI_CBM_SpitUpAndSwallow
+ if_effect EFFECT_SWALLOW, AI_CBM_SpitUpAndSwallow
+ if_effect EFFECT_HAIL, AI_CBM_Hail
+ if_effect EFFECT_TORMENT, AI_CBM_Torment
+ if_effect EFFECT_FLATTER, AI_CBM_Confuse
+ if_effect EFFECT_WILL_O_WISP, AI_CBM_WillOWisp
+ if_effect EFFECT_MEMENTO, AI_CBM_Memento
+ if_effect EFFECT_FOCUS_PUNCH, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_HELPING_HAND, AI_CBM_HelpingHand
+ if_effect EFFECT_TRICK, AI_CBM_TrickAndKnockOff
+ if_effect EFFECT_INGRAIN, AI_CBM_Ingrain
+ if_effect EFFECT_SUPERPOWER, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_RECYCLE, AI_CBM_Recycle
+ if_effect EFFECT_KNOCK_OFF, AI_CBM_TrickAndKnockOff
+ if_effect EFFECT_ENDEAVOR, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_IMPRISON, AI_CBM_Imprison
+ if_effect EFFECT_REFRESH, AI_CBM_Refresh
+ if_effect EFFECT_LOW_KICK, AI_CBM_HighRiskForDamage
+ if_effect EFFECT_MUD_SPORT, AI_CBM_MudSport
+ if_effect EFFECT_TICKLE, AI_CBM_Tickle
+ if_effect EFFECT_COSMIC_POWER, AI_CBM_CosmicPower
+ if_effect EFFECT_BULK_UP, AI_CBM_BulkUp
+ if_effect EFFECT_WATER_SPORT, AI_CBM_WaterSport
+ if_effect EFFECT_CALM_MIND, AI_CBM_CalmMind
+ if_effect EFFECT_DRAGON_DANCE, AI_CBM_DragonDance
+ end
+
+AI_CBM_Sleep:: @ 81D9FB6
+ get_ability AI_TARGET
+ if_equal ABILITY_INSOMNIA, Score_Minus10
+ if_equal ABILITY_VITAL_SPIRIT, Score_Minus10
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus10
+@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
+ end
+
+AI_CBM_Explosion:: @ 81D9FCF
+ if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_DAMP, Score_Minus10
+ count_alive_pokemon AI_USER
+ if_not_equal 0, AI_CBM_Explosion_End
+ count_alive_pokemon AI_TARGET
+ if_not_equal 0, Score_Minus10
+ goto Score_Minus1
+
+AI_CBM_Explosion_End:: @ 81D9FF2
+ end
+
+AI_CBM_Nightmare:: @ 81D9FF3
+ if_status2 AI_TARGET, STATUS2_NIGHTMARE, Score_Minus10
+ if_not_status AI_TARGET, STATUS1_SLEEP, Score_Minus8
+ end
+
+AI_CBM_DreamEater:: @ 81DA008
+ if_not_status AI_TARGET, STATUS1_SLEEP, Score_Minus8
+ if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
+ end
+
+AI_CBM_BellyDrum:: @ 81DA019
+ if_hp_less_than AI_USER, 51, Score_Minus10
+
+AI_CBM_AttackUp:: @ 81DA020
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ end
+
+AI_CBM_DefenseUp:: @ 81DA029
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
+ end
+
+AI_CBM_SpeedUp:: @ 81DA032
+ if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus10
+ end
+
+AI_CBM_SpAtkUp:: @ 81DA03B
+ if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
+ end
+
+AI_CBM_SpDefUp:: @ 81DA044
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus10
+ end
+
+AI_CBM_AccUp:: @ 81DA04D
+ if_stat_level_equal AI_USER, STAT_ACC, 12, Score_Minus10
+ end
+
+AI_CBM_EvasionUp:: @ 81DA056
+ if_stat_level_equal AI_USER, STAT_EVASION, 12, Score_Minus10
+ end
+
+AI_CBM_AttackDown:: @ 81DA05F
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_HYPER_CUTTER, Score_Minus10
+ goto CheckIfAbilityBlocksStatChange
-AI_sub_81DA074:: @ 81DA074
- if_stat_level_equal 0, 2, 0, AI_sub_81DA433
- jump AI_sub_81DA0C5
+AI_CBM_DefenseDown:: @ 81DA074
+ if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus10
+ goto CheckIfAbilityBlocksStatChange
-AI_sub_81DA081:: @ 81DA081
- if_stat_level_equal 0, 3, 0, AI_sub_81DA433
- jump AI_sub_81DA0C5
+AI_CBM_SpeedDown:: @ 81DA081
+ if_stat_level_equal AI_TARGET, STAT_SPEED, 0, Score_Minus10
+@ get_ability AI_TARGET @ Improvement in Emerald
+@ if_equal ABILITY_SPEED_BOOST, Score_Minus10
+ goto CheckIfAbilityBlocksStatChange
-AI_sub_81DA08E:: @ 81DA08E
- if_stat_level_equal 0, 4, 0, AI_sub_81DA433
- jump AI_sub_81DA0C5
+AI_CBM_SpAtkDown:: @ 81DA08E
+ if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus10
+ goto CheckIfAbilityBlocksStatChange
-AI_sub_81DA09B:: @ 81DA09B
- if_stat_level_equal 0, 5, 0, AI_sub_81DA433
- jump AI_sub_81DA0C5
+AI_CBM_SpDefDown:: @ 81DA09B
+ if_stat_level_equal AI_TARGET, STAT_SPDEF, 0, Score_Minus10
+ goto CheckIfAbilityBlocksStatChange
-AI_sub_81DA0A8:: @ 81DA0A8
- if_stat_level_equal 0, 6, 0, AI_sub_81DA433
- get_ability 0
- if_equal 51, AI_sub_81DA433
- jump AI_sub_81DA0C5
+AI_CBM_AccDown:: @ 81DA0A8
+ if_stat_level_equal AI_TARGET, STAT_ACC, 0, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_KEEN_EYE, Score_Minus10
+ goto CheckIfAbilityBlocksStatChange
-AI_sub_81DA0BD:: @ 81DA0BD
- if_stat_level_equal 0, 7, 0, AI_sub_81DA433
+AI_CBM_EvasionDown:: @ 81DA0BD
+ if_stat_level_equal AI_TARGET, STAT_EVASION, 0, Score_Minus10
-AI_sub_81DA0C5:: @ 81DA0C5
- get_ability 0
- if_equal 29, AI_sub_81DA433
- if_equal 73, AI_sub_81DA433
+CheckIfAbilityBlocksStatChange:: @ 81DA0C5
+ get_ability AI_TARGET
+ if_equal ABILITY_CLEAR_BODY, Score_Minus10
+ if_equal ABILITY_WHITE_SMOKE, Score_Minus10
end
-AI_sub_81DA0D4:: @ 81DA0D4
- if_stat_level_less_than 1, 1, 6, AI_sub_81DA149
- if_stat_level_less_than 1, 2, 6, AI_sub_81DA149
- if_stat_level_less_than 1, 3, 6, AI_sub_81DA149
- if_stat_level_less_than 1, 4, 6, AI_sub_81DA149
- if_stat_level_less_than 1, 5, 6, AI_sub_81DA149
- if_stat_level_less_than 1, 6, 6, AI_sub_81DA149
- if_stat_level_less_than 1, 7, 6, AI_sub_81DA149
- if_stat_level_more_than 0, 1, 6, AI_sub_81DA149
- if_stat_level_more_than 0, 2, 6, AI_sub_81DA149
- if_stat_level_more_than 0, 3, 6, AI_sub_81DA149
- if_stat_level_more_than 0, 4, 6, AI_sub_81DA149
- if_stat_level_more_than 0, 5, 6, AI_sub_81DA149
- if_stat_level_more_than 0, 6, 6, AI_sub_81DA149
- if_stat_level_more_than 0, 7, 6, AI_sub_81DA149
- jump AI_sub_81DA433
+AI_CBM_Haze:: @ 81DA0D4
+ if_stat_level_less_than AI_USER, STAT_ATK, 6, AI_CBM_Haze_End
+ if_stat_level_less_than AI_USER, STAT_DEF, 6, AI_CBM_Haze_End
+ if_stat_level_less_than AI_USER, STAT_SPEED, 6, AI_CBM_Haze_End
+ if_stat_level_less_than AI_USER, STAT_SPATK, 6, AI_CBM_Haze_End
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 6, AI_CBM_Haze_End
+ if_stat_level_less_than AI_USER, STAT_ACC, 6, AI_CBM_Haze_End
+ if_stat_level_less_than AI_USER, STAT_EVASION, 6, AI_CBM_Haze_End
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 6, AI_CBM_Haze_End
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 6, AI_CBM_Haze_End
+ if_stat_level_more_than AI_TARGET, STAT_SPEED, 6, AI_CBM_Haze_End
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 6, AI_CBM_Haze_End
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 6, AI_CBM_Haze_End
+ if_stat_level_more_than AI_TARGET, STAT_ACC, 6, AI_CBM_Haze_End
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 6, AI_CBM_Haze_End
+ goto Score_Minus10
-AI_sub_81DA149:: @ 81DA149
+AI_CBM_Haze_End:: @ 81DA149
end
-AI_sub_81DA14A:: @ 81DA14A
- count_alive_pokemon 0
- if_equal 0, AI_sub_81DA433
- get_ability 0
- if_equal 21, AI_sub_81DA433
+AI_CBM_Roar:: @ 81DA14A
+ count_alive_pokemon AI_TARGET
+ if_equal 0, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_SUCTION_CUPS, Score_Minus10
end
-AI_sub_81DA15B:: @ 81DA15B
- get_type 0
- if_equal 8, AI_sub_81DA433
- if_equal 3, AI_sub_81DA433
- get_type 2
- if_equal 8, AI_sub_81DA433
- if_equal 3, AI_sub_81DA433
- get_ability 0
- if_equal 17, AI_sub_81DA433
- if_status 0, 255, AI_sub_81DA433
+AI_CBM_Poison:: @ 81DA15B
+ get_target_type1
+ if_equal TYPE_STEEL, Score_Minus10
+ if_equal TYPE_POISON, Score_Minus10
+ get_target_type2
+ if_equal TYPE_STEEL, Score_Minus10
+ if_equal TYPE_POISON, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_IMMUNITY, Score_Minus10
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus10
+@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
-AI_sub_81DA18A:: @ 81DA18A
- if_status4 1, 2, AI_sub_81DA430
+AI_CBM_LightScreen:: @ 81DA18A
+ if_side_affecting AI_USER, SIDE_STATUS_LIGHTSCREEN, Score_Minus8
end
-AI_sub_81DA195:: @ 81DA195
- if_damage_bonus 0, AI_sub_81DA433
- get_ability 0
- if_equal 5, AI_sub_81DA433
- if_level_cond 1, AI_sub_81DA433
+AI_CBM_OneHitKO:: @ 81DA195
+ if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_STURDY, Score_Minus10
+ if_level_cond 1, Score_Minus10
end
-AI_sub_81DA1AA:: @ 81DA1AA
- get_ability 0
- if_equal 26, AI_sub_81DA433
+AI_CBM_Magnitude:: @ 81DA1AA
+ get_ability AI_TARGET
+ if_equal ABILITY_LEVITATE, Score_Minus10
-AI_sub_81DA1B2:: @ 81DA1B2
- if_damage_bonus 0, AI_sub_81DA433
- get_ability 0
- if_not_equal 25, AI_sub_81DA1CB
- if_damage_bonus 80, AI_sub_81DA1CB
- jump AI_sub_81DA433
+AI_CBM_HighRiskForDamage:: @ 81DA1B2
+ if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
+ get_ability AI_TARGET
+ if_not_equal ABILITY_WONDER_GUARD, AI_CBM_HighRiskForDamage_End
+ if_type_effectiveness AI_EFFECTIVENESS_x2, AI_CBM_HighRiskForDamage_End
+ goto Score_Minus10
-AI_sub_81DA1CB:: @ 81DA1CB
+AI_CBM_HighRiskForDamage_End:: @ 81DA1CB
end
-AI_sub_81DA1CC:: @ 81DA1CC
- if_status4 1, 256, AI_sub_81DA430
+AI_CBM_Mist:: @ 81DA1CC
+ if_side_affecting AI_USER, SIDE_STATUS_MIST, Score_Minus8
end
-AI_sub_81DA1D7:: @ 81DA1D7
- if_status2 1, 1048576, AI_sub_81DA433
+AI_CBM_FocusEnergy:: @ 81DA1D7
+ if_status2 AI_USER, STATUS2_FOCUS_ENERGY, Score_Minus10
end
-AI_sub_81DA1E2:: @ 81DA1E2
- if_status2 0, 7, AI_sub_81DA42D
- get_ability 0
- if_equal 20, AI_sub_81DA433
+AI_CBM_Confuse:: @ 81DA1E2
+ if_status2 AI_TARGET, STATUS2_CONFUSION, Score_Minus5
+ get_ability AI_TARGET
+ if_equal ABILITY_OWN_TEMPO, Score_Minus10
+@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
-AI_sub_81DA1F5:: @ 81DA1F5
- if_status4 1, 1, AI_sub_81DA430
+AI_CBM_Reflect:: @ 81DA1F5
+ if_side_affecting AI_USER, SIDE_STATUS_REFLECT, Score_Minus8
end
-AI_sub_81DA200:: @ 81DA200
- if_damage_bonus 0, AI_sub_81DA433
- get_ability 0
- if_equal 7, AI_sub_81DA433
- if_status 0, 255, AI_sub_81DA433
+AI_CBM_Paralyze:: @ 81DA200
+ if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_LIMBER, Score_Minus10
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus10
+@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
-AI_sub_81DA219:: @ 81DA219
- if_status2 1, 16777216, AI_sub_81DA430
- if_hp_less_than 1, 26, AI_sub_81DA433
+AI_CBM_Substitute:: @ 81DA219
+ if_status2 AI_USER, STATUS2_SUBSTITUTE, Score_Minus8
+ if_hp_less_than AI_USER, 26, Score_Minus10
end
-AI_sub_81DA22B:: @ 81DA22B
- if_status3 0, 4, AI_sub_81DA433
- get_type 0
- if_equal 12, AI_sub_81DA433
- get_type 2
- if_equal 12, AI_sub_81DA433
+AI_CBM_LeechSeed:: @ 81DA22B
+ if_status3 AI_TARGET, STATUS3_LEECHSEED, Score_Minus10
+ get_target_type1
+ if_equal TYPE_GRASS, Score_Minus10
+ get_target_type2
+ if_equal TYPE_GRASS, Score_Minus10
end
-AI_sub_81DA246:: @ 81DA246
- if_last_move_did_damage 0, 0, AI_sub_81DA430
+AI_CBM_Disable:: @ 81DA246
+ if_any_move_disabled AI_TARGET, Score_Minus8
end
-AI_sub_81DA24E:: @ 81DA24E
- if_last_move_did_damage 0, 1, AI_sub_81DA430
+AI_CBM_Encore:: @ 81DA24E
+ if_any_move_encored AI_TARGET, Score_Minus8
end
-AI_sub_81DA256:: @ 81DA256
- if_not_status 1, 7, AI_sub_81DA430
+AI_CBM_DamageDuringSleep:: @ 81DA256
+ if_not_status AI_USER, STATUS1_SLEEP, Score_Minus8
end
-AI_sub_81DA261:: @ 81DA261
- if_status2 0, 67108864, AI_sub_81DA433
+AI_CBM_CantEscape:: @ 81DA261
+ if_status2 AI_TARGET, STATUS2_ESCAPE_PREVENTION, Score_Minus10
end
-AI_sub_81DA26C:: @ 81DA26C
- if_stat_level_equal 1, 1, 12, AI_sub_81DA433
- if_stat_level_equal 1, 2, 12, AI_sub_81DA430
+AI_CBM_Curse:: @ 81DA26C
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
end
-AI_sub_81DA27D:: @ 81DA27D
- if_status4 0, 16, AI_sub_81DA433
+AI_CBM_Spikes:: @ 81DA27D
+ if_side_affecting AI_TARGET, SIDE_STATUS_SPIKES, Score_Minus10
end
-AI_sub_81DA288:: @ 81DA288
- if_status2 0, 536870912, AI_sub_81DA433
+AI_CBM_Foresight:: @ 81DA288
+ if_status2 AI_TARGET, STATUS2_FORESIGHT, Score_Minus10
end
-AI_sub_81DA293:: @ 81DA293
- if_status3 0, 32, AI_sub_81DA433
+AI_CBM_PerishSong:: @ 81DA293
+ if_status3 AI_TARGET, STATUS3_PERISH_SONG, Score_Minus10
end
-AI_sub_81DA29E:: @ 81DA29E
+AI_CBM_Sandstorm:: @ 81DA29E
get_weather
- if_equal 2, AI_sub_81DA430
+ if_equal AI_WEATHER_SANDSTORM, Score_Minus8
end
-AI_sub_81DA2A6:: @ 81DA2A6
- if_status2 0, 983040, AI_sub_81DA433
- get_ability 0
- if_equal 12, AI_sub_81DA433
- get_gender 1
- if_equal 0, AI_sub_81DA2CB
- if_equal -2, AI_sub_81DA2D8
- jump AI_sub_81DA433
+AI_CBM_Attract:: @ 81DA2A6
+ if_status2 AI_TARGET, STATUS2_INFATUATION, Score_Minus10
+ get_ability AI_TARGET
+ if_equal ABILITY_OBLIVIOUS, Score_Minus10
+ get_gender AI_USER
+ if_equal MON_MALE, AI_CBM_Attract_CheckIfTargetIsFemale
+ if_equal MON_FEMALE, AI_CBM_Attract_CheckIfTargetIsMale
+ goto Score_Minus10
-AI_sub_81DA2CB:: @ 81DA2CB
- get_gender 0
- if_equal -2, AI_sub_81DA2E5
- jump AI_sub_81DA433
+AI_CBM_Attract_CheckIfTargetIsFemale:: @ 81DA2CB
+ get_gender AI_TARGET
+ if_equal MON_FEMALE, AI_CBM_Attract_End
+ goto Score_Minus10
-AI_sub_81DA2D8:: @ 81DA2D8
- get_gender 0
- if_equal 0, AI_sub_81DA2E5
- jump AI_sub_81DA433
+AI_CBM_Attract_CheckIfTargetIsMale:: @ 81DA2D8
+ get_gender AI_TARGET
+ if_equal MON_MALE, AI_CBM_Attract_End
+ goto Score_Minus10
-AI_sub_81DA2E5:: @ 81DA2E5
+AI_CBM_Attract_End:: @ 81DA2E5
end
-AI_sub_81DA2E6:: @ 81DA2E6
- if_status4 1, 32, AI_sub_81DA430
+AI_CBM_Safeguard:: @ 81DA2E6
+ if_side_affecting AI_USER, SIDE_STATUS_SAFEGUARD, Score_Minus8
end
-AI_sub_81DA2F1:: @ 81DA2F1
- if_stat_level_equal 0, 1, 0, AI_sub_81DA433
- if_stat_level_equal 0, 4, 0, AI_sub_81DA430
+AI_CBM_Memento:: @ 81DA2F1
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_SPATK, 0, Score_Minus8
-AI_sub_81DA301:: @ 81DA301
- count_alive_pokemon 1
- if_equal 0, AI_sub_81DA433
+AI_CBM_BatonPass:: @ 81DA301
+ count_alive_pokemon AI_USER
+ if_equal 0, Score_Minus10
end
-AI_sub_81DA30A:: @ 81DA30A
+AI_CBM_RainDance:: @ 81DA30A
get_weather
- if_equal 1, AI_sub_81DA430
+ if_equal AI_WEATHER_RAIN, Score_Minus8
end
-AI_sub_81DA312:: @ 81DA312
+AI_CBM_SunnyDay:: @ 81DA312
get_weather
- if_equal 0, AI_sub_81DA430
+ if_equal AI_WEATHER_SUN, Score_Minus8
end
-AI_sub_81DA31A:: @ 81DA31A
- if_status4 0, 64, AI_sub_81DA433
+AI_CBM_FutureSight:: @ 81DA31A
+ if_side_affecting AI_TARGET, SIDE_STATUS_FUTUREATTACK, Score_Minus10
+@ if_side_affecting AI_USER, SIDE_STATUS_FUTUREATTACK, Score_Minus12 @ Improvement in Emerald
end
-AI_sub_81DA325:: @ 81DA325
- is_first_turn 1
- if_equal 0, AI_sub_81DA433
+AI_CBM_FakeOut:: @ 81DA325
+ is_first_turn_for AI_USER
+ if_equal 0, Score_Minus10
end
-AI_sub_81DA32E:: @ 81DA32E
- get_stockpile_count 1
- if_equal 3, AI_sub_81DA433
+AI_CBM_Stockpile:: @ 81DA32E
+ get_stockpile_count AI_USER
+ if_equal 3, Score_Minus10
end
-AI_sub_81DA337:: @ 81DA337
- if_damage_bonus 0, AI_sub_81DA433
- get_stockpile_count 1
- if_equal 0, AI_sub_81DA433
+AI_CBM_SpitUpAndSwallow:: @ 81DA337
+ if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
+ get_stockpile_count AI_USER
+ if_equal 0, Score_Minus10
end
-AI_sub_81DA346:: @ 81DA346
+AI_CBM_Hail:: @ 81DA346
get_weather
- if_equal 3, AI_sub_81DA430
+ if_equal AI_WEATHER_HAIL, Score_Minus8
end
-AI_sub_81DA34E:: @ 81DA34E
- if_status2 0, -2147483648, AI_sub_81DA433
+AI_CBM_Torment:: @ 81DA34E
+ if_status2 AI_TARGET, STATUS2_TORMENT, Score_Minus10
end
-AI_sub_81DA359:: @ 81DA359
- get_ability 0
- if_equal 41, AI_sub_81DA433
- if_status 0, 255, AI_sub_81DA433
- if_damage_bonus 0, AI_sub_81DA433
- if_damage_bonus 20, AI_sub_81DA433
- if_damage_bonus 10, AI_sub_81DA433
+AI_CBM_WillOWisp:: @ 81DA359
+ get_ability AI_TARGET
+ if_equal ABILITY_WATER_VEIL, Score_Minus10
+ if_status AI_TARGET, STATUS1_ANY, Score_Minus10
+ if_type_effectiveness AI_EFFECTIVENESS_x0, Score_Minus10
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, Score_Minus10
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, Score_Minus10
+@ if_side_affecting AI_TARGET, SIDE_STATUS_SAFEGUARD, Score_Minus10 @ Improvement in Emerald
end
-AI_sub_81DA37E:: @ 81DA37E
- is_double_battle
- if_equal 0, AI_sub_81DA433
+AI_CBM_HelpingHand:: @ 81DA37E
+ if_not_double_battle Score_Minus10
end
-AI_sub_81DA386:: @ 81DA386
- get_ability 0
- if_equal 60, AI_sub_81DA433
+AI_CBM_TrickAndKnockOff:: @ 81DA386
+ get_ability AI_TARGET
+ if_equal ABILITY_STICKY_HOLD, Score_Minus10
end
-AI_sub_81DA38F:: @ 81DA38F
- if_status3 1, 1024, AI_sub_81DA433
+AI_CBM_Ingrain:: @ 81DA38F
+ if_status3 AI_USER, STATUS3_ROOTED, Score_Minus10
end
-AI_sub_81DA39A:: @ 81DA39A
- get_item 1
- if_equal 0, AI_sub_81DA433
+AI_CBM_Recycle:: @ 81DA39A
+ get_used_held_item AI_USER
+ if_equal ITEM_NONE, Score_Minus10
end
-AI_sub_81DA3A3:: @ 81DA3A3
- if_status3 1, 8192, AI_sub_81DA433
+AI_CBM_Imprison:: @ 81DA3A3
+ if_status3 AI_USER, STATUS3_IMPRISONED_OTHERS, Score_Minus10
end
-AI_sub_81DA3AE:: @ 81DA3AE
- if_not_status 1, 216, AI_sub_81DA433
+AI_CBM_Refresh:: @ 81DA3AE
+ if_not_status AI_USER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, Score_Minus10
end
-AI_sub_81DA3B9:: @ 81DA3B9
- if_status3 1, 65536, AI_sub_81DA433
+AI_CBM_MudSport:: @ 81DA3B9
+ if_status3 AI_USER, STATUS3_MUDSPORT, Score_Minus10
end
-AI_sub_81DA3C4:: @ 81DA3C4
- if_stat_level_equal 0, 1, 0, AI_sub_81DA433
- if_stat_level_equal 0, 2, 0, AI_sub_81DA430
+AI_CBM_Tickle:: @ 81DA3C4
+ if_stat_level_equal AI_TARGET, STAT_ATK, 0, Score_Minus10
+ if_stat_level_equal AI_TARGET, STAT_DEF, 0, Score_Minus8
end
-AI_sub_81DA3D5:: @ 81DA3D5
- if_stat_level_equal 1, 2, 12, AI_sub_81DA433
- if_stat_level_equal 1, 5, 12, AI_sub_81DA430
+AI_CBM_CosmicPower:: @ 81DA3D5
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
end
-AI_sub_81DA3E6:: @ 81DA3E6
- if_stat_level_equal 1, 1, 12, AI_sub_81DA433
- if_stat_level_equal 1, 2, 12, AI_sub_81DA430
+AI_CBM_BulkUp:: @ 81DA3E6
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_DEF, 12, Score_Minus8
end
-AI_sub_81DA3F7:: @ 81DA3F7
- if_status3 1, 131072, AI_sub_81DA433
+AI_CBM_WaterSport:: @ 81DA3F7
+ if_status3 AI_USER, STATUS3_WATERSPORT, Score_Minus10
end
-AI_sub_81DA402:: @ 81DA402
- if_stat_level_equal 1, 4, 12, AI_sub_81DA433
- if_stat_level_equal 1, 5, 12, AI_sub_81DA430
+AI_CBM_CalmMind:: @ 81DA402
+ if_stat_level_equal AI_USER, STAT_SPATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPDEF, 12, Score_Minus8
end
-AI_sub_81DA413:: @ 81DA413
- if_stat_level_equal 1, 1, 12, AI_sub_81DA433
- if_stat_level_equal 1, 3, 12, AI_sub_81DA430
+AI_CBM_DragonDance:: @ 81DA413
+ if_stat_level_equal AI_USER, STAT_ATK, 12, Score_Minus10
+ if_stat_level_equal AI_USER, STAT_SPEED, 12, Score_Minus8
end
-AI_sub_81DA424:: @ 81DA424
+Score_Minus1:: @ 81DA424
score -1
end
-AI_sub_81DA427:: @ 81DA427
+Score_Minus2:: @ 81DA427
score -2
end
-AI_sub_81DA42A:: @ 81DA42A
+Score_Minus3:: @ 81DA42A
score -3
end
-AI_sub_81DA42D:: @ 81DA42D
+Score_Minus5:: @ 81DA42D
score -5
end
-AI_sub_81DA430:: @ 81DA430
+Score_Minus8:: @ 81DA430
score -8
end
-AI_sub_81DA433:: @ 81DA433
+Score_Minus10:: @ 81DA433
score -10
end
-AI_sub_81DA436:: @ 81DA436
+Score_Minus12:: @ 81DA436
score -12
end
- score 1
- end
- score 2
- end
- score 3
- end
- score 5
- end
-
-AI_TryToFaint:: @ 81DA445
- if_effect 1, AI_sub_81DA71C
- if_effect 3, AI_sub_81DA738
- if_effect 7, AI_sub_81DA752
- if_effect 8, AI_sub_81DA7B0
- if_effect 9, AI_sub_81DA7C4
- if_effect 10, AI_sub_81DA848
- if_effect 11, AI_sub_81DA883
- if_effect 12, AI_sub_81DA8E9
- if_effect 13, AI_sub_81DA8FF
- if_effect 14, AI_sub_81DA93A
- if_effect 15, AI_sub_81DA9A0
- if_effect 16, AI_sub_81DA9BA
- if_effect 17, AI_sub_81DAA54
- if_effect 18, AI_sub_81DAA84
- if_effect 19, AI_sub_81DAAD6
- if_effect 20, AI_sub_81DAB0D
- if_effect 21, AI_sub_81DAB23
- if_effect 22, AI_sub_81DAB77
- if_effect 23, AI_sub_81DAB98
- if_effect 24, AI_sub_81DAC2C
- if_effect 25, AI_sub_81DAC4D
- if_effect 26, AI_sub_81DAD10
- if_effect 28, AI_sub_81DAD1A
- if_effect 30, AI_sub_81DAD52
- if_effect 32, AI_sub_81DAD83
- if_effect 33, AI_sub_81DADDC
- if_effect 35, AI_sub_81DAE1B
- if_effect 37, AI_sub_81DAE4A
- if_effect 38, AI_sub_81DAEAA
- if_effect 39, AI_sub_81DB645
- if_effect 40, AI_sub_81DAEAB
- if_effect 42, AI_sub_81DAEB5
- if_effect 43, AI_sub_81DAEEB
- if_effect 49, AI_sub_81DAF1A
- if_effect 50, AI_sub_81DA848
- if_effect 51, AI_sub_81DA883
- if_effect 52, AI_sub_81DA8E9
- if_effect 53, AI_sub_81DA8FF
- if_effect 54, AI_sub_81DA93A
- if_effect 55, AI_sub_81DA9A0
- if_effect 56, AI_sub_81DA9BA
- if_effect 58, AI_sub_81DAA84
- if_effect 59, AI_sub_81DAAD6
- if_effect 60, AI_sub_81DAB0D
- if_effect 61, AI_sub_81DAB23
- if_effect 62, AI_sub_81DAB77
- if_effect 63, AI_sub_81DAB98
- if_effect 64, AI_sub_81DAC2C
- if_effect 65, AI_sub_81DAF3C
- if_effect 66, AI_sub_81DAF6C
- if_effect 67, AI_sub_81DAF7D
- if_effect 70, AI_sub_81DAAF7
- if_effect 75, AI_sub_81DB645
- if_effect 78, AI_sub_81DAF9A
- if_effect 79, AI_sub_81DAFBD
- if_effect 80, AI_sub_81DB053
- if_effect 84, AI_sub_81DADDC
- if_effect 86, AI_sub_81DB07B
- if_effect 89, AI_sub_81DB09A
- if_effect 90, AI_sub_81DB13B
- if_effect 91, AI_sub_81DB1A3
- if_effect 92, AI_sub_81DB1CF
- if_effect 94, AI_sub_81DB1D2
- if_effect 97, AI_sub_81DB1DB
- if_effect 98, AI_sub_81DB1DE
- if_effect 99, AI_sub_81DB214
- if_effect 102, AI_sub_81DB259
- if_effect 105, AI_sub_81DB270
- if_effect 106, AI_sub_81DAEB5
- if_effect 108, AI_sub_81DA9BA
- if_effect 109, AI_sub_81DB293
- if_effect 111, AI_sub_81DB2E2
- if_effect 113, AI_sub_81DB3A3
- if_effect 116, AI_sub_81DB3D1
- if_effect 127, AI_sub_81DB3EF
- if_effect -128, AI_sub_81DB48B
- if_effect -124, AI_sub_81DAD69
- if_effect -123, AI_sub_81DAD69
- if_effect -122, AI_sub_81DAD69
- if_effect -120, AI_sub_81DB4C1
- if_effect -119, AI_sub_81DB500
- if_effect -114, AI_sub_81DB529
- if_effect -113, AI_sub_81DB538
- if_effect -112, AI_sub_81DB5A5
- if_effect -111, AI_sub_81DB645
- if_effect -105, AI_sub_81DB645
- if_effect -101, AI_sub_81DB669
- if_effect -99, AI_sub_81DAD83
- if_effect -98, AI_sub_81DB6F3
- if_effect -95, AI_sub_81DB6F6
- if_effect -94, AI_sub_81DAD83
- if_effect -92, AI_sub_81DB707
- if_effect -90, AI_sub_81DAF12
- if_effect -88, AI_sub_81DA752
- if_effect -87, AI_sub_81DB730
- if_effect -86, AI_sub_81DB73D
- if_effect -85, AI_sub_81DB78C
- if_effect -79, AI_sub_81DB79E
- if_effect -78, AI_sub_81DB7E9
- if_effect -74, AI_sub_81DB820
- if_effect -73, AI_sub_81DB850
- if_effect -72, AI_sub_81DB883
- if_effect -71, AI_sub_81DB8A2
- if_effect -70, AI_sub_81DB8D0
- if_effect -68, AI_sub_81DB8E2
- if_effect -67, AI_sub_81DB8FA
- if_effect -66, AI_sub_81DB926
- if_effect -65, AI_sub_81DB7E9
- if_effect -64, AI_sub_81DB94E
- if_effect -63, AI_sub_81DB95F
- if_effect -61, AI_sub_81DB96E
- if_effect -56, AI_sub_81DAEEB
- if_effect -55, AI_sub_81DB9D8
- if_effect -52, AI_sub_81DB9FE
- if_effect -51, AI_sub_81DAAD6
- if_effect -50, AI_sub_81DA93A
- if_effect -48, AI_sub_81DA883
- if_effect -47, AI_sub_81DAEEB
- if_effect -46, AI_sub_81DBA26
- if_effect -45, AI_sub_81DA93A
- if_effect -44, AI_sub_81DBA4C
- end
-
-AI_sub_81DA71C:: @ 81DA71C
- if_move_effect 0, 8, AI_sub_81DA72F
- if_move_effect 0, 107, AI_sub_81DA72F
- jump AI_sub_81DA737
-
-AI_sub_81DA72F:: @ 81DA72F
- if_random_less_than -128, AI_sub_81DA737
- score 1
-
-AI_sub_81DA737:: @ 81DA737
- end
-
-AI_sub_81DA738:: @ 81DA738
- if_damage_bonus 20, AI_sub_81DA749
- if_damage_bonus 10, AI_sub_81DA749
- jump AI_sub_81DA751
-
-AI_sub_81DA749:: @ 81DA749
- if_random_less_than 50, AI_sub_81DA751
+
+Score_Plus1::
+ score +1
+ end
+
+Score_Plus2::
+ score +2
+ end
+
+Score_Plus3::
+ score +3
+ end
+
+Score_Plus5::
+ score +5
+ end
+
+@ Improvement in Emerald
+@Score_Plus10::
+@ score +10
+@ end
+
+AI_CheckViability:: @ 81DA445
+ if_effect EFFECT_SLEEP, AI_CV_Sleep
+ if_effect EFFECT_ABSORB, AI_CV_Absorb
+ if_effect EFFECT_EXPLOSION, AI_CV_SelfKO
+ if_effect EFFECT_DREAM_EATER, AI_CV_DreamEater
+ if_effect EFFECT_MIRROR_MOVE, AI_CV_MirrorMove
+ if_effect EFFECT_ATTACK_UP, AI_CV_AttackUp
+ if_effect EFFECT_DEFENSE_UP, AI_CV_DefenseUp
+ if_effect EFFECT_SPEED_UP, AI_CV_SpeedUp
+ if_effect EFFECT_SPECIAL_ATTACK_UP, AI_CV_SpAtkUp
+ if_effect EFFECT_SPECIAL_DEFENSE_UP, AI_CV_SpDefUp
+ if_effect EFFECT_ACCURACY_UP, AI_CV_AccuracyUp
+ if_effect EFFECT_EVASION_UP, AI_CV_EvasionUp
+ if_effect EFFECT_ALWAYS_HIT, AI_CV_AlwaysHit
+ if_effect EFFECT_ATTACK_DOWN, AI_CV_AttackDown
+ if_effect EFFECT_DEFENSE_DOWN, AI_CV_DefenseDown
+ if_effect EFFECT_SPEED_DOWN, AI_CV_SpeedDown
+ if_effect EFFECT_SPECIAL_ATTACK_DOWN, AI_CV_SpAtkDown
+ if_effect EFFECT_SPECIAL_DEFENSE_DOWN, AI_CV_SpDefDown
+ if_effect EFFECT_ACCURACY_DOWN, AI_CV_AccuracyDown
+ if_effect EFFECT_EVASION_DOWN, AI_CV_EvasionDown
+ if_effect EFFECT_HAZE, AI_CV_Haze
+ if_effect EFFECT_BIDE, AI_CV_Bide
+ if_effect EFFECT_ROAR, AI_CV_Roar
+ if_effect EFFECT_CONVERSION, AI_CV_Conversion
+ if_effect EFFECT_RESTORE_HP, AI_CV_Heal
+ if_effect EFFECT_TOXIC, AI_CV_Toxic
+ if_effect EFFECT_LIGHT_SCREEN, AI_CV_LightScreen
+ if_effect EFFECT_REST, AI_CV_Rest
+ if_effect EFFECT_OHKO, AI_CV_OneHitKO
+ if_effect EFFECT_RAZOR_WIND, AI_CV_ChargeUpMove
+ if_effect EFFECT_SUPER_FANG, AI_CV_SuperFang
+ if_effect EFFECT_TRAP, AI_CV_Trap
+ if_effect EFFECT_HIGH_CRITICAL, AI_CV_HighCrit
+ if_effect EFFECT_CONFUSE, AI_CV_Confuse
+ if_effect EFFECT_ATTACK_UP_2, AI_CV_AttackUp
+ if_effect EFFECT_DEFENSE_UP_2, AI_CV_DefenseUp
+ if_effect EFFECT_SPEED_UP_2, AI_CV_SpeedUp
+ if_effect EFFECT_SPECIAL_ATTACK_UP_2, AI_CV_SpAtkUp
+ if_effect EFFECT_SPECIAL_DEFENSE_UP_2, AI_CV_SpDefUp
+ if_effect EFFECT_ACCURACY_UP_2, AI_CV_AccuracyUp
+ if_effect EFFECT_EVASION_UP_2, AI_CV_EvasionUp
+ if_effect EFFECT_ATTACK_DOWN_2, AI_CV_AttackDown
+ if_effect EFFECT_DEFENSE_DOWN_2, AI_CV_DefenseDown
+ if_effect EFFECT_SPEED_DOWN_2, AI_CV_SpeedDown
+ if_effect EFFECT_SPECIAL_ATTACK_DOWN_2, AI_CV_SpAtkDown
+ if_effect EFFECT_SPECIAL_DEFENSE_DOWN_2, AI_CV_SpDefDown
+ if_effect EFFECT_ACCURACY_DOWN_2, AI_CV_AccuracyDown
+ if_effect EFFECT_EVASION_DOWN_2, AI_CV_EvasionDown
+ if_effect EFFECT_REFLECT, AI_CV_Reflect
+ if_effect EFFECT_POISON, AI_CV_Poison
+ if_effect EFFECT_PARALYZE, AI_CV_Paralyze
+ @ if_effect EFFECT_SWAGGER, AI_CV_Swagger @ Improvement in Emerald
+ if_effect EFFECT_SPEED_DOWN_HIT, AI_CV_SpeedDownFromChance
+ if_effect EFFECT_SKY_ATTACK, AI_CV_ChargeUpMove
+ if_effect EFFECT_VITAL_THROW, AI_CV_VitalThrow
+ if_effect EFFECT_SUBSTITUTE, AI_CV_Substitute
+ if_effect EFFECT_RECHARGE, AI_CV_Recharge
+ if_effect EFFECT_LEECH_SEED, AI_CV_Toxic
+ if_effect EFFECT_DISABLE, AI_CV_Disable
+ if_effect EFFECT_COUNTER, AI_CV_Counter
+ if_effect EFFECT_ENCORE, AI_CV_Encore
+ if_effect EFFECT_PAIN_SPLIT, AI_CV_PainSplit
+ if_effect EFFECT_SNORE, AI_CV_Snore
+ if_effect EFFECT_LOCK_ON, AI_CV_LockOn
+ if_effect EFFECT_SLEEP_TALK, AI_CV_SleepTalk
+ if_effect EFFECT_DESTINY_BOND, AI_CV_DestinyBond
+ if_effect EFFECT_FLAIL, AI_CV_Flail
+ if_effect EFFECT_HEAL_BELL, AI_CV_HealBell
+ if_effect EFFECT_THIEF, AI_CV_Thief
+ if_effect EFFECT_MEAN_LOOK, AI_CV_Trap
+ if_effect EFFECT_MINIMIZE, AI_CV_EvasionUp
+ if_effect EFFECT_CURSE, AI_CV_Curse
+ if_effect EFFECT_PROTECT, AI_CV_Protect
+ if_effect EFFECT_FORESIGHT, AI_CV_Foresight
+ if_effect EFFECT_ENDURE, AI_CV_Endure
+ if_effect EFFECT_BATON_PASS, AI_CV_BatonPass
+ if_effect EFFECT_PURSUIT, AI_CV_Pursuit
+ if_effect EFFECT_MORNING_SUN, AI_CV_HealWeather
+ if_effect EFFECT_SYNTHESIS, AI_CV_HealWeather
+ if_effect EFFECT_MOONLIGHT, AI_CV_HealWeather
+ if_effect EFFECT_RAIN_DANCE, AI_CV_RainDance
+ if_effect EFFECT_SUNNY_DAY, AI_CV_SunnyDay
+ if_effect EFFECT_BELLY_DRUM, AI_CV_BellyDrum
+ if_effect EFFECT_PSYCH_UP, AI_CV_PsychUp
+ if_effect EFFECT_MIRROR_COAT, AI_CV_MirrorCoat
+ if_effect EFFECT_SKULL_BASH, AI_CV_ChargeUpMove
+ if_effect EFFECT_SOLARBEAM, AI_CV_ChargeUpMove
+ if_effect EFFECT_SEMI_INVULNERABLE, AI_CV_SemiInvulnerable
+ if_effect EFFECT_SOFTBOILED, AI_CV_Heal
+ if_effect EFFECT_FAKE_OUT, AI_CV_FakeOut
+ if_effect EFFECT_SPIT_UP, AI_CV_SpitUp
+ if_effect EFFECT_SWALLOW, AI_CV_Heal
+ if_effect EFFECT_HAIL, AI_CV_Hail
+ if_effect EFFECT_FLATTER, AI_CV_Flatter
+ if_effect EFFECT_MEMENTO, AI_CV_SelfKO
+ if_effect EFFECT_FACADE, AI_CV_Facade
+ if_effect EFFECT_FOCUS_PUNCH, AI_CV_FocusPunch
+ if_effect EFFECT_SMELLINGSALT, AI_CV_SmellingSalt
+ if_effect EFFECT_TRICK, AI_CV_Trick
+ if_effect EFFECT_ROLE_PLAY, AI_CV_ChangeSelfAbility
+ if_effect EFFECT_SUPERPOWER, AI_CV_Superpower
+ if_effect EFFECT_MAGIC_COAT, AI_CV_MagicCoat
+ if_effect EFFECT_RECYCLE, AI_CV_Recycle
+ if_effect EFFECT_REVENGE, AI_CV_Revenge
+ if_effect EFFECT_BRICK_BREAK, AI_CV_BrickBreak
+ if_effect EFFECT_KNOCK_OFF, AI_CV_KnockOff
+ if_effect EFFECT_ENDEAVOR, AI_CV_Endeavor
+ if_effect EFFECT_ERUPTION, AI_CV_Eruption
+ if_effect EFFECT_SKILL_SWAP, AI_CV_ChangeSelfAbility
+ if_effect EFFECT_IMPRISON, AI_CV_Imprison
+ if_effect EFFECT_REFRESH, AI_CV_Refresh
+ if_effect EFFECT_SNATCH, AI_CV_Snatch
+ if_effect EFFECT_BLAZE_KICK, AI_CV_HighCrit
+ if_effect EFFECT_MUD_SPORT, AI_CV_MudSport
+ if_effect EFFECT_OVERHEAT, AI_CV_Overheat
+ if_effect EFFECT_TICKLE, AI_CV_DefenseDown
+ if_effect EFFECT_COSMIC_POWER, AI_CV_SpDefUp
+ if_effect EFFECT_BULK_UP, AI_CV_DefenseUp
+ if_effect EFFECT_POISON_TAIL, AI_CV_HighCrit
+ if_effect EFFECT_WATER_SPORT, AI_CV_WaterSport
+ if_effect EFFECT_CALM_MIND, AI_CV_SpDefUp
+ if_effect EFFECT_DRAGON_DANCE, AI_CV_DragonDance
+ end
+
+AI_CV_Sleep:: @ 81DA71C
+ if_has_move_with_effect AI_TARGET, EFFECT_DREAM_EATER, AI_CV_SleepEncourageSlpDamage
+ if_has_move_with_effect AI_TARGET, EFFECT_NIGHTMARE, AI_CV_SleepEncourageSlpDamage
+ goto AI_CV_Sleep_End
+
+AI_CV_SleepEncourageSlpDamage:: @ 81DA72F
+ if_random_less_than 128, AI_CV_Sleep_End
+ score +1
+
+AI_CV_Sleep_End:: @ 81DA737
+ end
+
+AI_CV_Absorb:: @ 81DA738
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_AbsorbEncourageMaybe
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_AbsorbEncourageMaybe
+ goto AI_CV_Absorb_End
+
+AI_CV_AbsorbEncourageMaybe:: @ 81DA749
+ if_random_less_than 50, AI_CV_Absorb_End
score -3
-AI_sub_81DA751:: @ 81DA751
+AI_CV_Absorb_End:: @ 81DA751
end
-AI_sub_81DA752:: @ 81DA752
- if_stat_level_less_than 0, 7, 7, AI_sub_81DA76C
+AI_CV_SelfKO:: @ 81DA752
+ if_stat_level_less_than AI_TARGET, STAT_EVASION, 7, AI_CV_SelfKO_Encourage1
score -1
- if_stat_level_less_than 0, 7, 10, AI_sub_81DA76C
- if_random_less_than -128, AI_sub_81DA76C
+ if_stat_level_less_than AI_TARGET, STAT_EVASION, 10, AI_CV_SelfKO_Encourage1
+ if_random_less_than 128, AI_CV_SelfKO_Encourage1
score -1
-AI_sub_81DA76C:: @ 81DA76C
- if_hp_less_than 1, 80, AI_sub_81DA784
- if_would_go_first 1, AI_sub_81DA784
- if_random_less_than 50, AI_sub_81DA7AF
- jump AI_sub_81DA42A
-
-AI_sub_81DA784:: @ 81DA784
- if_hp_more_than 1, 50, AI_sub_81DA7A7
- if_random_less_than -128, AI_sub_81DA793
- score 1
-
-AI_sub_81DA793:: @ 81DA793
- if_hp_more_than 1, 30, AI_sub_81DA7AF
- if_random_less_than 50, AI_sub_81DA7AF
- score 1
- jump AI_sub_81DA7AF
-
-AI_sub_81DA7A7:: @ 81DA7A7
- if_random_less_than 50, AI_sub_81DA7AF
+AI_CV_SelfKO_Encourage1:: @ 81DA76C
+ if_hp_less_than AI_USER, 80, AI_CV_SelfKO_Encourage2
+ if_target_faster AI_CV_SelfKO_Encourage2
+ if_random_less_than 50, AI_CV_SelfKO_End
+ goto Score_Minus3
+
+AI_CV_SelfKO_Encourage2:: @ 81DA784
+ if_hp_more_than AI_USER, 50, AI_CV_SelfKO_Encourage4
+ if_random_less_than 128, AI_CV_SelfKO_Encourage3
+ score +1
+
+AI_CV_SelfKO_Encourage3:: @ 81DA793
+ if_hp_more_than AI_USER, 30, AI_CV_SelfKO_End
+ if_random_less_than 50, AI_CV_SelfKO_End
+ score +1
+ goto AI_CV_SelfKO_End
+
+AI_CV_SelfKO_Encourage4:: @ 81DA7A7
+ if_random_less_than 50, AI_CV_SelfKO_End
score -1
-AI_sub_81DA7AF:: @ 81DA7AF
+AI_CV_SelfKO_End:: @ 81DA7AF
end
-AI_sub_81DA7B0:: @ 81DA7B0
- if_damage_bonus 10, AI_sub_81DA7C1
- if_damage_bonus 20, AI_sub_81DA7C1
- jump AI_sub_81DA7C3
+AI_CV_DreamEater:: @ 81DA7B0
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_DreamEater_ScoreDown1
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_DreamEater_ScoreDown1
+ goto AI_CV_DreamEater_End
-AI_sub_81DA7C1:: @ 81DA7C1
+AI_CV_DreamEater_ScoreDown1:: @ 81DA7C1
score -1
-AI_sub_81DA7C3:: @ 81DA7C3
+AI_CV_DreamEater_End:: @ 81DA7C3
end
-AI_sub_81DA7C4:: @ 81DA7C4
- if_would_go_first 1, AI_sub_81DA7E2
- get_move 0
- if_not_in_words AI_words_81DA7F8, AI_sub_81DA7E2
- if_random_less_than -128, AI_sub_81DA7F5
- score 2
- jump AI_sub_81DA7F5
+AI_CV_MirrorMove:: @ 81DA7C4
+ if_target_faster AI_CV_MirrorMove2
+ get_last_used_move AI_TARGET
+ if_not_in_hwords AI_CV_MirrorMove_EncouragedMovesToMirror, AI_CV_MirrorMove2
+ if_random_less_than 128, AI_CV_MirrorMove_End
+ score +2
+ goto AI_CV_MirrorMove_End
-AI_sub_81DA7E2:: @ 81DA7E2
- get_move 0
- if_in_words AI_words_81DA7F8, AI_sub_81DA7F5
- if_random_less_than 80, AI_sub_81DA7F5
+AI_CV_MirrorMove2:: @ 81DA7E2
+ get_last_used_move AI_TARGET
+ if_in_hwords AI_CV_MirrorMove_EncouragedMovesToMirror, AI_CV_MirrorMove_End
+ if_random_less_than 80, AI_CV_MirrorMove_End
score -1
-AI_sub_81DA7F5:: @ 81DA7F5
+AI_CV_MirrorMove_End:: @ 81DA7F5
end
- .space 2
-AI_words_81DA7F8:: @ 81DA7F8
+ .space 2
+AI_CV_MirrorMove_EncouragedMovesToMirror:: @ 81DA7F8
.align 1
- .2byte 0x4F
- .2byte 0x8E
- .2byte 0x93
- .2byte 0x5F
- .2byte 0x2F
- .2byte 0x140
- .2byte 0x145
- .2byte 0x1C
- .2byte 0x6C
- .2byte 0x5C
- .2byte 0xC
- .2byte 0x20
- .2byte 0x5A
- .2byte 0x149
- .2byte 0xEE
- .2byte 0xB1
- .2byte 0x6D
- .2byte 0xBA
- .2byte 0x67
- .2byte 0xB2
- .2byte 0xB8
- .2byte 0x139
- .2byte 0x13F
- .2byte 0x56
- .2byte 0x89
- .2byte 0x4D
- .2byte 0xF7
- .2byte 0xDF
- .2byte 0x3F
- .2byte 0xF5
- .2byte 0xA8
- .2byte 0x157
- .2byte 0xD5
- .2byte 0xCF
- .2byte 0x103
- .2byte 0x104
- .2byte 0x10F
- .2byte 0x114
- .2byte 0x11D
- .2byte 0xFFFF
-
-AI_sub_81DA848:: @ 81DA848
- if_stat_level_less_than 1, 1, 9, AI_sub_81DA85D
- if_random_less_than 100, AI_sub_81DA86C
+ .2byte MOVE_SLEEP_POWDER
+ .2byte MOVE_LOVELY_KISS
+ .2byte MOVE_SPORE
+ .2byte MOVE_HYPNOSIS
+ .2byte MOVE_SING
+ .2byte MOVE_GRASS_WHISTLE
+ .2byte MOVE_SHADOW_PUNCH
+ .2byte MOVE_SAND_ATTACK
+ .2byte MOVE_SMOKESCREEN
+ .2byte MOVE_TOXIC
+ .2byte MOVE_GUILLOTINE
+ .2byte MOVE_HORN_DRILL
+ .2byte MOVE_FISSURE
+ .2byte MOVE_SHEER_COLD
+ .2byte MOVE_CROSS_CHOP
+ .2byte MOVE_AEROBLAST
+ .2byte MOVE_CONFUSE_RAY
+ .2byte MOVE_SWEET_KISS
+ .2byte MOVE_SCREECH
+ .2byte MOVE_COTTON_SPORE
+ .2byte MOVE_SCARY_FACE
+ .2byte MOVE_FAKE_TEARS
+ .2byte MOVE_METAL_SOUND
+ .2byte MOVE_THUNDER_WAVE
+ .2byte MOVE_GLARE
+ .2byte MOVE_POISON_POWDER
+ .2byte MOVE_SHADOW_BALL
+ .2byte MOVE_DYNAMIC_PUNCH
+ .2byte MOVE_HYPER_BEAM
+ .2byte MOVE_EXTREME_SPEED
+ .2byte MOVE_THIEF
+ .2byte MOVE_COVET
+ .2byte MOVE_ATTRACT
+ .2byte MOVE_SWAGGER
+ .2byte MOVE_TORMENT
+ .2byte MOVE_FLATTER
+ .2byte MOVE_TRICK
+ .2byte MOVE_SUPERPOWER
+ .2byte MOVE_SKILL_SWAP
+ .2byte -1
+
+AI_CV_AttackUp:: @ 81DA848
+ if_stat_level_less_than AI_USER, STAT_ATK, 9, AI_CV_AttackUp2
+ if_random_less_than 100, AI_CV_AttackUp3
score -1
- jump AI_sub_81DA86C
+ goto AI_CV_AttackUp3
-AI_sub_81DA85D:: @ 81DA85D
- if_hp_not_equal 1, 100, AI_sub_81DA86C
- if_random_less_than -128, AI_sub_81DA86C
- score 2
+AI_CV_AttackUp2:: @ 81DA85D
+ if_hp_not_equal AI_USER, 100, AI_CV_AttackUp3
+ if_random_less_than 128, AI_CV_AttackUp3
+ score +2
-AI_sub_81DA86C:: @ 81DA86C
- if_hp_more_than 1, 70, AI_sub_81DA882
- if_hp_less_than 1, 40, AI_sub_81DA880
- if_random_less_than 40, AI_sub_81DA882
+AI_CV_AttackUp3:: @ 81DA86C
+ if_hp_more_than AI_USER, 70, AI_CV_AttackUp_End
+ if_hp_less_than AI_USER, 40, AI_CV_AttackUp_ScoreDown2
+ if_random_less_than 40, AI_CV_AttackUp_End
-AI_sub_81DA880:: @ 81DA880
+AI_CV_AttackUp_ScoreDown2:: @ 81DA880
score -2
-AI_sub_81DA882:: @ 81DA882
+AI_CV_AttackUp_End:: @ 81DA882
end
-AI_sub_81DA883:: @ 81DA883
- if_stat_level_less_than 1, 2, 9, AI_sub_81DA898
- if_random_less_than 100, AI_sub_81DA8A7
+AI_CV_DefenseUp:: @ 81DA883
+ if_stat_level_less_than AI_USER, STAT_DEF, 9, AI_CV_DefenseUp2
+ if_random_less_than 100, AI_CV_DefenseUp3
score -1
- jump AI_sub_81DA8A7
+ goto AI_CV_DefenseUp3
-AI_sub_81DA898:: @ 81DA898
- if_hp_not_equal 1, 100, AI_sub_81DA8A7
- if_random_less_than -128, AI_sub_81DA8A7
- score 2
+AI_CV_DefenseUp2:: @ 81DA898
+ if_hp_not_equal AI_USER, 100, AI_CV_DefenseUp3
+ if_random_less_than 128, AI_CV_DefenseUp3
+ score +2
-AI_sub_81DA8A7:: @ 81DA8A7
- if_hp_less_than 1, 70, AI_sub_81DA8B4
- if_random_less_than -56, AI_sub_81DA8DE
+AI_CV_DefenseUp3:: @ 81DA8A7
+ if_hp_less_than AI_USER, 70, AI_CV_DefenseUp4
+ if_random_less_than 200, AI_CV_DefenseUp_End
-AI_sub_81DA8B4:: @ 81DA8B4
- if_hp_less_than 1, 40, AI_sub_81DA8DC
- get_move 0
+AI_CV_DefenseUp4:: @ 81DA8B4
+ if_hp_less_than AI_USER, 40, AI_CV_DefenseUp_ScoreDown2
+ get_last_used_move AI_TARGET
get_move_power_from_result
- if_equal 0, AI_sub_81DA8D6
- get_move 0
+ if_equal 0, AI_CV_DefenseUp5
+ get_last_used_move AI_TARGET
get_move_type_from_result
- if_not_in_bytes AI_bytes_81DA8DF, AI_sub_81DA8DC
- if_random_less_than 60, AI_sub_81DA8DE
+ if_not_in_bytes AI_CV_DefenseUp_PhysicalTypes, AI_CV_DefenseUp_ScoreDown2
+ if_random_less_than 60, AI_CV_DefenseUp_End
-AI_sub_81DA8D6:: @ 81DA8D6
- if_random_less_than 60, AI_sub_81DA8DE
+AI_CV_DefenseUp5:: @ 81DA8D6
+ if_random_less_than 60, AI_CV_DefenseUp_End
-AI_sub_81DA8DC:: @ 81DA8DC
+AI_CV_DefenseUp_ScoreDown2:: @ 81DA8DC
score -2
-AI_sub_81DA8DE:: @ 81DA8DE
+AI_CV_DefenseUp_End:: @ 81DA8DE
end
-AI_bytes_81DA8DF:: @ 81DA8DF
- .byte 0
- .byte 1
- .byte 3
- .byte 4
- .byte 2
- .byte 5
- .byte 6
- .byte 7
- .byte 8
- .byte 0xFF
+AI_CV_DefenseUp_PhysicalTypes:: @ 81DA8DF
+ .byte TYPE_NORMAL
+ .byte TYPE_FIGHTING
+ .byte TYPE_POISON
+ .byte TYPE_GROUND
+ .byte TYPE_FLYING
+ .byte TYPE_ROCK
+ .byte TYPE_BUG
+ .byte TYPE_GHOST
+ .byte TYPE_STEEL
+ .byte -1
-AI_sub_81DA8E9:: @ 81DA8E9
- if_would_go_first 1, AI_sub_81DA8F6
+AI_CV_SpeedUp:: @ 81DA8E9
+ if_target_faster AI_CV_SpeedUp2
score -3
- jump AI_sub_81DA8FE
+ goto AI_CV_SpeedUp_End
-AI_sub_81DA8F6:: @ 81DA8F6
- if_random_less_than 70, AI_sub_81DA8FE
- score 3
+AI_CV_SpeedUp2:: @ 81DA8F6
+ if_random_less_than 70, AI_CV_SpeedUp_End
+ score +3
-AI_sub_81DA8FE:: @ 81DA8FE
+AI_CV_SpeedUp_End:: @ 81DA8FE
end
-AI_sub_81DA8FF:: @ 81DA8FF
- if_stat_level_less_than 1, 4, 9, AI_sub_81DA914
- if_random_less_than 100, AI_sub_81DA923
+AI_CV_SpAtkUp:: @ 81DA8FF
+ if_stat_level_less_than AI_USER, STAT_SPATK, 9, AI_CV_SpAtkUp2
+ if_random_less_than 100, AI_CV_SpAtkUp3
score -1
- jump AI_sub_81DA923
+ goto AI_CV_SpAtkUp3
-AI_sub_81DA914:: @ 81DA914
- if_hp_not_equal 1, 100, AI_sub_81DA923
- if_random_less_than -128, AI_sub_81DA923
- score 2
+AI_CV_SpAtkUp2:: @ 81DA914
+ if_hp_not_equal AI_USER, 100, AI_CV_SpAtkUp3
+ if_random_less_than 128, AI_CV_SpAtkUp3
+ score +2
-AI_sub_81DA923:: @ 81DA923
- if_hp_more_than 1, 70, AI_sub_81DA939
- if_hp_less_than 1, 40, AI_sub_81DA937
- if_random_less_than 70, AI_sub_81DA939
+AI_CV_SpAtkUp3:: @ 81DA923
+ if_hp_more_than AI_USER, 70, AI_CV_SpAtkUp_End
+ if_hp_less_than AI_USER, 40, AI_CV_SpAtkUp_ScoreDown2
+ if_random_less_than 70, AI_CV_SpAtkUp_End
-AI_sub_81DA937:: @ 81DA937
+AI_CV_SpAtkUp_ScoreDown2:: @ 81DA937
score -2
-AI_sub_81DA939:: @ 81DA939
+AI_CV_SpAtkUp_End:: @ 81DA939
end
-AI_sub_81DA93A:: @ 81DA93A
- if_stat_level_less_than 1, 5, 9, AI_sub_81DA94F
- if_random_less_than 100, AI_sub_81DA95E
+AI_CV_SpDefUp:: @ 81DA93A
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 9, AI_CV_SpDefUp2
+ if_random_less_than 100, AI_CV_SpDefUp3
score -1
- jump AI_sub_81DA95E
+ goto AI_CV_SpDefUp3
-AI_sub_81DA94F:: @ 81DA94F
- if_hp_not_equal 1, 100, AI_sub_81DA95E
- if_random_less_than -128, AI_sub_81DA95E
- score 2
+AI_CV_SpDefUp2:: @ 81DA94F
+ if_hp_not_equal AI_USER, 100, AI_CV_SpDefUp3
+ if_random_less_than 128, AI_CV_SpDefUp3
+ score +2
-AI_sub_81DA95E:: @ 81DA95E
- if_hp_less_than 1, 70, AI_sub_81DA96B
- if_random_less_than -56, AI_sub_81DA995
+AI_CV_SpDefUp3:: @ 81DA95E
+ if_hp_less_than AI_USER, 70, AI_CV_SpDefUp4
+ if_random_less_than 200, AI_CV_SpDefUp_End
-AI_sub_81DA96B:: @ 81DA96B
- if_hp_less_than 1, 40, AI_sub_81DA993
- get_move 0
+AI_CV_SpDefUp4:: @ 81DA96B
+ if_hp_less_than AI_USER, 40, AI_CV_SpDefUp_ScoreDown2
+ get_last_used_move AI_TARGET
get_move_power_from_result
- if_equal 0, AI_sub_81DA98D
- get_move 0
+ if_equal 0, AI_CV_SpDefUp5
+ get_last_used_move AI_TARGET
get_move_type_from_result
- if_in_bytes AI_bytes_81DA996, AI_sub_81DA993
- if_random_less_than 60, AI_sub_81DA995
+ if_in_bytes AI_CV_SpDefUp_PhysicalTypes, AI_CV_SpDefUp_ScoreDown2
+ if_random_less_than 60, AI_CV_SpDefUp_End
-AI_sub_81DA98D:: @ 81DA98D
- if_random_less_than 60, AI_sub_81DA995
+AI_CV_SpDefUp5:: @ 81DA98D
+ if_random_less_than 60, AI_CV_SpDefUp_End
-AI_sub_81DA993:: @ 81DA993
+AI_CV_SpDefUp_ScoreDown2:: @ 81DA993
score -2
-AI_sub_81DA995:: @ 81DA995
+AI_CV_SpDefUp_End:: @ 81DA995
end
-AI_bytes_81DA996:: @ 81DA996
- .byte 0
- .byte 1
- .byte 3
- .byte 4
- .byte 2
- .byte 5
- .byte 6
- .byte 7
- .byte 8
- .byte 0xFF
+AI_CV_SpDefUp_PhysicalTypes:: @ 81DA996
+ .byte TYPE_NORMAL
+ .byte TYPE_FIGHTING
+ .byte TYPE_POISON
+ .byte TYPE_GROUND
+ .byte TYPE_FLYING
+ .byte TYPE_ROCK
+ .byte TYPE_BUG
+ .byte TYPE_GHOST
+ .byte TYPE_STEEL
+ .byte -1
-AI_sub_81DA9A0:: @ 81DA9A0
- if_stat_level_less_than 1, 6, 9, AI_sub_81DA9B0
- if_random_less_than 50, AI_sub_81DA9B0
+AI_CV_AccuracyUp:: @ 81DA9A0
+ if_stat_level_less_than AI_USER, STAT_ACC, 9, AI_CV_AccuracyUp2
+ if_random_less_than 50, AI_CV_AccuracyUp2
score -2
-AI_sub_81DA9B0:: @ 81DA9B0
- if_hp_more_than 1, 70, AI_sub_81DA9B9
+AI_CV_AccuracyUp2:: @ 81DA9B0
+ if_hp_more_than AI_USER, 70, AI_CV_AccuracyUp_End
score -2
-AI_sub_81DA9B9:: @ 81DA9B9
+AI_CV_AccuracyUp_End:: @ 81DA9B9
end
-AI_sub_81DA9BA:: @ 81DA9BA
- if_hp_less_than 1, 90, AI_sub_81DA9C9
- if_random_less_than 100, AI_sub_81DA9C9
- score 3
+AI_CV_EvasionUp:: @ 81DA9BA
+ if_hp_less_than AI_USER, 90, AI_CV_EvasionUp2
+ if_random_less_than 100, AI_CV_EvasionUp2
+ score +3
-AI_sub_81DA9C9:: @ 81DA9C9
- if_stat_level_less_than 1, 7, 9, AI_sub_81DA9D9
- if_random_less_than -128, AI_sub_81DA9D9
+AI_CV_EvasionUp2:: @ 81DA9C9
+ if_stat_level_less_than AI_USER, STAT_EVASION, 9, AI_CV_EvasionUp3
+ if_random_less_than 128, AI_CV_EvasionUp3
score -1
-AI_sub_81DA9D9:: @ 81DA9D9
- if_not_status 0, 128, AI_sub_81DA9F8
- if_hp_more_than 1, 50, AI_sub_81DA9F0
- if_random_less_than 80, AI_sub_81DA9F8
-
-AI_sub_81DA9F0:: @ 81DA9F0
- if_random_less_than 50, AI_sub_81DA9F8
- score 3
-
-AI_sub_81DA9F8:: @ 81DA9F8
- if_not_status3 0, 4, AI_sub_81DAA0A
- if_random_less_than 70, AI_sub_81DAA0A
- score 3
-
-AI_sub_81DAA0A:: @ 81DAA0A
- if_not_status3 1, 1024, AI_sub_81DAA1C
- if_random_less_than -128, AI_sub_81DAA1C
- score 2
-
-AI_sub_81DAA1C:: @ 81DAA1C
- if_not_status2 0, 268435456, AI_sub_81DAA2E
- if_random_less_than 70, AI_sub_81DAA2E
- score 3
-
-AI_sub_81DAA2E:: @ 81DAA2E
- if_hp_more_than 1, 70, AI_sub_81DAA53
- if_stat_level_equal 1, 7, 6, AI_sub_81DAA53
- if_hp_less_than 1, 40, AI_sub_81DAA51
- if_hp_less_than 0, 40, AI_sub_81DAA51
- if_random_less_than 70, AI_sub_81DAA53
-
-AI_sub_81DAA51:: @ 81DAA51
+AI_CV_EvasionUp3:: @ 81DA9D9
+ if_not_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_EvasionUp5
+ if_hp_more_than AI_USER, 50, AI_CV_EvasionUp4
+ if_random_less_than 80, AI_CV_EvasionUp5
+
+AI_CV_EvasionUp4:: @ 81DA9F0
+ if_random_less_than 50, AI_CV_EvasionUp5
+ score +3
+
+AI_CV_EvasionUp5:: @ 81DA9F8
+ if_not_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_EvasionUp6
+ if_random_less_than 70, AI_CV_EvasionUp6
+ score +3
+
+AI_CV_EvasionUp6:: @ 81DAA0A
+ if_not_status3 AI_USER, STATUS3_ROOTED, AI_CV_EvasionUp7
+ if_random_less_than 128, AI_CV_EvasionUp7
+ score +2
+
+AI_CV_EvasionUp7:: @ 81DAA1C
+ if_not_status2 AI_TARGET, STATUS2_CURSED, AI_CV_EvasionUp8
+ if_random_less_than 70, AI_CV_EvasionUp8
+ score +3
+
+AI_CV_EvasionUp8:: @ 81DAA2E
+ if_hp_more_than AI_USER, 70, AI_CV_EvasionUp_End
+ if_stat_level_equal AI_USER, STAT_EVASION, 6, AI_CV_EvasionUp_End
+ if_hp_less_than AI_USER, 40, AI_CV_EvasionUp_ScoreDown2
+ if_hp_less_than AI_TARGET, 40, AI_CV_EvasionUp_ScoreDown2
+ if_random_less_than 70, AI_CV_EvasionUp_End
+
+AI_CV_EvasionUp_ScoreDown2:: @ 81DAA51
score -2
-AI_sub_81DAA53:: @ 81DAA53
+AI_CV_EvasionUp_End:: @ 81DAA53
end
-AI_sub_81DAA54:: @ 81DAA54
- if_stat_level_more_than 0, 7, 10, AI_sub_81DAA79
- if_stat_level_less_than 1, 6, 2, AI_sub_81DAA79
- if_stat_level_more_than 0, 7, 8, AI_sub_81DAA7B
- if_stat_level_less_than 1, 6, 4, AI_sub_81DAA7B
- jump AI_sub_81DAA83
+AI_CV_AlwaysHit:: @ 81DAA54
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 10, AI_CV_AlwaysHit_ScoreUp1
+ if_stat_level_less_than AI_USER, STAT_ACC, 2, AI_CV_AlwaysHit_ScoreUp1
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_AlwaysHit2
+ if_stat_level_less_than AI_USER, STAT_ACC, 4, AI_CV_AlwaysHit2
+ goto AI_CV_AlwaysHit_End
-AI_sub_81DAA79:: @ 81DAA79
- score 1
+AI_CV_AlwaysHit_ScoreUp1:: @ 81DAA79
+ score +1
-AI_sub_81DAA7B:: @ 81DAA7B
- if_random_less_than 100, AI_sub_81DAA83
- score 1
+AI_CV_AlwaysHit2:: @ 81DAA7B
+ if_random_less_than 100, AI_CV_AlwaysHit_End
+ score +1
-AI_sub_81DAA83:: @ 81DAA83
+AI_CV_AlwaysHit_End:: @ 81DAA83
end
-AI_sub_81DAA84:: @ 81DAA84
- if_stat_level_equal 0, 1, 6, AI_sub_81DAAA7
+AI_CV_AttackDown:: @ 81DAA84
+ if_stat_level_equal AI_TARGET, STAT_ATK, 6, AI_CV_AttackDown3
score -1
- if_hp_more_than 1, 90, AI_sub_81DAA97
+ if_hp_more_than AI_USER, 90, AI_CV_AttackDown2
score -1
-AI_sub_81DAA97:: @ 81DAA97
- if_stat_level_more_than 0, 1, 3, AI_sub_81DAAA7
- if_random_less_than 50, AI_sub_81DAAA7
+AI_CV_AttackDown2:: @ 81DAA97
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 3, AI_CV_AttackDown3
+ if_random_less_than 50, AI_CV_AttackDown3
score -2
-AI_sub_81DAAA7:: @ 81DAAA7
- if_hp_more_than 0, 70, AI_sub_81DAAB0
+AI_CV_AttackDown3:: @ 81DAAA7
+ if_hp_more_than AI_TARGET, 70, AI_CV_AttackDown4
score -2
-AI_sub_81DAAB0:: @ 81DAAB0
- get_type 0
- if_in_bytes AI_bytes_81DAACF, AI_sub_81DAACE
- get_type 2
- if_in_bytes AI_bytes_81DAACF, AI_sub_81DAACE
- if_random_less_than 50, AI_sub_81DAACE
+AI_CV_AttackDown4:: @ 81DAAB0
+ get_target_type1
+ if_in_bytes AI_CV_AttackDown_PhysicalTypeList, AI_CV_AttackDown_End
+ get_target_type2
+ if_in_bytes AI_CV_AttackDown_PhysicalTypeList, AI_CV_AttackDown_End
+ if_random_less_than 50, AI_CV_AttackDown_End
score -2
-AI_sub_81DAACE:: @ 81DAACE
+AI_CV_AttackDown_End:: @ 81DAACE
end
-AI_bytes_81DAACF:: @ 81DAACF
- .byte 0
- .byte 1
- .byte 4
- .byte 5
- .byte 6
- .byte 8
- .byte 0xFF
+@ Missing Poison, Flying, and Ghost for unknown reason
+AI_CV_AttackDown_PhysicalTypeList:: @ 81DAACF
+ .byte TYPE_NORMAL
+ .byte TYPE_FIGHTING
+ .byte TYPE_GROUND
+ .byte TYPE_ROCK
+ .byte TYPE_BUG
+ .byte TYPE_STEEL
+ .byte -1
-AI_sub_81DAAD6:: @ 81DAAD6
- if_hp_less_than 1, 70, AI_sub_81DAAE5
- if_stat_level_more_than 0, 2, 3, AI_sub_81DAAED
+AI_CV_DefenseDown:: @ 81DAAD6
+ if_hp_less_than AI_USER, 70, AI_CV_DefenseDown2
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 3, AI_CV_DefenseDown3
-AI_sub_81DAAE5:: @ 81DAAE5
- if_random_less_than 50, AI_sub_81DAAED
+AI_CV_DefenseDown2:: @ 81DAAE5
+ if_random_less_than 50, AI_CV_DefenseDown3
score -2
-AI_sub_81DAAED:: @ 81DAAED
- if_hp_more_than 0, 70, AI_sub_81DAAF6
+AI_CV_DefenseDown3:: @ 81DAAED
+ if_hp_more_than AI_TARGET, 70, AI_CV_DefenseDown_End
score -2
-AI_sub_81DAAF6:: @ 81DAAF6
+AI_CV_DefenseDown_End:: @ 81DAAF6
end
-AI_sub_81DAAF7:: @ 81DAAF7
- if_move 196, AI_sub_81DAB0D
- if_move 317, AI_sub_81DAB0D
- if_move 341, AI_sub_81DAB0D
+AI_CV_SpeedDownFromChance:: @ 81DAAF7
+ if_move MOVE_ICY_WIND, AI_CV_SpeedDown
+ if_move MOVE_ROCK_TOMB, AI_CV_SpeedDown
+ if_move MOVE_MUD_SHOT, AI_CV_SpeedDown
end
-AI_sub_81DAB0D:: @ 81DAB0D
- if_would_go_first 1, AI_sub_81DAB1A
+AI_CV_SpeedDown:: @ 81DAB0D
+ if_target_faster AI_CV_SpeedDown2
score -3
- jump AI_sub_81DAB22
+ goto AI_CV_SpeedDown_End
-AI_sub_81DAB1A:: @ 81DAB1A
- if_random_less_than 70, AI_sub_81DAB22
- score 2
+AI_CV_SpeedDown2:: @ 81DAB1A
+ if_random_less_than 70, AI_CV_SpeedDown_End
+ score +2
-AI_sub_81DAB22:: @ 81DAB22
+AI_CV_SpeedDown_End:: @ 81DAB22
end
-AI_sub_81DAB23:: @ 81DAB23
- if_stat_level_equal 0, 1, 6, AI_sub_81DAB46
+AI_CV_SpAtkDown:: @ 81DAB23
+ if_stat_level_equal AI_TARGET, STAT_ATK, 6, AI_CV_SpAtkDown3
score -1
- if_hp_more_than 1, 90, AI_sub_81DAB36
+ if_hp_more_than AI_USER, 90, AI_CV_SpAtkDown2
score -1
-AI_sub_81DAB36:: @ 81DAB36
- if_stat_level_more_than 0, 4, 3, AI_sub_81DAB46
- if_random_less_than 50, AI_sub_81DAB46
+AI_CV_SpAtkDown2:: @ 81DAB36
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 3, AI_CV_SpAtkDown3
+ if_random_less_than 50, AI_CV_SpAtkDown3
score -2
-AI_sub_81DAB46:: @ 81DAB46
- if_hp_more_than 0, 70, AI_sub_81DAB4F
+AI_CV_SpAtkDown3:: @ 81DAB46
+ if_hp_more_than AI_TARGET, 70, AI_CV_SpAtkDown4
score -2
-AI_sub_81DAB4F:: @ 81DAB4F
- get_type 0
- if_in_bytes AI_bytes_81DAB6E, AI_sub_81DAB6D
- get_type 2
- if_in_bytes AI_bytes_81DAB6E, AI_sub_81DAB6D
- if_random_less_than 50, AI_sub_81DAB6D
+AI_CV_SpAtkDown4:: @ 81DAB4F
+ get_target_type1
+ if_in_bytes AI_CV_SpAtkDown_SpecialTypeList, AI_CV_SpAtkDown_End
+ get_target_type2
+ if_in_bytes AI_CV_SpAtkDown_SpecialTypeList, AI_CV_SpAtkDown_End
+ if_random_less_than 50, AI_CV_SpAtkDown_End
score -2
-AI_sub_81DAB6D:: @ 81DAB6D
+AI_CV_SpAtkDown_End:: @ 81DAB6D
end
-AI_bytes_81DAB6E:: @ 81DAB6E
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 15
- .byte 16
- .byte 17
- .byte 0xFF
+AI_CV_SpAtkDown_SpecialTypeList:: @ 81DAB6E
+ .byte TYPE_FIRE
+ .byte TYPE_WATER
+ .byte TYPE_GRASS
+ .byte TYPE_ELECTRIC
+ .byte TYPE_PSYCHIC
+ .byte TYPE_ICE
+ .byte TYPE_DRAGON
+ .byte TYPE_DARK
+ .byte -1
-AI_sub_81DAB77:: @ 81DAB77
- if_hp_less_than 1, 70, AI_sub_81DAB86
- if_stat_level_more_than 0, 5, 3, AI_sub_81DAB8E
+AI_CV_SpDefDown:: @ 81DAB77
+ if_hp_less_than AI_USER, 70, AI_CV_SpDefDown2
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 3, AI_CV_SpDefDown3
-AI_sub_81DAB86:: @ 81DAB86
- if_random_less_than 50, AI_sub_81DAB8E
+AI_CV_SpDefDown2:: @ 81DAB86
+ if_random_less_than 50, AI_CV_SpDefDown3
score -2
-AI_sub_81DAB8E:: @ 81DAB8E
- if_hp_more_than 0, 70, AI_sub_81DAB97
+AI_CV_SpDefDown3:: @ 81DAB8E
+ if_hp_more_than AI_TARGET, 70, AI_CV_SpDefDown_End
score -2
-AI_sub_81DAB97:: @ 81DAB97
+AI_CV_SpDefDown_End:: @ 81DAB97
end
-AI_sub_81DAB98:: @ 81DAB98
- if_hp_less_than 1, 70, AI_sub_81DABA6
- if_hp_more_than 0, 70, AI_sub_81DABAE
+AI_CV_AccuracyDown:: @ 81DAB98
+ if_hp_less_than AI_USER, 70, AI_CV_AccuracyDown2
+ if_hp_more_than AI_TARGET, 70, AI_CV_AccuracyDown3
-AI_sub_81DABA6:: @ 81DABA6
- if_random_less_than 100, AI_sub_81DABAE
+AI_CV_AccuracyDown2:: @ 81DABA6
+ if_random_less_than 100, AI_CV_AccuracyDown3
score -1
-AI_sub_81DABAE:: @ 81DABAE
- if_stat_level_more_than 1, 6, 4, AI_sub_81DABBE
- if_random_less_than 80, AI_sub_81DABBE
+AI_CV_AccuracyDown3:: @ 81DABAE
+ if_stat_level_more_than AI_USER, STAT_ACC, 4, AI_CV_AccuracyDown4
+ if_random_less_than 80, AI_CV_AccuracyDown4
score -2
-AI_sub_81DABBE:: @ 81DABBE
- if_not_status 0, 128, AI_sub_81DABD0
- if_random_less_than 70, AI_sub_81DABD0
- score 2
-
-AI_sub_81DABD0:: @ 81DABD0
- if_not_status3 0, 4, AI_sub_81DABE2
- if_random_less_than 70, AI_sub_81DABE2
- score 2
-
-AI_sub_81DABE2:: @ 81DABE2
- if_not_status3 1, 1024, AI_sub_81DABF4
- if_random_less_than -128, AI_sub_81DABF4
- score 1
-
-AI_sub_81DABF4:: @ 81DABF4
- if_not_status2 0, 268435456, AI_sub_81DAC06
- if_random_less_than 70, AI_sub_81DAC06
- score 2
-
-AI_sub_81DAC06:: @ 81DAC06
- if_hp_more_than 1, 70, AI_sub_81DAC2B
- if_stat_level_equal 0, 6, 6, AI_sub_81DAC2B
- if_hp_less_than 1, 40, AI_sub_81DAC29
- if_hp_less_than 0, 40, AI_sub_81DAC29
- if_random_less_than 70, AI_sub_81DAC2B
-
-AI_sub_81DAC29:: @ 81DAC29
+AI_CV_AccuracyDown4:: @ 81DABBE
+ if_not_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_AccuracyDown5
+ if_random_less_than 70, AI_CV_AccuracyDown5
+ score +2
+
+AI_CV_AccuracyDown5:: @ 81DABD0
+ if_not_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_AccuracyDown6
+ if_random_less_than 70, AI_CV_AccuracyDown6
+ score +2
+
+AI_CV_AccuracyDown6:: @ 81DABE2
+ if_not_status3 AI_USER, STATUS3_ROOTED, AI_CV_AccuracyDown7
+ if_random_less_than 128, AI_CV_AccuracyDown7
+ score +1
+
+AI_CV_AccuracyDown7:: @ 81DABF4
+ if_not_status2 AI_TARGET, STATUS2_CURSED, AI_CV_AccuracyDown8
+ if_random_less_than 70, AI_CV_AccuracyDown8
+ score +2
+
+AI_CV_AccuracyDown8:: @ 81DAC06
+ if_hp_more_than AI_USER, 70, AI_CV_AccuracyDown_End
+ if_stat_level_equal AI_TARGET, STAT_ACC, 6, AI_CV_AccuracyDown_End
+ if_hp_less_than AI_USER, 40, AI_CV_AccuracyDown_ScoreDown2
+ if_hp_less_than AI_TARGET, 40, AI_CV_AccuracyDown_ScoreDown2
+ if_random_less_than 70, AI_CV_AccuracyDown_End
+
+AI_CV_AccuracyDown_ScoreDown2:: @ 81DAC29
score -2
-AI_sub_81DAC2B:: @ 81DAC2B
+AI_CV_AccuracyDown_End:: @ 81DAC2B
end
-AI_sub_81DAC2C:: @ 81DAC2C
- if_hp_less_than 1, 70, AI_sub_81DAC3B
- if_stat_level_more_than 0, 7, 3, AI_sub_81DAC43
+AI_CV_EvasionDown:: @ 81DAC2C
+ if_hp_less_than AI_USER, 70, AI_CV_EvasionDown2
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 3, AI_CV_EvasionDown3
-AI_sub_81DAC3B:: @ 81DAC3B
- if_random_less_than 50, AI_sub_81DAC43
+AI_CV_EvasionDown2:: @ 81DAC3B
+ if_random_less_than 50, AI_CV_EvasionDown3
score -2
-AI_sub_81DAC43:: @ 81DAC43
- if_hp_more_than 0, 70, AI_sub_81DAC4C
+AI_CV_EvasionDown3:: @ 81DAC43
+ if_hp_more_than AI_TARGET, 70, AI_CV_EvasionDown_End
score -2
-AI_sub_81DAC4C:: @ 81DAC4C
+AI_CV_EvasionDown_End:: @ 81DAC4C
end
-AI_sub_81DAC4D:: @ 81DAC4D
- if_stat_level_more_than 1, 1, 8, AI_sub_81DACA2
- if_stat_level_more_than 1, 2, 8, AI_sub_81DACA2
- if_stat_level_more_than 1, 4, 8, AI_sub_81DACA2
- if_stat_level_more_than 1, 5, 8, AI_sub_81DACA2
- if_stat_level_more_than 1, 7, 8, AI_sub_81DACA2
- if_stat_level_less_than 0, 1, 4, AI_sub_81DACA2
- if_stat_level_less_than 0, 2, 4, AI_sub_81DACA2
- if_stat_level_less_than 0, 4, 4, AI_sub_81DACA2
- if_stat_level_less_than 0, 5, 4, AI_sub_81DACA2
- if_stat_level_less_than 0, 6, 4, AI_sub_81DACA2
- jump AI_sub_81DACAA
+AI_CV_Haze:: @ 81DAC4D
+ if_stat_level_more_than AI_USER, STAT_ATK, 8, AI_CV_Haze2
+ if_stat_level_more_than AI_USER, STAT_DEF, 8, AI_CV_Haze2
+ if_stat_level_more_than AI_USER, STAT_SPATK, 8, AI_CV_Haze2
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 8, AI_CV_Haze2
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, AI_CV_Haze2
+ if_stat_level_less_than AI_TARGET, STAT_ATK, 4, AI_CV_Haze2
+ if_stat_level_less_than AI_TARGET, STAT_DEF, 4, AI_CV_Haze2
+ if_stat_level_less_than AI_TARGET, STAT_SPATK, 4, AI_CV_Haze2
+ if_stat_level_less_than AI_TARGET, STAT_SPDEF, 4, AI_CV_Haze2
+ if_stat_level_less_than AI_TARGET, STAT_ACC, 4, AI_CV_Haze2
+ goto AI_CV_Haze3
-AI_sub_81DACA2:: @ 81DACA2
- if_random_less_than 50, AI_sub_81DACAA
+AI_CV_Haze2:: @ 81DACA2
+ if_random_less_than 50, AI_CV_Haze3
score -3
-AI_sub_81DACAA:: @ 81DACAA
- if_stat_level_more_than 0, 1, 8, AI_sub_81DAD07
- if_stat_level_more_than 0, 2, 8, AI_sub_81DAD07
- if_stat_level_more_than 0, 4, 8, AI_sub_81DAD07
- if_stat_level_more_than 0, 5, 8, AI_sub_81DAD07
- if_stat_level_more_than 0, 7, 8, AI_sub_81DAD07
- if_stat_level_less_than 1, 1, 4, AI_sub_81DAD07
- if_stat_level_less_than 1, 2, 4, AI_sub_81DAD07
- if_stat_level_less_than 1, 4, 4, AI_sub_81DAD07
- if_stat_level_less_than 1, 5, 4, AI_sub_81DAD07
- if_stat_level_less_than 1, 6, 4, AI_sub_81DAD07
- if_random_less_than 50, AI_sub_81DAD0F
+AI_CV_Haze3:: @ 81DACAA
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, AI_CV_Haze4
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, AI_CV_Haze4
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, AI_CV_Haze4
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, AI_CV_Haze4
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_Haze4
+ if_stat_level_less_than AI_USER, STAT_ATK, 4, AI_CV_Haze4
+ if_stat_level_less_than AI_USER, STAT_DEF, 4, AI_CV_Haze4
+ if_stat_level_less_than AI_USER, STAT_SPATK, 4, AI_CV_Haze4
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 4, AI_CV_Haze4
+ if_stat_level_less_than AI_USER, STAT_ACC, 4, AI_CV_Haze4
+ if_random_less_than 50, AI_CV_Haze_End
score -1
- jump AI_sub_81DAD0F
+ goto AI_CV_Haze_End
-AI_sub_81DAD07:: @ 81DAD07
- if_random_less_than 50, AI_sub_81DAD0F
- score 3
+AI_CV_Haze4:: @ 81DAD07
+ if_random_less_than 50, AI_CV_Haze_End
+ score +3
-AI_sub_81DAD0F:: @ 81DAD0F
+AI_CV_Haze_End:: @ 81DAD0F
end
-AI_sub_81DAD10:: @ 81DAD10
- if_hp_more_than 1, 90, AI_sub_81DAD19
+AI_CV_Bide:: @ 81DAD10
+ if_hp_more_than AI_USER, 90, AI_CV_Bide_End
score -2
-AI_sub_81DAD19:: @ 81DAD19
+AI_CV_Bide_End:: @ 81DAD19
end
-AI_sub_81DAD1A:: @ 81DAD1A
- if_stat_level_more_than 0, 1, 8, AI_sub_81DAD49
- if_stat_level_more_than 0, 2, 8, AI_sub_81DAD49
- if_stat_level_more_than 0, 4, 8, AI_sub_81DAD49
- if_stat_level_more_than 0, 5, 8, AI_sub_81DAD49
- if_stat_level_more_than 0, 7, 8, AI_sub_81DAD49
+AI_CV_Roar:: @ 81DAD1A
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, AI_CV_Roar2
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, AI_CV_Roar2
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, AI_CV_Roar2
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, AI_CV_Roar2
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_Roar2
score -3
- jump AI_sub_81DAD51
+ goto AI_CV_Roar_End
-AI_sub_81DAD49:: @ 81DAD49
- if_random_less_than -128, AI_sub_81DAD51
- score 2
+AI_CV_Roar2:: @ 81DAD49
+ if_random_less_than 128, AI_CV_Roar_End
+ score +2
-AI_sub_81DAD51:: @ 81DAD51
+AI_CV_Roar_End:: @ 81DAD51
end
-AI_sub_81DAD52:: @ 81DAD52
- if_hp_more_than 1, 90, AI_sub_81DAD5B
+AI_CV_Conversion:: @ 81DAD52
+ if_hp_more_than AI_USER, 90, AI_CV_Conversion2
score -2
-AI_sub_81DAD5B:: @ 81DAD5B
+AI_CV_Conversion2:: @ 81DAD5B
get_turn_count
- if_equal 0, AI_sub_81DAD68
- if_random_less_than -56, AI_sub_81DA427
+ if_equal 0, AI_CV_Conversion_End
+ if_random_less_than 200, Score_Minus2
-AI_sub_81DAD68:: @ 81DAD68
+AI_CV_Conversion_End:: @ 81DAD68
end
-AI_sub_81DAD69:: @ 81DAD69
+AI_CV_HealWeather:: @ 81DAD69
get_weather
- if_equal 3, AI_sub_81DAD81
- if_equal 1, AI_sub_81DAD81
- if_equal 2, AI_sub_81DAD81
- jump AI_sub_81DAD83
+ if_equal AI_WEATHER_HAIL, AI_CV_HealWeather_ScoreDown2
+ if_equal AI_WEATHER_RAIN, AI_CV_HealWeather_ScoreDown2
+ if_equal AI_WEATHER_SANDSTORM, AI_CV_HealWeather_ScoreDown2
+ goto AI_CV_Heal
-AI_sub_81DAD81:: @ 81DAD81
+AI_CV_HealWeather_ScoreDown2:: @ 81DAD81
score -2
-AI_sub_81DAD83:: @ 81DAD83
- if_hp_equal 1, 100, AI_sub_81DADAB
- if_would_go_first 1, AI_sub_81DADB2
+AI_CV_Heal:: @ 81DAD83
+ if_hp_equal AI_USER, 100, AI_CV_Heal3
+ if_target_faster AI_CV_Heal4
score -8
- jump AI_sub_81DADDB
- if_hp_less_than 1, 50, AI_sub_81DADC6
- if_hp_more_than 1, 80, AI_sub_81DADAB
- if_random_less_than 70, AI_sub_81DADC6
+ goto AI_CV_Heal_End
+
+@ Never reached
+AI_CV_Heal2:
+ if_hp_less_than AI_USER, 50, AI_CV_Heal5
+ if_hp_more_than AI_USER, 80, AI_CV_Heal3
+ if_random_less_than 70, AI_CV_Heal5
-AI_sub_81DADAB:: @ 81DADAB
+AI_CV_Heal3:: @ 81DADAB
score -3
- jump AI_sub_81DADDB
+ goto AI_CV_Heal_End
-AI_sub_81DADB2:: @ 81DADB2
- if_hp_less_than 1, 70, AI_sub_81DADC6
- if_random_less_than 30, AI_sub_81DADC6
+AI_CV_Heal4:: @ 81DADB2
+ if_hp_less_than AI_USER, 70, AI_CV_Heal5
+ if_random_less_than 30, AI_CV_Heal5
score -3
- jump AI_sub_81DADDB
+ goto AI_CV_Heal_End
-AI_sub_81DADC6:: @ 81DADC6
- if_not_move_effect 0, -61, AI_sub_81DADD3
- if_random_less_than 100, AI_sub_81DADDB
+AI_CV_Heal5:: @ 81DADC6
+ if_doesnt_have_move_with_effect AI_TARGET, EFFECT_SNATCH, AI_CV_Heal6
+ if_random_less_than 100, AI_CV_Heal_End
-AI_sub_81DADD3:: @ 81DADD3
- if_random_less_than 20, AI_sub_81DADDB
- score 2
+AI_CV_Heal6:: @ 81DADD3
+ if_random_less_than 20, AI_CV_Heal_End
+ score +2
-AI_sub_81DADDB:: @ 81DADDB
+AI_CV_Heal_End:: @ 81DADDB
end
-AI_sub_81DADDC:: @ 81DADDC
- if_user_cant_damage AI_sub_81DADFF
- if_hp_more_than 1, 50, AI_sub_81DADF0
- if_random_less_than 50, AI_sub_81DADF0
+AI_CV_Toxic:: @ 81DADDC
+ if_user_has_no_attacking_moves AI_CV_Toxic3
+ if_hp_more_than AI_USER, 50, AI_CV_Toxic2
+ if_random_less_than 50, AI_CV_Toxic2
score -3
-AI_sub_81DADF0:: @ 81DADF0
- if_hp_more_than 0, 50, AI_sub_81DADFF
- if_random_less_than 50, AI_sub_81DADFF
+AI_CV_Toxic2:: @ 81DADF0
+ if_hp_more_than AI_TARGET, 50, AI_CV_Toxic3
+ if_random_less_than 50, AI_CV_Toxic3
score -3
-AI_sub_81DADFF:: @ 81DADFF
- if_move_effect 1, 14, AI_sub_81DAE12
- if_move_effect 1, 111, AI_sub_81DAE12
- jump AI_sub_81DAE1A
+AI_CV_Toxic3:: @ 81DADFF
+ if_has_move_with_effect AI_USER, EFFECT_SPECIAL_DEFENSE_UP, AI_CV_Toxic4
+ if_has_move_with_effect AI_USER, EFFECT_PROTECT, AI_CV_Toxic4
+ goto AI_CV_Toxic_End
-AI_sub_81DAE12:: @ 81DAE12
- if_random_less_than 60, AI_sub_81DAE1A
- score 2
+AI_CV_Toxic4:: @ 81DAE12
+ if_random_less_than 60, AI_CV_Toxic_End
+ score +2
-AI_sub_81DAE1A:: @ 81DAE1A
+AI_CV_Toxic_End:: @ 81DAE1A
end
-AI_sub_81DAE1B:: @ 81DAE1B
- if_hp_less_than 1, 50, AI_sub_81DAE3E
- get_type 0
- if_in_bytes AI_bytes_81DAE41, AI_sub_81DAE40
- get_type 2
- if_in_bytes AI_bytes_81DAE41, AI_sub_81DAE40
- if_random_less_than 50, AI_sub_81DAE40
+AI_CV_LightScreen:: @ 81DAE1B
+ if_hp_less_than AI_USER, 50, AI_CV_LightScreen_ScoreDown2
+ get_target_type1
+ if_in_bytes AI_CV_LightScreen_SpecialTypeList, AI_CV_LightScreen_End
+ get_target_type2
+ if_in_bytes AI_CV_LightScreen_SpecialTypeList, AI_CV_LightScreen_End
+ if_random_less_than 50, AI_CV_LightScreen_End
-AI_sub_81DAE3E:: @ 81DAE3E
+AI_CV_LightScreen_ScoreDown2:: @ 81DAE3E
score -2
-AI_sub_81DAE40:: @ 81DAE40
+AI_CV_LightScreen_End:: @ 81DAE40
end
-AI_bytes_81DAE41:: @ 81DAE41
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 15
- .byte 16
- .byte 17
- .byte 0xFF
+AI_CV_LightScreen_SpecialTypeList:: @ 81DAE41
+ .byte TYPE_FIRE
+ .byte TYPE_WATER
+ .byte TYPE_GRASS
+ .byte TYPE_ELECTRIC
+ .byte TYPE_PSYCHIC
+ .byte TYPE_ICE
+ .byte TYPE_DRAGON
+ .byte TYPE_DARK
+ .byte -1
-AI_sub_81DAE4A:: @ 81DAE4A
- if_would_go_first 1, AI_sub_81DAE79
- if_hp_not_equal 1, 100, AI_sub_81DAE5E
+AI_CV_Rest:: @ 81DAE4A
+ if_target_faster AI_CV_Rest4
+ if_hp_not_equal AI_USER, 100, AI_CV_Rest2
score -8
- jump AI_sub_81DAEA9
+ goto AI_CV_Rest_End
-AI_sub_81DAE5E:: @ 81DAE5E
- if_hp_less_than 1, 40, AI_sub_81DAE94
- if_hp_more_than 1, 50, AI_sub_81DAE72
- if_random_less_than 70, AI_sub_81DAE94
+AI_CV_Rest2:: @ 81DAE5E
+ if_hp_less_than AI_USER, 40, AI_CV_Rest6
+ if_hp_more_than AI_USER, 50, AI_CV_Rest3
+ if_random_less_than 70, AI_CV_Rest6
-AI_sub_81DAE72:: @ 81DAE72
+AI_CV_Rest3:: @ 81DAE72
score -3
- jump AI_sub_81DAEA9
+ goto AI_CV_Rest_End
-AI_sub_81DAE79:: @ 81DAE79
- if_hp_less_than 1, 60, AI_sub_81DAE94
- if_hp_more_than 1, 70, AI_sub_81DAE8D
- if_random_less_than 50, AI_sub_81DAE94
+AI_CV_Rest4:: @ 81DAE79
+ if_hp_less_than AI_USER, 60, AI_CV_Rest6
+ if_hp_more_than AI_USER, 70, AI_CV_Rest5
+ if_random_less_than 50, AI_CV_Rest6
-AI_sub_81DAE8D:: @ 81DAE8D
+AI_CV_Rest5:: @ 81DAE8D
score -3
- jump AI_sub_81DAEA9
+ goto AI_CV_Rest_End
-AI_sub_81DAE94:: @ 81DAE94
- if_not_move_effect 0, -61, AI_sub_81DAEA1
- if_random_less_than 50, AI_sub_81DAEA9
+AI_CV_Rest6:: @ 81DAE94
+ if_doesnt_have_move_with_effect AI_TARGET, EFFECT_SNATCH, AI_CV_Rest7
+ if_random_less_than 50, AI_CV_Rest_End
-AI_sub_81DAEA1:: @ 81DAEA1
- if_random_less_than 10, AI_sub_81DAEA9
- score 3
+AI_CV_Rest7:: @ 81DAEA1
+ if_random_less_than 10, AI_CV_Rest_End
+ score +3
-AI_sub_81DAEA9:: @ 81DAEA9
+AI_CV_Rest_End:: @ 81DAEA9
end
-AI_sub_81DAEAA:: @ 81DAEAA
+AI_CV_OneHitKO:: @ 81DAEAA
end
-AI_sub_81DAEAB:: @ 81DAEAB
- if_hp_more_than 0, 50, AI_sub_81DAEB4
+AI_CV_SuperFang:: @ 81DAEAB
+ if_hp_more_than AI_TARGET, 50, AI_CV_SuperFang_End
score -1
-AI_sub_81DAEB4:: @ 81DAEB4
+AI_CV_SuperFang_End:: @ 81DAEB4
end
-AI_sub_81DAEB5:: @ 81DAEB5
- if_status 0, 128, AI_sub_81DAEE2
- if_status2 0, 268435456, AI_sub_81DAEE2
- if_status3 0, 32, AI_sub_81DAEE2
- if_status2 0, 983040, AI_sub_81DAEE2
- jump AI_sub_81DAEEA
+AI_CV_Trap:: @ 81DAEB5
+ if_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_Trap2
+ if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_Trap2
+ if_status3 AI_TARGET, STATUS3_PERISH_SONG, AI_CV_Trap2
+ if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_Trap2
+ goto AI_CV_Trap_End
-AI_sub_81DAEE2:: @ 81DAEE2
- if_random_less_than -128, AI_sub_81DAEEA
- score 1
+AI_CV_Trap2:: @ 81DAEE2
+ if_random_less_than 128, AI_CV_Trap_End
+ score +1
-AI_sub_81DAEEA:: @ 81DAEEA
+AI_CV_Trap_End:: @ 81DAEEA
end
-AI_sub_81DAEEB:: @ 81DAEEB
- if_damage_bonus 10, AI_sub_81DAF11
- if_damage_bonus 20, AI_sub_81DAF11
- if_damage_bonus 80, AI_sub_81DAF09
- if_damage_bonus -96, AI_sub_81DAF09
- if_random_less_than -128, AI_sub_81DAF11
+AI_CV_HighCrit:: @ 81DAEEB
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_HighCrit_End
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_HighCrit_End
+ if_type_effectiveness AI_EFFECTIVENESS_x2, AI_CV_HighCrit2
+ if_type_effectiveness AI_EFFECTIVENESS_x4, AI_CV_HighCrit2
+ if_random_less_than 128, AI_CV_HighCrit_End
-AI_sub_81DAF09:: @ 81DAF09
- if_random_less_than -128, AI_sub_81DAF11
- score 1
+AI_CV_HighCrit2:: @ 81DAF09
+ if_random_less_than 128, AI_CV_HighCrit_End
+ score +1
-AI_sub_81DAF11:: @ 81DAF11
+AI_CV_HighCrit_End:: @ 81DAF11
end
-AI_sub_81DAF12:: @ 81DAF12
- if_random_less_than -128, AI_sub_81DAF1A
- score 1
+@ Improvement in Emerald
+@AI_CV_Swagger:
+@ if_has_move AI_USER, MOVE_PSYCH_UP, AI_CV_SwaggerHasPsychUp
+
+AI_CV_Flatter:: @ 81DAF12
+ if_random_less_than 128, AI_CV_Confuse
+ score +1
-AI_sub_81DAF1A:: @ 81DAF1A
- if_hp_more_than 0, 70, AI_sub_81DAF3B
- if_random_less_than -128, AI_sub_81DAF29
+AI_CV_Confuse:: @ 81DAF1A
+ if_hp_more_than AI_TARGET, 70, AI_CV_Confuse_End
+ if_random_less_than 128, AI_CV_Confuse2
score -1
-AI_sub_81DAF29:: @ 81DAF29
- if_hp_more_than 0, 50, AI_sub_81DAF3B
+AI_CV_Confuse2:: @ 81DAF29
+ if_hp_more_than AI_TARGET, 50, AI_CV_Confuse_End
score -1
- if_hp_more_than 0, 30, AI_sub_81DAF3B
+ if_hp_more_than AI_TARGET, 30, AI_CV_Confuse_End
score -1
-AI_sub_81DAF3B:: @ 81DAF3B
- end
-
-AI_sub_81DAF3C:: @ 81DAF3C
- if_hp_less_than 1, 50, AI_sub_81DAF5F
- get_type 0
- if_in_bytes AI_bytes_81DAF62, AI_sub_81DAF61
- get_type 2
- if_in_bytes AI_bytes_81DAF62, AI_sub_81DAF61
- if_random_less_than 50, AI_sub_81DAF61
-
-AI_sub_81DAF5F:: @ 81DAF5F
+AI_CV_Confuse_End:: @ 81DAF3B
+ end
+
+@ Improvement in Emerald
+@AI_CV_SwaggerHasPsychUp:
+@ if_stat_level_more_than AI_TARGET, STAT_ATK, 3, AI_CV_SwaggerHasPsychUp_Minus5
+@ score +3
+@ get_turn_count
+@ if_not_equal 0, AI_CV_SwaggerHasPsychUp_End
+@ score +2
+@ goto AI_CV_SwaggerHasPsychUp_End
+@
+@AI_CV_SwaggerHasPsychUp_Minus5:
+@ score -5
+@
+@AI_CV_SwaggerHasPsychUp_End:
+@ end
+
+AI_CV_Reflect:: @ 81DAF3C
+ if_hp_less_than AI_USER, 50, AI_CV_Reflect_ScoreDown2
+ get_target_type1
+ if_in_bytes AI_CV_Reflect_PhysicalTypeList, AI_CV_Reflect_End
+ get_target_type2
+ if_in_bytes AI_CV_Reflect_PhysicalTypeList, AI_CV_Reflect_End
+ if_random_less_than 50, AI_CV_Reflect_End
+
+AI_CV_Reflect_ScoreDown2:: @ 81DAF5F
score -2
-AI_sub_81DAF61:: @ 81DAF61
+AI_CV_Reflect_End:: @ 81DAF61
end
-AI_bytes_81DAF62:: @ 81DAF62
- .byte 0
- .byte 1
- .byte 2
- .byte 3
- .byte 4
- .byte 5
- .byte 6
- .byte 7
- .byte 8
- .byte 0xFF
+AI_CV_Reflect_PhysicalTypeList:: @ 81DAF62
+ .byte TYPE_NORMAL
+ .byte TYPE_FIGHTING
+ .byte TYPE_FLYING
+ .byte TYPE_POISON
+ .byte TYPE_GROUND
+ .byte TYPE_ROCK
+ .byte TYPE_BUG
+ .byte TYPE_GHOST
+ .byte TYPE_STEEL
+ .byte -1
-AI_sub_81DAF6C:: @ 81DAF6C
- if_hp_less_than 1, 50, AI_sub_81DAF7A
- if_hp_more_than 0, 50, AI_sub_81DAF7C
+AI_CV_Poison:: @ 81DAF6C
+ if_hp_less_than AI_USER, 50, AI_CV_Poison_ScoreDown1
+ if_hp_more_than AI_TARGET, 50, AI_CV_Poison_End
-AI_sub_81DAF7A:: @ 81DAF7A
+AI_CV_Poison_ScoreDown1:: @ 81DAF7A
score -1
-AI_sub_81DAF7C:: @ 81DAF7C
+AI_CV_Poison_End:: @ 81DAF7C
end
-AI_sub_81DAF7D:: @ 81DAF7D
- if_would_go_first 1, AI_sub_81DAF91
- if_hp_more_than 1, 70, AI_sub_81DAF99
+AI_CV_Paralyze:: @ 81DAF7D
+ if_target_faster AI_CV_Paralyze2
+ if_hp_more_than AI_USER, 70, AI_CV_Paralyze_End
score -1
- jump AI_sub_81DAF99
+ goto AI_CV_Paralyze_End
-AI_sub_81DAF91:: @ 81DAF91
- if_random_less_than 20, AI_sub_81DAF99
- score 3
+AI_CV_Paralyze2:: @ 81DAF91
+ if_random_less_than 20, AI_CV_Paralyze_End
+ score +3
-AI_sub_81DAF99:: @ 81DAF99
+AI_CV_Paralyze_End:: @ 81DAF99
end
-AI_sub_81DAF9A:: @ 81DAF9A
- if_would_go_first 1, AI_sub_81DAFBC
- if_hp_more_than 1, 60, AI_sub_81DAFBC
- if_hp_less_than 1, 40, AI_sub_81DAFB4
- if_random_less_than -76, AI_sub_81DAFBC
+AI_CV_VitalThrow:: @ 81DAF9A
+ if_target_faster AI_CV_VitalThrow_End
+ if_hp_more_than AI_USER, 60, AI_CV_VitalThrow_End
+ if_hp_less_than AI_USER, 40, AI_CV_VitalThrow2
+ if_random_less_than 180, AI_CV_VitalThrow_End
-AI_sub_81DAFB4:: @ 81DAFB4
- if_random_less_than 50, AI_sub_81DAFBC
+AI_CV_VitalThrow2:: @ 81DAFB4
+ if_random_less_than 50, AI_CV_VitalThrow_End
score -1
-AI_sub_81DAFBC:: @ 81DAFBC
+AI_CV_VitalThrow_End:: @ 81DAFBC
end
-AI_sub_81DAFBD:: @ 81DAFBD
- if_hp_more_than 1, 90, AI_sub_81DAFEA
- if_hp_more_than 1, 70, AI_sub_81DAFE2
- if_hp_more_than 1, 50, AI_sub_81DAFDA
- if_random_less_than 100, AI_sub_81DAFDA
+AI_CV_Substitute:: @ 81DAFBD
+ if_hp_more_than AI_USER, 90, AI_CV_Substitute4
+ if_hp_more_than AI_USER, 70, AI_CV_Substitute3
+ if_hp_more_than AI_USER, 50, AI_CV_Substitute2
+ if_random_less_than 100, AI_CV_Substitute2
score -1
-AI_sub_81DAFDA:: @ 81DAFDA
- if_random_less_than 100, AI_sub_81DAFE2
+AI_CV_Substitute2:: @ 81DAFDA
+ if_random_less_than 100, AI_CV_Substitute3
score -1
-AI_sub_81DAFE2:: @ 81DAFE2
- if_random_less_than 100, AI_sub_81DAFEA
+AI_CV_Substitute3:: @ 81DAFE2
+ if_random_less_than 100, AI_CV_Substitute4
score -1
-AI_sub_81DAFEA:: @ 81DAFEA
- if_would_go_first 1, AI_sub_81DB052
- get_move 0
+AI_CV_Substitute4:: @ 81DAFEA
+ if_target_faster AI_CV_Substitute_End
+ get_last_used_move AI_TARGET
get_move_effect_from_result
- if_equal 1, AI_sub_81DB022
- if_equal 33, AI_sub_81DB022
- if_equal 66, AI_sub_81DB022
- if_equal 67, AI_sub_81DB022
- if_equal -89, AI_sub_81DB022
- if_equal 49, AI_sub_81DB031
- if_equal 84, AI_sub_81DB040
- jump AI_sub_81DB052
+ if_equal EFFECT_SLEEP, AI_CV_Substitute5
+ if_equal EFFECT_TOXIC, AI_CV_Substitute5
+ if_equal EFFECT_POISON, AI_CV_Substitute5
+ if_equal EFFECT_PARALYZE, AI_CV_Substitute5
+ if_equal EFFECT_WILL_O_WISP, AI_CV_Substitute5
+ if_equal EFFECT_CONFUSE, AI_CV_Substitute6
+ if_equal EFFECT_LEECH_SEED, AI_CV_Substitute7
+ goto AI_CV_Substitute_End
-AI_sub_81DB022:: @ 81DB022
- if_not_status 0, 255, AI_sub_81DB04A
- jump AI_sub_81DB052
+AI_CV_Substitute5:: @ 81DB022
+ if_not_status AI_TARGET, STATUS1_ANY, AI_CV_Substitute8
+ goto AI_CV_Substitute_End
-AI_sub_81DB031:: @ 81DB031
- if_not_status2 0, 7, AI_sub_81DB04A
- jump AI_sub_81DB052
+AI_CV_Substitute6:: @ 81DB031
+ if_not_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_Substitute8
+ goto AI_CV_Substitute_End
-AI_sub_81DB040:: @ 81DB040
- if_status3 0, 4, AI_sub_81DB052
+AI_CV_Substitute7:: @ 81DB040
+ if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_Substitute_End
-AI_sub_81DB04A:: @ 81DB04A
- if_random_less_than 100, AI_sub_81DB052
- score 1
+AI_CV_Substitute8:: @ 81DB04A
+ if_random_less_than 100, AI_CV_Substitute_End
+ score +1
-AI_sub_81DB052:: @ 81DB052
+AI_CV_Substitute_End:: @ 81DB052
end
-AI_sub_81DB053:: @ 81DB053
- if_damage_bonus 10, AI_sub_81DB078
- if_damage_bonus 20, AI_sub_81DB078
- if_would_go_first 1, AI_sub_81DB071
- if_hp_more_than 1, 40, AI_sub_81DB078
- jump AI_sub_81DB07A
+AI_CV_Recharge:: @ 81DB053
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Recharge_ScoreDown1
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_Recharge_ScoreDown1
+ if_target_faster AI_CV_Recharge2
+ if_hp_more_than AI_USER, 40, AI_CV_Recharge_ScoreDown1
+ goto AI_CV_Recharge_End
-AI_sub_81DB071:: @ 81DB071
- if_hp_less_than 1, 60, AI_sub_81DB07A
+AI_CV_Recharge2:: @ 81DB071
+ if_hp_less_than AI_USER, 60, AI_CV_Recharge_End
-AI_sub_81DB078:: @ 81DB078
+AI_CV_Recharge_ScoreDown1:: @ 81DB078
score -1
-AI_sub_81DB07A:: @ 81DB07A
+AI_CV_Recharge_End:: @ 81DB07A
end
-AI_sub_81DB07B:: @ 81DB07B
- if_would_go_first 1, AI_sub_81DB099
- get_move 0
+AI_CV_Disable:: @ 81DB07B
+ if_target_faster AI_CV_Disable_End
+ get_last_used_move AI_TARGET
get_move_power_from_result
- if_equal 0, AI_sub_81DB091
- score 1
- jump AI_sub_81DB099
+ if_equal 0, AI_CV_Disable2
+ score +1
+ goto AI_CV_Disable_End
-AI_sub_81DB091:: @ 81DB091
- if_random_less_than 100, AI_sub_81DB099
+AI_CV_Disable2:: @ 81DB091
+ if_random_less_than 100, AI_CV_Disable_End
score -1
-AI_sub_81DB099:: @ 81DB099
+AI_CV_Disable_End:: @ 81DB099
end
-AI_sub_81DB09A:: @ 81DB09A
- if_status 0, 7, AI_sub_81DB12E
- if_status2 0, 983040, AI_sub_81DB12E
- if_status2 0, 7, AI_sub_81DB12E
- if_hp_more_than 1, 30, AI_sub_81DB0C7
- if_random_less_than 10, AI_sub_81DB0C7
+AI_CV_Counter:: @ 81DB09A
+ if_status AI_TARGET, STATUS1_SLEEP, AI_CV_Counter_ScoreDown1
+ if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_Counter_ScoreDown1
+ if_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_Counter_ScoreDown1
+ if_hp_more_than AI_USER, 30, AI_CV_Counter2
+ if_random_less_than 10, AI_CV_Counter2
score -1
-AI_sub_81DB0C7:: @ 81DB0C7
- if_hp_more_than 1, 50, AI_sub_81DB0D6
- if_random_less_than 100, AI_sub_81DB0D6
+AI_CV_Counter2:: @ 81DB0C7
+ if_hp_more_than AI_USER, 50, AI_CV_Counter3
+ if_random_less_than 100, AI_CV_Counter3
score -1
-AI_sub_81DB0D6:: @ 81DB0D6
- get_move 0
+AI_CV_Counter3:: @ 81DB0D6
+@ if_has_move AI_USER, MOVE_MIRROR_COAT, AI_CV_Counter7 @ Improvement in Emerald
+ get_last_used_move AI_TARGET
get_move_power_from_result
- if_equal 0, AI_sub_81DB105
- if_not_taunted AI_sub_81DB0EC
- if_random_less_than 100, AI_sub_81DB0EC
- score 1
+ if_equal 0, AI_CV_Counter5
+ if_target_not_taunted AI_CV_Counter4
+ if_random_less_than 100, AI_CV_Counter4
+ score +1
-AI_sub_81DB0EC:: @ 81DB0EC
- get_move 0
+AI_CV_Counter4:: @ 81DB0EC
+ get_last_used_move AI_TARGET
get_move_type_from_result
- if_not_in_bytes AI_bytes_81DB131, AI_sub_81DB12E
- if_random_less_than 100, AI_sub_81DB130
- score 1
- jump AI_sub_81DB130
-
-AI_sub_81DB105:: @ 81DB105
- if_not_taunted AI_sub_81DB112
- if_random_less_than 100, AI_sub_81DB112
- score 1
-
-AI_sub_81DB112:: @ 81DB112
- get_type 0
- if_in_bytes AI_bytes_81DB131, AI_sub_81DB130
- get_type 2
- if_in_bytes AI_bytes_81DB131, AI_sub_81DB130
- if_random_less_than 50, AI_sub_81DB130
-
-AI_sub_81DB12E:: @ 81DB12E
+ if_not_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_ScoreDown1
+ if_random_less_than 100, AI_CV_Counter_End
+ score +1
+ goto AI_CV_Counter_End
+
+AI_CV_Counter5:: @ 81DB105
+ if_target_not_taunted AI_CV_Counter6
+ if_random_less_than 100, AI_CV_Counter6
+ score +1
+
+AI_CV_Counter6:: @ 81DB112
+ get_target_type1
+ if_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_End
+ get_target_type2
+ if_in_bytes AI_CV_Counter_PhysicalTypeList, AI_CV_Counter_End
+ if_random_less_than 50, AI_CV_Counter_End
+
+@ Improvement in Emerald
+@AI_CV_Counter7:
+@ if_random_less_than 100, AI_CV_Counter8
+@ score +4
+@
+@AI_CV_Counter8:
+@ end
+
+AI_CV_Counter_ScoreDown1:: @ 81DB12E
score -1
-AI_sub_81DB130:: @ 81DB130
- end
-
-AI_bytes_81DB131:: @ 81DB131
- .byte 0
- .byte 1
- .byte 2
- .byte 3
- .byte 4
- .byte 5
- .byte 6
- .byte 7
- .byte 8
- .byte 0xFF
-
-AI_sub_81DB13B:: @ 81DB13B
- if_last_move_did_damage 0, 0, AI_sub_81DB154
- if_would_go_first 1, AI_sub_81DB161
- get_move 0
+AI_CV_Counter_End:: @ 81DB130
+ end
+
+AI_CV_Counter_PhysicalTypeList:: @ 81DB131
+ .byte TYPE_NORMAL
+ .byte TYPE_FIGHTING
+ .byte TYPE_FLYING
+ .byte TYPE_POISON
+ .byte TYPE_GROUND
+ .byte TYPE_ROCK
+ .byte TYPE_BUG
+ .byte TYPE_GHOST
+ .byte TYPE_STEEL
+ .byte -1
+
+AI_CV_Encore:: @ 81DB13B
+ if_any_move_disabled AI_TARGET, AI_CV_Encore2
+ if_target_faster AI_CV_Encore_ScoreDown2
+ get_last_used_move AI_TARGET
get_move_effect_from_result
- if_not_in_bytes AI_bytes_81DB164, AI_sub_81DB161
+ if_not_in_bytes AI_CV_Encore_EncouragedMovesToEncore, AI_CV_Encore_ScoreDown2
-AI_sub_81DB154:: @ 81DB154
- if_random_less_than 30, AI_sub_81DB163
- score 3
- jump AI_sub_81DB163
+AI_CV_Encore2:: @ 81DB154
+ if_random_less_than 30, AI_CV_Encore_End
+ score +3
+ goto AI_CV_Encore_End
-AI_sub_81DB161:: @ 81DB161
+AI_CV_Encore_ScoreDown2:: @ 81DB161
score -2
-AI_sub_81DB163:: @ 81DB163
- end
-
-AI_bytes_81DB164:: @ 81DB164
- .byte 8
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 25
- .byte 28
- .byte 30
- .byte 33
- .byte 35
- .byte 37
- .byte 40
- .byte 54
- .byte 49
- .byte 66
- .byte 67
- .byte 84
- .byte 85
- .byte 50
- .byte 90
- .byte 93
- .byte 94
- .byte 102
- .byte 106
- .byte 107
- .byte 111
- .byte 191
- .byte 113
- .byte 114
- .byte 115
- .byte 116
- .byte 118
- .byte 120
- .byte 124
- .byte 136
- .byte 137
- .byte 142
- .byte 143
- .byte 148
- .byte 158
- .byte 160
- .byte 161
- .byte 162
- .byte 164
- .byte 165
- .byte 167
- .byte 172
- .byte 174
- .byte 177
- .byte 178
- .byte 181
- .byte 184
- .byte 188
- .byte 191
- .byte 192
- .byte 193
- .byte 194
- .byte 199
- .byte 201
- .byte 210
- .byte 212
- .byte 213
- .byte 0xFF
-
-AI_sub_81DB1A3:: @ 81DB1A3
- if_hp_less_than 0, 80, AI_sub_81DB1CC
- if_would_go_first 1, AI_sub_81DB1BE
- if_hp_more_than 1, 40, AI_sub_81DB1CC
- score 1
- jump AI_sub_81DB1CE
-
-AI_sub_81DB1BE:: @ 81DB1BE
- if_hp_more_than 1, 60, AI_sub_81DB1CC
- score 1
- jump AI_sub_81DB1CE
-
-AI_sub_81DB1CC:: @ 81DB1CC
+AI_CV_Encore_End:: @ 81DB163
+ end
+
+AI_CV_Encore_EncouragedMovesToEncore:: @ 81DB164
+ .byte EFFECT_DREAM_EATER
+ .byte EFFECT_ATTACK_UP
+ .byte EFFECT_DEFENSE_UP
+ .byte EFFECT_SPEED_UP
+ .byte EFFECT_SPECIAL_ATTACK_UP
+ .byte EFFECT_HAZE
+ .byte EFFECT_ROAR
+ .byte EFFECT_CONVERSION
+ .byte EFFECT_TOXIC
+ .byte EFFECT_LIGHT_SCREEN
+ .byte EFFECT_REST
+ .byte EFFECT_SUPER_FANG
+ .byte EFFECT_SPECIAL_DEFENSE_UP_2
+ .byte EFFECT_CONFUSE
+ .byte EFFECT_POISON
+ .byte EFFECT_PARALYZE
+ .byte EFFECT_LEECH_SEED
+ .byte EFFECT_SPLASH
+ .byte EFFECT_ATTACK_UP_2
+ .byte EFFECT_ENCORE
+ .byte EFFECT_CONVERSION_2
+ .byte EFFECT_LOCK_ON
+ .byte EFFECT_HEAL_BELL
+ .byte EFFECT_MEAN_LOOK
+ .byte EFFECT_NIGHTMARE
+ .byte EFFECT_PROTECT
+ .byte EFFECT_SKILL_SWAP
+ .byte EFFECT_FORESIGHT
+ .byte EFFECT_PERISH_SONG
+ .byte EFFECT_SANDSTORM
+ .byte EFFECT_ENDURE
+ .byte EFFECT_SWAGGER
+ .byte EFFECT_ATTRACT
+ .byte EFFECT_SAFEGUARD
+ .byte EFFECT_RAIN_DANCE
+ .byte EFFECT_SUNNY_DAY
+ .byte EFFECT_BELLY_DRUM
+ .byte EFFECT_PSYCH_UP
+ .byte EFFECT_FUTURE_SIGHT
+ .byte EFFECT_FAKE_OUT
+ .byte EFFECT_STOCKPILE
+ .byte EFFECT_SPIT_UP
+ .byte EFFECT_SWALLOW
+ .byte EFFECT_HAIL
+ .byte EFFECT_TORMENT
+ .byte EFFECT_WILL_O_WISP
+ .byte EFFECT_FOLLOW_ME
+ .byte EFFECT_CHARGE
+ .byte EFFECT_TRICK
+ .byte EFFECT_ROLE_PLAY
+ .byte EFFECT_INGRAIN
+ .byte EFFECT_RECYCLE
+ .byte EFFECT_KNOCK_OFF
+ .byte EFFECT_SKILL_SWAP
+ .byte EFFECT_IMPRISON
+ .byte EFFECT_REFRESH
+ .byte EFFECT_GRUDGE
+ .byte EFFECT_TEETER_DANCE
+ .byte EFFECT_MUD_SPORT
+ .byte EFFECT_WATER_SPORT
+ .byte EFFECT_DRAGON_DANCE
+ .byte EFFECT_CAMOUFLAGE
+ .byte -1
+
+AI_CV_PainSplit:: @ 81DB1A3
+ if_hp_less_than AI_TARGET, 80, AI_CV_PainSplit_ScoreDown1
+ if_target_faster AI_CV_PainSplit2
+ if_hp_more_than AI_USER, 40, AI_CV_PainSplit_ScoreDown1
+ score +1
+ goto AI_CV_PainSplit_End
+
+AI_CV_PainSplit2:: @ 81DB1BE
+ if_hp_more_than AI_USER, 60, AI_CV_PainSplit_ScoreDown1
+ score +1
+ goto AI_CV_PainSplit_End
+
+AI_CV_PainSplit_ScoreDown1:: @ 81DB1CC
score -1
-AI_sub_81DB1CE:: @ 81DB1CE
+AI_CV_PainSplit_End:: @ 81DB1CE
end
-AI_sub_81DB1CF:: @ 81DB1CF
- score 2
+AI_CV_Snore:: @ 81DB1CF
+ score +2
end
-AI_sub_81DB1D2:: @ 81DB1D2
- if_random_less_than -128, AI_sub_81DB1DA
- score 2
+AI_CV_LockOn:: @ 81DB1D2
+ if_random_less_than 128, AI_CV_LockOn_End
+ score +2
-AI_sub_81DB1DA:: @ 81DB1DA
+AI_CV_LockOn_End:: @ 81DB1DA
end
-AI_sub_81DB1DB:: @ 81DB1DB
- score 2
+AI_CV_SleepTalk:: @ 81DB1DB
+@ if_status AI_USER, STATUS1_SLEEP, Score_Plus10 @ Improvement in Emerald
+ score +2 @ Change to -5
end
-AI_sub_81DB1DE:: @ 81DB1DE
+AI_CV_DestinyBond:: @ 81DB1DE
score -1
- if_would_go_first 1, AI_sub_81DB213
- if_hp_more_than 1, 70, AI_sub_81DB213
- if_random_less_than -128, AI_sub_81DB1F5
- score 1
+ if_target_faster AI_CV_DestinyBond_End
+ if_hp_more_than AI_USER, 70, AI_CV_DestinyBond_End
+ if_random_less_than 128, AI_CV_DestinyBond2
+ score +1
-AI_sub_81DB1F5:: @ 81DB1F5
- if_hp_more_than 1, 50, AI_sub_81DB213
- if_random_less_than -128, AI_sub_81DB204
- score 1
+AI_CV_DestinyBond2:: @ 81DB1F5
+ if_hp_more_than AI_USER, 50, AI_CV_DestinyBond_End
+ if_random_less_than 128, AI_CV_DestinyBond3
+ score +1
-AI_sub_81DB204:: @ 81DB204
- if_hp_more_than 1, 30, AI_sub_81DB213
- if_random_less_than 100, AI_sub_81DB213
- score 2
+AI_CV_DestinyBond3:: @ 81DB204
+ if_hp_more_than AI_USER, 30, AI_CV_DestinyBond_End
+ if_random_less_than 100, AI_CV_DestinyBond_End
+ score +2
-AI_sub_81DB213:: @ 81DB213
+AI_CV_DestinyBond_End:: @ 81DB213
end
-AI_sub_81DB214:: @ 81DB214
- if_would_go_first 1, AI_sub_81DB234
- if_hp_more_than 1, 33, AI_sub_81DB256
- if_hp_more_than 1, 20, AI_sub_81DB258
- if_hp_less_than 1, 8, AI_sub_81DB247
- jump AI_sub_81DB249
+AI_CV_Flail:: @ 81DB214
+ if_target_faster AI_CV_Flail2
+ if_hp_more_than AI_USER, 33, AI_CV_Flail_ScoreDown1
+ if_hp_more_than AI_USER, 20, AI_CV_Flail_End
+ if_hp_less_than AI_USER, 8, AI_CV_Flail_ScoreUp1
+ goto AI_CV_Flail3
-AI_sub_81DB234:: @ 81DB234
- if_hp_more_than 1, 60, AI_sub_81DB256
- if_hp_more_than 1, 40, AI_sub_81DB258
- jump AI_sub_81DB249
+AI_CV_Flail2:: @ 81DB234
+ if_hp_more_than AI_USER, 60, AI_CV_Flail_ScoreDown1
+ if_hp_more_than AI_USER, 40, AI_CV_Flail_End
+ goto AI_CV_Flail3
-AI_sub_81DB247:: @ 81DB247
- score 1
+AI_CV_Flail_ScoreUp1:: @ 81DB247
+ score +1
-AI_sub_81DB249:: @ 81DB249
- if_random_less_than 100, AI_sub_81DB258
- score 1
- jump AI_sub_81DB258
+AI_CV_Flail3:: @ 81DB249
+ if_random_less_than 100, AI_CV_Flail_End
+ score +1
+ goto AI_CV_Flail_End
-AI_sub_81DB256:: @ 81DB256
+AI_CV_Flail_ScoreDown1:: @ 81DB256
score -1
-AI_sub_81DB258:: @ 81DB258
+AI_CV_Flail_End:: @ 81DB258
end
-AI_sub_81DB259:: @ 81DB259
- if_status 0, 255, AI_sub_81DB26F
- if_status_in_party 0, 255, AI_sub_81DB26F
+AI_CV_HealBell:: @ 81DB259
+ if_status AI_TARGET, STATUS1_ANY, AI_CV_HealBell_End
+ if_status_in_party AI_TARGET, STATUS1_ANY, AI_CV_HealBell_End
score -5
-AI_sub_81DB26F:: @ 81DB26F
+AI_CV_HealBell_End:: @ 81DB26F
end
-AI_sub_81DB270:: @ 81DB270
- get_hold_effect 0
- if_not_in_bytes AI_bytes_81DB28B, AI_sub_81DB288
- if_random_less_than 50, AI_sub_81DB28A
- score 1
- jump AI_sub_81DB28A
+AI_CV_Thief:: @ 81DB270
+ get_hold_effect AI_TARGET
+ if_not_in_bytes AI_CV_Thief_EncourageItemsToSteal, AI_CV_Thief_ScoreDown2
+ if_random_less_than 50, AI_CV_Thief_End
+ score +1
+ goto AI_CV_Thief_End
-AI_sub_81DB288:: @ 81DB288
+AI_CV_Thief_ScoreDown2:: @ 81DB288
score -2
-AI_sub_81DB28A:: @ 81DB28A
- end
-
-AI_bytes_81DB28B:: @ 81DB28B
- .byte 3
- .byte 9
- .byte 1
- .byte 22
- .byte 43
- .byte 45
- .byte 65
- .byte 0xFF
-
-AI_sub_81DB293:: @ 81DB293
- get_type 1
- if_equal 7, AI_sub_81DB2D8
- get_type 3
- if_equal 7, AI_sub_81DB2D8
- if_stat_level_more_than 1, 2, 9, AI_sub_81DB2E1
- if_random_less_than -128, AI_sub_81DB2B3
- score 1
-
-AI_sub_81DB2B3:: @ 81DB2B3
- if_stat_level_more_than 1, 2, 7, AI_sub_81DB2E1
- if_random_less_than -128, AI_sub_81DB2C3
- score 1
-
-AI_sub_81DB2C3:: @ 81DB2C3
- if_stat_level_more_than 1, 2, 6, AI_sub_81DB2E1
- if_random_less_than -128, AI_sub_81DB2E1
- score 1
- jump AI_sub_81DB2E1
-
-AI_sub_81DB2D8:: @ 81DB2D8
- if_hp_more_than 1, 80, AI_sub_81DB2E1
+AI_CV_Thief_End:: @ 81DB28A
+ end
+
+AI_CV_Thief_EncourageItemsToSteal:: @ 81DB28B
+ .byte HOLD_EFFECT_CURE_SLP
+ .byte HOLD_EFFECT_CURE_STATUS
+ .byte HOLD_EFFECT_RESTORE_HP
+ .byte HOLD_EFFECT_EVASION_UP
+ .byte HOLD_EFFECT_LEFTOVERS
+ .byte HOLD_EFFECT_LIGHT_BALL
+ .byte HOLD_EFFECT_THICK_CLUB
+ .byte -1
+
+AI_CV_Curse:: @ 81DB293
+ get_user_type1
+ if_equal TYPE_GHOST, AI_CV_Curse4
+ get_user_type2
+ if_equal TYPE_GHOST, AI_CV_Curse4
+ if_stat_level_more_than AI_USER, STAT_DEF, 9, AI_CV_Curse_End
+ if_random_less_than 128, AI_CV_Curse2
+ score +1
+
+AI_CV_Curse2:: @ 81DB2B3
+ if_stat_level_more_than AI_USER, STAT_DEF, 7, AI_CV_Curse_End
+ if_random_less_than 128, AI_CV_Curse3
+ score +1
+
+AI_CV_Curse3:: @ 81DB2C3
+ if_stat_level_more_than AI_USER, STAT_DEF, 6, AI_CV_Curse_End
+ if_random_less_than 128, AI_CV_Curse_End
+ score +1
+ goto AI_CV_Curse_End
+
+AI_CV_Curse4:: @ 81DB2D8
+ if_hp_more_than AI_USER, 80, AI_CV_Curse_End
score -1
-AI_sub_81DB2E1:: @ 81DB2E1
- end
-
-AI_sub_81DB2E2:: @ 81DB2E2
- get_protect_count 1
- if_more_than 1, AI_sub_81DB3A0
- if_status 1, 128, AI_sub_81DB397
- if_status2 1, 268435456, AI_sub_81DB397
- if_status3 1, 32, AI_sub_81DB397
- if_status2 1, 983040, AI_sub_81DB397
- if_status3 1, 4, AI_sub_81DB397
- if_status3 1, 6144, AI_sub_81DB397
- if_move_effect 0, 32, AI_sub_81DB397
- if_move_effect 0, -100, AI_sub_81DB397
- if_status 0, 128, AI_sub_81DB37E
- if_status2 0, 268435456, AI_sub_81DB37E
- if_status3 0, 32, AI_sub_81DB37E
- if_status2 0, 983040, AI_sub_81DB37E
- if_status3 0, 4, AI_sub_81DB37E
- if_status3 0, 6144, AI_sub_81DB37E
- get_move 0
+AI_CV_Curse_End:: @ 81DB2E1
+ end
+
+AI_CV_Protect:: @ 81DB2E2
+ get_protect_count AI_USER
+ if_more_than 1, AI_CV_Protect_ScoreDown2
+ if_status AI_USER, STATUS1_TOXIC_POISON, AI_CV_Protect3
+ if_status2 AI_USER, STATUS2_CURSED, AI_CV_Protect3
+ if_status3 AI_USER, STATUS3_PERISH_SONG, AI_CV_Protect3
+ if_status2 AI_USER, STATUS2_INFATUATION, AI_CV_Protect3
+ if_status3 AI_USER, STATUS3_LEECHSEED, AI_CV_Protect3
+ if_status3 AI_USER, STATUS3_YAWN, AI_CV_Protect3
+ if_has_move_with_effect AI_TARGET, EFFECT_RESTORE_HP, AI_CV_Protect3
+ if_has_move_with_effect AI_TARGET, EFFECT_DEFENSE_CURL, AI_CV_Protect3
+ if_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_Protect_ScoreUp2
+ if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_Protect_ScoreUp2
+ if_status3 AI_TARGET, STATUS3_PERISH_SONG, AI_CV_Protect_ScoreUp2
+ if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_Protect_ScoreUp2
+ if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_Protect_ScoreUp2
+ if_status3 AI_TARGET, STATUS3_YAWN, AI_CV_Protect_ScoreUp2
+ get_last_used_move AI_TARGET
get_move_effect_from_result
- if_not_equal 94, AI_sub_81DB37E
- jump AI_sub_81DB380
+ if_not_equal EFFECT_LOCK_ON, AI_CV_Protect_ScoreUp2
+ goto AI_CV_Protect2
+
+AI_CV_Protect_ScoreUp2:: @ 81DB37E
+ score +2
-AI_sub_81DB37E:: @ 81DB37E
- score 2
+AI_CV_Protect2:: @ 81DB380
+@ if_random_less_than 128, AI_CV_Protect4 @ Improvement in Emerald
+@ score -1
-AI_sub_81DB380:: @ 81DB380
- get_protect_count 1
- if_equal 0, AI_sub_81DB3A2
+AI_CV_Protect4::
+ get_protect_count AI_USER
+ if_equal 0, AI_CV_Protect_End
score -1
- if_random_less_than -128, AI_sub_81DB3A2
+ if_random_less_than 128, AI_CV_Protect_End
score -1
- jump AI_sub_81DB3A2
+ goto AI_CV_Protect_End
-AI_sub_81DB397:: @ 81DB397
- get_move 0
+AI_CV_Protect3:: @ 81DB397
+ get_last_used_move AI_TARGET
get_move_effect_from_result
- if_not_equal 94, AI_sub_81DB3A2
+ if_not_equal EFFECT_LOCK_ON, AI_CV_Protect_End
-AI_sub_81DB3A0:: @ 81DB3A0
+AI_CV_Protect_ScoreDown2:: @ 81DB3A0
score -2
-AI_sub_81DB3A2:: @ 81DB3A2
+AI_CV_Protect_End:: @ 81DB3A2
end
-AI_sub_81DB3A3:: @ 81DB3A3
- get_type 1
- if_equal 7, AI_sub_81DB3C2
- get_type 3
- if_equal 7, AI_sub_81DB3C2
- if_stat_level_more_than 1, 7, 8, AI_sub_81DB3C8
+AI_CV_Foresight:: @ 81DB3A3
+ get_user_type1
+ if_equal TYPE_GHOST, AI_CV_Foresight2
+ get_user_type2
+ if_equal TYPE_GHOST, AI_CV_Foresight2
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, AI_CV_Foresight3
score -2
- jump AI_sub_81DB3D0
+ goto AI_CV_Foresight_End
-AI_sub_81DB3C2:: @ 81DB3C2
- if_random_less_than 80, AI_sub_81DB3D0
+AI_CV_Foresight2:: @ 81DB3C2
+ if_random_less_than 80, AI_CV_Foresight_End
-AI_sub_81DB3C8:: @ 81DB3C8
- if_random_less_than 80, AI_sub_81DB3D0
- score 2
+AI_CV_Foresight3:: @ 81DB3C8
+ if_random_less_than 80, AI_CV_Foresight_End
+ score +2
-AI_sub_81DB3D0:: @ 81DB3D0
+AI_CV_Foresight_End:: @ 81DB3D0
end
-AI_sub_81DB3D1:: @ 81DB3D1
- if_hp_less_than 1, 4, AI_sub_81DB3DF
- if_hp_less_than 1, 35, AI_sub_81DB3E6
+AI_CV_Endure:: @ 81DB3D1
+ if_hp_less_than AI_USER, 4, AI_CV_Endure2
+ if_hp_less_than AI_USER, 35, AI_CV_Endure3
-AI_sub_81DB3DF:: @ 81DB3DF
+AI_CV_Endure2:: @ 81DB3DF
score -1
- jump AI_sub_81DB3EE
+ goto AI_CV_Endure_End
-AI_sub_81DB3E6:: @ 81DB3E6
- if_random_less_than 70, AI_sub_81DB3EE
- score 1
+AI_CV_Endure3:: @ 81DB3E6
+ if_random_less_than 70, AI_CV_Endure_End
+ score +1
-AI_sub_81DB3EE:: @ 81DB3EE
+AI_CV_Endure_End:: @ 81DB3EE
end
-AI_sub_81DB3EF:: @ 81DB3EF
- if_stat_level_more_than 1, 1, 8, AI_sub_81DB41C
- if_stat_level_more_than 1, 2, 8, AI_sub_81DB41C
- if_stat_level_more_than 1, 4, 8, AI_sub_81DB41C
- if_stat_level_more_than 1, 5, 8, AI_sub_81DB41C
- if_stat_level_more_than 1, 7, 8, AI_sub_81DB41C
- jump AI_sub_81DB442
+AI_CV_BatonPass:: @ 81DB3EF
+ if_stat_level_more_than AI_USER, STAT_ATK, 8, AI_CV_BatonPass2
+ if_stat_level_more_than AI_USER, STAT_DEF, 8, AI_CV_BatonPass2
+ if_stat_level_more_than AI_USER, STAT_SPATK, 8, AI_CV_BatonPass2
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 8, AI_CV_BatonPass2
+ if_stat_level_more_than AI_USER, STAT_EVASION, 8, AI_CV_BatonPass2
+ goto AI_CV_BatonPass5
-AI_sub_81DB41C:: @ 81DB41C
- if_would_go_first 1, AI_sub_81DB42E
- if_hp_more_than 1, 60, AI_sub_81DB48A
- jump AI_sub_81DB435
+AI_CV_BatonPass2:: @ 81DB41C
+ if_target_faster AI_CV_BatonPass3
+ if_hp_more_than AI_USER, 60, AI_CV_BatonPass_End
+ goto AI_CV_BatonPass4
-AI_sub_81DB42E:: @ 81DB42E
- if_hp_more_than 1, 70, AI_sub_81DB48A
+AI_CV_BatonPass3:: @ 81DB42E
+ if_hp_more_than AI_USER, 70, AI_CV_BatonPass_End
-AI_sub_81DB435:: @ 81DB435
- if_random_less_than 80, AI_sub_81DB48A
- score 2
- jump AI_sub_81DB48A
+AI_CV_BatonPass4:: @ 81DB435
+ if_random_less_than 80, AI_CV_BatonPass_End
+ score +2
+ goto AI_CV_BatonPass_End
-AI_sub_81DB442:: @ 81DB442
- if_stat_level_more_than 1, 1, 7, AI_sub_81DB46F
- if_stat_level_more_than 1, 2, 7, AI_sub_81DB46F
- if_stat_level_more_than 1, 4, 7, AI_sub_81DB46F
- if_stat_level_more_than 1, 5, 7, AI_sub_81DB46F
- if_stat_level_more_than 1, 7, 7, AI_sub_81DB46F
- jump AI_sub_81DB488
+AI_CV_BatonPass5:: @ 81DB442
+ if_stat_level_more_than AI_USER, STAT_ATK, 7, AI_CV_BatonPass7
+ if_stat_level_more_than AI_USER, STAT_DEF, 7, AI_CV_BatonPass7
+ if_stat_level_more_than AI_USER, STAT_SPATK, 7, AI_CV_BatonPass7
+ if_stat_level_more_than AI_USER, STAT_SPDEF, 7, AI_CV_BatonPass7
+ if_stat_level_more_than AI_USER, STAT_EVASION, 7, AI_CV_BatonPass7
+ goto AI_CV_BatonPass_ScoreDown2
-AI_sub_81DB46F:: @ 81DB46F
- if_would_go_first 1, AI_sub_81DB481
- if_hp_more_than 1, 60, AI_sub_81DB488
- jump AI_sub_81DB48A
+AI_CV_BatonPass7:: @ 81DB46F
+ if_target_faster AI_CV_BatonPass8
+ if_hp_more_than AI_USER, 60, AI_CV_BatonPass_ScoreDown2
+ goto AI_CV_BatonPass_End
-AI_sub_81DB481:: @ 81DB481
- if_hp_less_than 1, 70, AI_sub_81DB48A
+AI_CV_BatonPass8:: @ 81DB481
+ if_hp_less_than AI_USER, 70, AI_CV_BatonPass_End
-AI_sub_81DB488:: @ 81DB488
+AI_CV_BatonPass_ScoreDown2:: @ 81DB488
score -2
-AI_sub_81DB48A:: @ 81DB48A
+AI_CV_BatonPass_End:: @ 81DB48A
end
-AI_sub_81DB48B:: @ 81DB48B
- is_first_turn 1
- if_not_equal 0, AI_sub_81DB4C0
- get_type 0
- if_equal 7, AI_sub_81DB4B8
- get_type 0
- if_equal 14, AI_sub_81DB4B8
- get_type 2
- if_equal 7, AI_sub_81DB4B8
- get_type 2
- if_equal 14, AI_sub_81DB4B8
- jump AI_sub_81DB4C0
+AI_CV_Pursuit:: @ 81DB48B
+ is_first_turn_for AI_USER
+ if_not_equal 0, AI_CV_Pursuit_End
+ get_target_type1
+ if_equal TYPE_GHOST, AI_CV_Pursuit2
+ get_target_type1
+ if_equal TYPE_PSYCHIC, AI_CV_Pursuit2
+ get_target_type2
+ if_equal TYPE_GHOST, AI_CV_Pursuit2
+ get_target_type2
+ if_equal TYPE_PSYCHIC, AI_CV_Pursuit2
+ goto AI_CV_Pursuit_End
-AI_sub_81DB4B8:: @ 81DB4B8
- if_random_less_than -128, AI_sub_81DB4C0
- score 1
+AI_CV_Pursuit2:: @ 81DB4B8
+ if_random_less_than 128, AI_CV_Pursuit_End
+ score +1
-AI_sub_81DB4C0:: @ 81DB4C0
+AI_CV_Pursuit_End:: @ 81DB4C0
end
-AI_sub_81DB4C1:: @ 81DB4C1
- if_would_go_first 0, AI_sub_81DB4CF
- get_ability 1
- if_equal 33, AI_sub_81DB4F6
+AI_CV_RainDance:: @ 81DB4C1
+ if_user_faster AI_CV_RainDance2
+ get_ability AI_USER
+ if_equal ABILITY_SWIFT_SWIM, AI_CV_RainDance3
-AI_sub_81DB4CF:: @ 81DB4CF
- if_hp_less_than 1, 40, AI_sub_81DB4FD
+AI_CV_RainDance2:: @ 81DB4CF
+ if_hp_less_than AI_USER, 40, AI_CV_RainDance_ScoreDown1
get_weather
- if_equal 3, AI_sub_81DB4F6
- if_equal 0, AI_sub_81DB4F6
- if_equal 2, AI_sub_81DB4F6
- get_ability 1
- if_equal 44, AI_sub_81DB4F6
- jump AI_sub_81DB4FF
-
-AI_sub_81DB4F6:: @ 81DB4F6
- score 1
- jump AI_sub_81DB4FF
-
-AI_sub_81DB4FD:: @ 81DB4FD
+ if_equal AI_WEATHER_HAIL, AI_CV_RainDance3
+ if_equal AI_WEATHER_SUN, AI_CV_RainDance3
+ if_equal AI_WEATHER_SANDSTORM, AI_CV_RainDance3
+ get_ability AI_USER
+ if_equal ABILITY_RAIN_DISH, AI_CV_RainDance3
+ goto AI_CV_RainDance_End
+
+AI_CV_RainDance3:: @ 81DB4F6
+ score +1
+ goto AI_CV_RainDance_End
+
+AI_CV_RainDance_ScoreDown1:: @ 81DB4FD
score -1
-AI_sub_81DB4FF:: @ 81DB4FF
+AI_CV_RainDance_End:: @ 81DB4FF
end
-AI_sub_81DB500:: @ 81DB500
- if_hp_less_than 1, 40, AI_sub_81DB526
+AI_CV_SunnyDay:: @ 81DB500
+ if_hp_less_than AI_USER, 40, AI_CV_SunnyDay_ScoreDown1
get_weather
- if_equal 3, AI_sub_81DB51F
- if_equal 1, AI_sub_81DB51F
- if_equal 2, AI_sub_81DB51F
- jump AI_sub_81DB528
+ if_equal AI_WEATHER_HAIL, AI_CV_SunnyDay2
+ if_equal AI_WEATHER_RAIN, AI_CV_SunnyDay2
+ if_equal AI_WEATHER_SANDSTORM, AI_CV_SunnyDay2
+ goto AI_CV_SunnyDay_End
-AI_sub_81DB51F:: @ 81DB51F
- score 1
- jump AI_sub_81DB528
+AI_CV_SunnyDay2:: @ 81DB51F
+ score +1
+ goto AI_CV_SunnyDay_End
-AI_sub_81DB526:: @ 81DB526
+AI_CV_SunnyDay_ScoreDown1:: @ 81DB526
score -1
-AI_sub_81DB528:: @ 81DB528
+AI_CV_SunnyDay_End:: @ 81DB528
end
-AI_sub_81DB529:: @ 81DB529
- if_hp_less_than 1, 90, AI_sub_81DB535
- jump AI_sub_81DB537
+AI_CV_BellyDrum:: @ 81DB529
+ if_hp_less_than AI_USER, 90, AI_CV_BellyDrum_ScoreDown2
+ goto AI_CV_BellyDrum_End
-AI_sub_81DB535:: @ 81DB535
+AI_CV_BellyDrum_ScoreDown2:: @ 81DB535
score -2
-AI_sub_81DB537:: @ 81DB537
+AI_CV_BellyDrum_End:: @ 81DB537
end
-AI_sub_81DB538:: @ 81DB538
- if_stat_level_more_than 0, 1, 8, AI_sub_81DB565
- if_stat_level_more_than 0, 2, 8, AI_sub_81DB565
- if_stat_level_more_than 0, 4, 8, AI_sub_81DB565
- if_stat_level_more_than 0, 5, 8, AI_sub_81DB565
- if_stat_level_more_than 0, 7, 8, AI_sub_81DB565
- jump AI_sub_81DB5A2
+AI_CV_PsychUp:: @ 81DB538
+ if_stat_level_more_than AI_TARGET, STAT_ATK, 8, AI_CV_PsychUp2
+ if_stat_level_more_than AI_TARGET, STAT_DEF, 8, AI_CV_PsychUp2
+ if_stat_level_more_than AI_TARGET, STAT_SPATK, 8, AI_CV_PsychUp2
+ if_stat_level_more_than AI_TARGET, STAT_SPDEF, 8, AI_CV_PsychUp2
+ if_stat_level_more_than AI_TARGET, STAT_EVASION, 8, AI_CV_PsychUp2
+ goto AI_CV_PsychUp_ScoreDown2
-AI_sub_81DB565:: @ 81DB565
- if_stat_level_less_than 1, 1, 7, AI_sub_81DB59A
- if_stat_level_less_than 1, 2, 7, AI_sub_81DB59A
- if_stat_level_less_than 1, 4, 7, AI_sub_81DB59A
- if_stat_level_less_than 1, 5, 7, AI_sub_81DB59A
- if_stat_level_less_than 1, 7, 7, AI_sub_81DB598
- if_random_less_than 50, AI_sub_81DB5A4
- jump AI_sub_81DB5A2
+AI_CV_PsychUp2:: @ 81DB565
+ if_stat_level_less_than AI_USER, STAT_ATK, 7, AI_CV_PsychUp3
+ if_stat_level_less_than AI_USER, STAT_DEF, 7, AI_CV_PsychUp3
+ if_stat_level_less_than AI_USER, STAT_SPATK, 7, AI_CV_PsychUp3
+ if_stat_level_less_than AI_USER, STAT_SPDEF, 7, AI_CV_PsychUp3
+ if_stat_level_less_than AI_USER, STAT_EVASION, 7, AI_CV_PsychUp_ScoreUp1
+ if_random_less_than 50, AI_CV_PsychUp_End
+ goto AI_CV_PsychUp_ScoreDown2
-AI_sub_81DB598:: @ 81DB598
- score 1
+AI_CV_PsychUp_ScoreUp1:: @ 81DB598
+ score +1
-AI_sub_81DB59A:: @ 81DB59A
- if_random_less_than -128, AI_sub_81DB5A4
- score 1
+AI_CV_PsychUp3:: @ 81DB59A
+ if_random_less_than 128, AI_CV_PsychUp_End @ Remove this line
+ score +1
+@ end @ Improvement in Emerald
-AI_sub_81DB5A2:: @ 81DB5A2
+AI_CV_PsychUp_ScoreDown2:: @ 81DB5A2
score -2
-AI_sub_81DB5A4:: @ 81DB5A4
+AI_CV_PsychUp_End:: @ 81DB5A4
end
-AI_sub_81DB5A5:: @ 81DB5A5
- if_status 0, 7, AI_sub_81DB639
- if_status2 0, 983040, AI_sub_81DB639
- if_status2 0, 7, AI_sub_81DB639
- if_hp_more_than 1, 30, AI_sub_81DB5D2
- if_random_less_than 10, AI_sub_81DB5D2
+AI_CV_MirrorCoat:: @ 81DB5A5
+ if_status AI_TARGET, STATUS1_SLEEP, AI_CV_MirrorCoat_ScoreDown1
+ if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_MirrorCoat_ScoreDown1
+ if_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_MirrorCoat_ScoreDown1
+ if_hp_more_than AI_USER, 30, AI_CV_MirrorCoat2
+ if_random_less_than 10, AI_CV_MirrorCoat2
score -1
-AI_sub_81DB5D2:: @ 81DB5D2
- if_hp_more_than 1, 50, AI_sub_81DB5E1
- if_random_less_than 100, AI_sub_81DB5E1
+AI_CV_MirrorCoat2:: @ 81DB5D2
+ if_hp_more_than AI_USER, 50, AI_CV_MirrorCoat3
+ if_random_less_than 100, AI_CV_MirrorCoat3
score -1
-AI_sub_81DB5E1:: @ 81DB5E1
- get_move 0
+AI_CV_MirrorCoat3:: @ 81DB5E1
+@ if_has_move AI_USER, MOVE_COUNTER, AI_CV_MirrorCoat_ScoreUp4 @ Improvement in Emerald
+ get_last_used_move AI_TARGET
get_move_power_from_result
- if_equal 0, AI_sub_81DB610
- if_not_taunted AI_sub_81DB5F7
- if_random_less_than 100, AI_sub_81DB5F7
- score 1
+ if_equal 0, AI_CV_MirrorCoat5
+ if_target_not_taunted AI_CV_MirrorCoat4
+ if_random_less_than 100, AI_CV_MirrorCoat4
+ score +1
-AI_sub_81DB5F7:: @ 81DB5F7
- get_move 0
+AI_CV_MirrorCoat4:: @ 81DB5F7
+ get_last_used_move AI_TARGET
get_move_type_from_result
- if_not_in_bytes AI_bytes_81DB63C, AI_sub_81DB639
- if_random_less_than 100, AI_sub_81DB63B
- score 1
- jump AI_sub_81DB63B
-
-AI_sub_81DB610:: @ 81DB610
- if_not_taunted AI_sub_81DB61D
- if_random_less_than 100, AI_sub_81DB61D
- score 1
-
-AI_sub_81DB61D:: @ 81DB61D
- get_type 0
- if_in_bytes AI_bytes_81DB63C, AI_sub_81DB63B
- get_type 2
- if_in_bytes AI_bytes_81DB63C, AI_sub_81DB63B
- if_random_less_than 50, AI_sub_81DB63B
-
-AI_sub_81DB639:: @ 81DB639
+ if_not_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_ScoreDown1
+ if_random_less_than 100, AI_CV_MirrorCoat_End
+ score +1
+ goto AI_CV_MirrorCoat_End
+
+AI_CV_MirrorCoat5:: @ 81DB610
+ if_target_not_taunted AI_CV_MirrorCoat6
+ if_random_less_than 100, AI_CV_MirrorCoat6
+ score +1
+
+AI_CV_MirrorCoat6:: @ 81DB61D
+ get_target_type1
+ if_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_End
+ get_target_type2
+ if_in_bytes AI_CV_MirrorCoat_SpecialTypeList, AI_CV_MirrorCoat_End
+ if_random_less_than 50, AI_CV_MirrorCoat_End
+
+@ Improvement in Emerald
+@AI_CV_MirrorCoat_ScoreUp4:
+@ if_random_less_than 100, AI_CV_MirrorCoat_ScoreUp4_End
+@ score +4
+@
+@AI_CV_MirrorCoat_ScoreUp4_End:
+@ end
+
+AI_CV_MirrorCoat_ScoreDown1:: @ 81DB639
score -1
-AI_sub_81DB63B:: @ 81DB63B
- end
-
-AI_bytes_81DB63C:: @ 81DB63C
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 15
- .byte 16
- .byte 17
- .byte 0xFF
-
-AI_sub_81DB645:: @ 81DB645
- if_damage_bonus 10, AI_sub_81DB666
- if_damage_bonus 20, AI_sub_81DB666
- if_move_effect 0, 111, AI_sub_81DB666
- if_hp_more_than 1, 38, AI_sub_81DB668
+AI_CV_MirrorCoat_End:: @ 81DB63B
+ end
+
+AI_CV_MirrorCoat_SpecialTypeList:: @ 81DB63C
+ .byte TYPE_FIRE
+ .byte TYPE_WATER
+ .byte TYPE_GRASS
+ .byte TYPE_ELECTRIC
+ .byte TYPE_PSYCHIC
+ .byte TYPE_ICE
+ .byte TYPE_DRAGON
+ .byte TYPE_DARK
+ .byte -1
+
+AI_CV_ChargeUpMove:: @ 81DB645
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_ChargeUpMove_ScoreDown2
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_ChargeUpMove_ScoreDown2
+ if_has_move_with_effect AI_TARGET, EFFECT_PROTECT, AI_CV_ChargeUpMove_ScoreDown2
+ if_hp_more_than AI_USER, 38, AI_CV_ChargeUpMove_End
score -1
- jump AI_sub_81DB668
+ goto AI_CV_ChargeUpMove_End
-AI_sub_81DB666:: @ 81DB666
+AI_CV_ChargeUpMove_ScoreDown2:: @ 81DB666
score -2
-AI_sub_81DB668:: @ 81DB668
+AI_CV_ChargeUpMove_End:: @ 81DB668
end
-AI_sub_81DB669:: @ 81DB669
- if_not_move_effect 0, 111, AI_sub_81DB677
+AI_CV_SemiInvulnerable:: @ 81DB669
+ if_doesnt_have_move_with_effect AI_TARGET, EFFECT_PROTECT, AI_CV_SemiInvulnerable2
score -1
- jump AI_sub_81DB6EE
-
-AI_sub_81DB677:: @ 81DB677
- if_status 0, 128, AI_sub_81DB6E6
- if_status2 0, 268435456, AI_sub_81DB6E6
- if_status3 0, 4, AI_sub_81DB6E6
+ goto AI_CV_SemiInvulnerable_End
+
+@ BUG: The scripts for checking type-resistance to weather for semi-invulnerable moves are swapped
+@ The result is that the AI is encouraged to stall while taking damage from weather
+@ To fix, swap _CheckSandstormTypes/_CheckIceType in the below script
+AI_CV_SemiInvulnerable2:: @ 81DB677
+ if_status AI_TARGET, STATUS1_TOXIC_POISON, AI_CV_SemiInvulnerable_TryEncourage
+ if_status2 AI_TARGET, STATUS2_CURSED, AI_CV_SemiInvulnerable_TryEncourage
+ if_status3 AI_TARGET, STATUS3_LEECHSEED, AI_CV_SemiInvulnerable_TryEncourage
get_weather
- if_equal 3, AI_sub_81DB6A7
- if_equal 2, AI_sub_81DB6C2
- jump AI_sub_81DB6D2
-
-AI_sub_81DB6A7:: @ 81DB6A7
- get_type 1
- if_in_bytes AI_bytes_81DB6EF, AI_sub_81DB6E6
- get_type 3
- if_in_bytes AI_bytes_81DB6EF, AI_sub_81DB6E6
- jump AI_sub_81DB6D2
-
-AI_sub_81DB6C2:: @ 81DB6C2
- get_type 1
- if_equal 15, AI_sub_81DB6E6
- get_type 3
- if_equal 15, AI_sub_81DB6E6
-
-AI_sub_81DB6D2:: @ 81DB6D2
- if_would_go_first 1, AI_sub_81DB6EE
- get_move 0
+ if_equal AI_WEATHER_HAIL, AI_CV_SemiInvulnerable_CheckSandstormTypes
+ if_equal AI_WEATHER_SANDSTORM, AI_CV_SemiInvulnerable_CheckIceType
+ goto AI_CV_SemiInvulnerable5
+
+AI_CV_SemiInvulnerable_CheckSandstormTypes:: @ 81DB6A7
+ get_user_type1
+ if_in_bytes AI_CV_SandstormResistantTypes, AI_CV_SemiInvulnerable_TryEncourage
+ get_user_type2
+ if_in_bytes AI_CV_SandstormResistantTypes, AI_CV_SemiInvulnerable_TryEncourage
+ goto AI_CV_SemiInvulnerable5
+
+AI_CV_SemiInvulnerable_CheckIceType:: @ 81DB6C2
+ get_user_type1
+ if_equal TYPE_ICE, AI_CV_SemiInvulnerable_TryEncourage
+ get_user_type2
+ if_equal TYPE_ICE, AI_CV_SemiInvulnerable_TryEncourage
+
+AI_CV_SemiInvulnerable5:: @ 81DB6D2
+ if_target_faster AI_CV_SemiInvulnerable_End
+ get_last_used_move AI_TARGET
get_move_effect_from_result
- if_not_equal 94, AI_sub_81DB6E6
- jump AI_sub_81DB6EE
+ if_not_equal EFFECT_LOCK_ON, AI_CV_SemiInvulnerable_TryEncourage
+ goto AI_CV_SemiInvulnerable_End
-AI_sub_81DB6E6:: @ 81DB6E6
- if_random_less_than 80, AI_sub_81DB6EE
- score 1
+AI_CV_SemiInvulnerable_TryEncourage:: @ 81DB6E6
+ if_random_less_than 80, AI_CV_SemiInvulnerable_End
+ score +1
-AI_sub_81DB6EE:: @ 81DB6EE
+AI_CV_SemiInvulnerable_End:: @ 81DB6EE
end
-AI_bytes_81DB6EF:: @ 81DB6EF
- .byte 4
- .byte 5
- .byte 8
- .byte 0xFF
+AI_CV_SandstormResistantTypes:: @ 81DB6EF
+ .byte TYPE_GROUND
+ .byte TYPE_ROCK
+ .byte TYPE_STEEL
+ .byte -1
-AI_sub_81DB6F3:: @ 81DB6F3
- score 2
+AI_CV_FakeOut:: @ 81DB6F3
+ score +2
end
-AI_sub_81DB6F6:: @ 81DB6F6
- get_stockpile_count 1
- if_less_than 2, AI_sub_81DB706
- if_random_less_than 80, AI_sub_81DB706
- score 2
+AI_CV_SpitUp:: @ 81DB6F6
+ get_stockpile_count AI_USER
+ if_less_than 2, AI_CV_SpitUp_End
+ if_random_less_than 80, AI_CV_SpitUp_End
+ score +2
-AI_sub_81DB706:: @ 81DB706
+AI_CV_SpitUp_End:: @ 81DB706
end
-AI_sub_81DB707:: @ 81DB707
- if_hp_less_than 1, 40, AI_sub_81DB72D
+AI_CV_Hail:: @ 81DB707
+ if_hp_less_than AI_USER, 40, AI_CV_Hail_ScoreDown1
get_weather
- if_equal 0, AI_sub_81DB726
- if_equal 1, AI_sub_81DB726
- if_equal 2, AI_sub_81DB726
- jump AI_sub_81DB72F
+ if_equal AI_WEATHER_SUN, AI_CV_Hail2
+ if_equal AI_WEATHER_RAIN, AI_CV_Hail2
+ if_equal AI_WEATHER_SANDSTORM, AI_CV_Hail2
+ goto AI_CV_Hail_End
-AI_sub_81DB726:: @ 81DB726
- score 1
- jump AI_sub_81DB72F
+AI_CV_Hail2:: @ 81DB726
+ score +1
+ goto AI_CV_Hail_End
-AI_sub_81DB72D:: @ 81DB72D
+AI_CV_Hail_ScoreDown1:: @ 81DB72D
score -1
-AI_sub_81DB72F:: @ 81DB72F
+AI_CV_Hail_End:: @ 81DB72F
end
-AI_sub_81DB730:: @ 81DB730
- if_not_status 0, 216, AI_sub_81DB73C
- score 1
+@ BUG: Facade score is increased if the target is statused, but should be if the user is. Replace AI_TARGET with AI_USER
+AI_CV_Facade:: @ 81DB730
+ if_not_status AI_TARGET, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, AI_CV_Facade_End
+ score +1
-AI_sub_81DB73C:: @ 81DB73C
+AI_CV_Facade_End:: @ 81DB73C
end
-AI_sub_81DB73D:: @ 81DB73D
- if_damage_bonus 10, AI_sub_81DB77C
- if_damage_bonus 20, AI_sub_81DB77C
- if_status 0, 7, AI_sub_81DB789
- if_status2 0, 983040, AI_sub_81DB783
- if_status2 0, 7, AI_sub_81DB783
- is_first_turn 1
- if_not_equal 0, AI_sub_81DB78B
- if_random_less_than 100, AI_sub_81DB78B
- score 1
- jump AI_sub_81DB78B
+AI_CV_FocusPunch:: @ 81DB73D
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_FocusPunch2
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_FocusPunch2
+ if_status AI_TARGET, STATUS1_SLEEP, AI_CV_FocusPunch_ScoreUp1
+ if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_FocusPunch3
+ if_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_FocusPunch3
+ is_first_turn_for AI_USER
+ if_not_equal 0, AI_CV_FocusPunch_End
+ if_random_less_than 100, AI_CV_FocusPunch_End
+ score +1
+ goto AI_CV_FocusPunch_End
-AI_sub_81DB77C:: @ 81DB77C
+AI_CV_FocusPunch2:: @ 81DB77C
score -1
- jump AI_sub_81DB78B
+ goto AI_CV_FocusPunch_End
-AI_sub_81DB783:: @ 81DB783
- if_random_less_than 100, AI_sub_81DB78B
+AI_CV_FocusPunch3:: @ 81DB783
+ if_random_less_than 100, AI_CV_FocusPunch_End
-AI_sub_81DB789:: @ 81DB789
- score 1
+AI_CV_FocusPunch_ScoreUp1:: @ 81DB789
+ score +1
-AI_sub_81DB78B:: @ 81DB78B
+AI_CV_FocusPunch_End:: @ 81DB78B
end
-AI_sub_81DB78C:: @ 81DB78C
- if_status 0, 64, AI_sub_81DB79B
- jump AI_sub_81DB79D
+AI_CV_SmellingSalt:: @ 81DB78C
+ if_status AI_TARGET, STATUS1_PARALYSIS, AI_CV_SmellingSalt_ScoreUp1
+ goto AI_CV_SmellingSalt_End
-AI_sub_81DB79B:: @ 81DB79B
- score 1
+AI_CV_SmellingSalt_ScoreUp1:: @ 81DB79B
+ score +1
-AI_sub_81DB79D:: @ 81DB79D
+AI_CV_SmellingSalt_End:: @ 81DB79D
end
-AI_sub_81DB79E:: @ 81DB79E
- get_hold_effect 1
- if_in_bytes AI_bytes_81DB7E7, AI_sub_81DB7B9
- if_in_bytes AI_bytes_81DB7DF, AI_sub_81DB7CB
+AI_CV_Trick:: @ 81DB79E
+ get_hold_effect AI_USER
+ if_in_bytes AI_CV_Trick_ChoiceEffects, AI_CV_Trick3
+ if_in_bytes AI_CV_Trick_EffectsToEncourage, AI_CV_Trick4
-AI_sub_81DB7B2:: @ 81DB7B2
+AI_CV_Trick2:: @ 81DB7B2
score -3
- jump AI_sub_81DB7DE
-
-AI_sub_81DB7B9:: @ 81DB7B9
- get_hold_effect 0
- if_in_bytes AI_bytes_81DB7E7, AI_sub_81DB7B2
- score 5
- jump AI_sub_81DB7DE
-
-AI_sub_81DB7CB:: @ 81DB7CB
- get_hold_effect 0
- if_in_bytes AI_bytes_81DB7DF, AI_sub_81DB7B2
- if_random_less_than 50, AI_sub_81DB7DE
- score 2
-
-AI_sub_81DB7DE:: @ 81DB7DE
- end
-
-AI_bytes_81DB7DF:: @ 81DB7DF
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 24
- .byte 29
- .byte 0xFF
-
-AI_bytes_81DB7E7:: @ 81DB7E7
- .byte 29
- .byte 0xFF
-
-AI_sub_81DB7E9:: @ 81DB7E9
- get_ability 1
- if_in_bytes AI_bytes_81DB80F, AI_sub_81DB7FF
- get_ability 0
- if_in_bytes AI_bytes_81DB80F, AI_sub_81DB806
-
-AI_sub_81DB7FF:: @ 81DB7FF
+ goto AI_CV_Trick_End
+
+AI_CV_Trick3:: @ 81DB7B9
+ get_hold_effect AI_TARGET
+ if_in_bytes AI_CV_Trick_ChoiceEffects, AI_CV_Trick2
+ score +5
+ goto AI_CV_Trick_End
+
+AI_CV_Trick4:: @ 81DB7CB
+ get_hold_effect AI_TARGET
+ if_in_bytes AI_CV_Trick_EffectsToEncourage, AI_CV_Trick2
+ if_random_less_than 50, AI_CV_Trick_End
+ score +2
+
+AI_CV_Trick_End:: @ 81DB7DE
+ end
+
+AI_CV_Trick_EffectsToEncourage:: @ 81DB7DF
+ .byte HOLD_EFFECT_CONFUSE_SPICY
+ .byte HOLD_EFFECT_CONFUSE_DRY
+ .byte HOLD_EFFECT_CONFUSE_SWEET
+ .byte HOLD_EFFECT_CONFUSE_BITTER
+ .byte HOLD_EFFECT_CONFUSE_SOUR
+ .byte HOLD_EFFECT_MACHO_BRACE
+ .byte HOLD_EFFECT_CHOICE_BAND
+ .byte -1
+
+AI_CV_Trick_ChoiceEffects:: @ 81DB7E7
+ .byte HOLD_EFFECT_CHOICE_BAND
+ .byte -1
+
+AI_CV_ChangeSelfAbility:: @ 81DB7E9
+ get_ability AI_USER
+ if_in_bytes AI_CV_ChangeSelfAbility_AbilitiesToEncourage, AI_CV_ChangeSelfAbility2
+ get_ability AI_TARGET
+ if_in_bytes AI_CV_ChangeSelfAbility_AbilitiesToEncourage, AI_CV_ChangeSelfAbility3
+
+AI_CV_ChangeSelfAbility2:: @ 81DB7FF
score -1
- jump AI_sub_81DB80E
-
-AI_sub_81DB806:: @ 81DB806
- if_random_less_than 50, AI_sub_81DB80E
- score 2
-
-AI_sub_81DB80E:: @ 81DB80E
- end
-
-AI_bytes_81DB80F:: @ 81DB80F
- .byte 3
- .byte 4
- .byte 8
- .byte 9
- .byte 18
- .byte 25
- .byte 27
- .byte 33
- .byte 37
- .byte 44
- .byte 56
- .byte 61
- .byte 63
- .byte 74
- .byte 34
- .byte 19
- .byte 0xFF
-
-AI_sub_81DB820:: @ 81DB820
- if_damage_bonus 10, AI_sub_81DB84D
- if_damage_bonus 20, AI_sub_81DB84D
- if_stat_level_less_than 1, 1, 6, AI_sub_81DB84D
- if_would_go_first 1, AI_sub_81DB846
- if_hp_more_than 1, 40, AI_sub_81DB84D
- jump AI_sub_81DB84F
-
-AI_sub_81DB846:: @ 81DB846
- if_hp_less_than 1, 60, AI_sub_81DB84F
-
-AI_sub_81DB84D:: @ 81DB84D
+ goto AI_CV_ChangeSelfAbility_End
+
+AI_CV_ChangeSelfAbility3:: @ 81DB806
+ if_random_less_than 50, AI_CV_ChangeSelfAbility_End
+ score +2
+
+AI_CV_ChangeSelfAbility_End:: @ 81DB80E
+ end
+
+AI_CV_ChangeSelfAbility_AbilitiesToEncourage:: @ 81DB80F
+ .byte ABILITY_SPEED_BOOST
+ .byte ABILITY_BATTLE_ARMOR
+ .byte ABILITY_SAND_VEIL
+ .byte ABILITY_STATIC
+ .byte ABILITY_FLASH_FIRE
+ .byte ABILITY_WONDER_GUARD
+ .byte ABILITY_EFFECT_SPORE
+ .byte ABILITY_SWIFT_SWIM
+ .byte ABILITY_HUGE_POWER
+ .byte ABILITY_RAIN_DISH
+ .byte ABILITY_CUTE_CHARM
+ .byte ABILITY_SHED_SKIN
+ .byte ABILITY_MARVEL_SCALE
+ .byte ABILITY_PURE_POWER
+ .byte ABILITY_CHLOROPHYLL
+ .byte ABILITY_SHIELD_DUST
+ .byte -1
+
+AI_CV_Superpower:: @ 81DB820
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Superpower_ScoreDown1
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_Superpower_ScoreDown1
+ if_stat_level_less_than AI_USER, STAT_ATK, 6, AI_CV_Superpower_ScoreDown1
+ if_target_faster AI_CV_Superpower2
+ if_hp_more_than AI_USER, 40, AI_CV_Superpower_ScoreDown1
+ goto AI_CV_Superpower_End
+
+AI_CV_Superpower2:: @ 81DB846
+ if_hp_less_than AI_USER, 60, AI_CV_Superpower_End
+
+AI_CV_Superpower_ScoreDown1:: @ 81DB84D
score -1
-AI_sub_81DB84F:: @ 81DB84F
+AI_CV_Superpower_End:: @ 81DB84F
end
-AI_sub_81DB850:: @ 81DB850
- if_hp_more_than 0, 30, AI_sub_81DB85F
- if_random_less_than 100, AI_sub_81DB85F
+AI_CV_MagicCoat:: @ 81DB850
+ if_hp_more_than AI_TARGET, 30, AI_CV_MagicCoat2
+ if_random_less_than 100, AI_CV_MagicCoat2
score -1
-AI_sub_81DB85F:: @ 81DB85F
- is_first_turn 1
- if_equal 0, AI_sub_81DB87A
- if_random_less_than -106, AI_sub_81DB882
- score 1
- jump AI_sub_81DB882
- if_random_less_than 50, AI_sub_81DB882
+AI_CV_MagicCoat2::
+ is_first_turn_for AI_USER
+ if_equal 0, AI_CV_MagicCoat4
+ if_random_less_than 150, AI_CV_MagicCoat_End
+ score +1
+ goto AI_CV_MagicCoat_End
+ if_random_less_than 50, AI_CV_MagicCoat_End
-AI_sub_81DB87A:: @ 81DB87A
- if_random_less_than 30, AI_sub_81DB882
+AI_CV_MagicCoat3::
+@ if_random_less_than 50, AI_CV_MagicCoat_End @ Improvement in Emerald
+
+AI_CV_MagicCoat4:: @ 81DB87A
+ if_random_less_than 30, AI_CV_MagicCoat_End
score -1
-AI_sub_81DB882:: @ 81DB882
+AI_CV_MagicCoat_End:: @ 81DB882
end
-AI_sub_81DB883:: @ 81DB883
- get_item 1
- if_not_in_bytes AI_bytes_81DB89E, AI_sub_81DB89B
- if_random_less_than 50, AI_sub_81DB89D
- score 1
- jump AI_sub_81DB89D
+AI_CV_Recycle:: @ 81DB883
+ get_used_held_item AI_USER
+ if_not_in_bytes AI_CV_Recycle_ItemsToEncourage, AI_CV_Recycle_ScoreDown2
+ if_random_less_than 50, AI_CV_Recycle_End
+ score +1
+ goto AI_CV_Recycle_End
-AI_sub_81DB89B:: @ 81DB89B
+AI_CV_Recycle_ScoreDown2:: @ 81DB89B
score -2
-AI_sub_81DB89D:: @ 81DB89D
+AI_CV_Recycle_End:: @ 81DB89D
end
-AI_bytes_81DB89E:: @ 81DB89E
- .byte 134
- .byte 141
- .byte 174
- .byte 0xFF
+AI_CV_Recycle_ItemsToEncourage:: @ 81DB89E
+ .byte ITEM_CHESTO_BERRY
+ .byte ITEM_LUM_BERRY
+ .byte ITEM_STARF_BERRY
+ .byte -1
-AI_sub_81DB8A2:: @ 81DB8A2
- if_status 0, 7, AI_sub_81DB8CD
- if_status2 0, 983040, AI_sub_81DB8CD
- if_status2 0, 7, AI_sub_81DB8CD
- if_random_less_than -76, AI_sub_81DB8CD
- score 2
- jump AI_sub_81DB8CF
+AI_CV_Revenge:: @ 81DB8A2
+ if_status AI_TARGET, STATUS1_SLEEP, AI_CV_Revenge_ScoreDown2
+ if_status2 AI_TARGET, STATUS2_INFATUATION, AI_CV_Revenge_ScoreDown2
+ if_status2 AI_TARGET, STATUS2_CONFUSION, AI_CV_Revenge_ScoreDown2
+ if_random_less_than 180, AI_CV_Revenge_ScoreDown2
+ score +2
+ goto AI_CV_Revenge_End
-AI_sub_81DB8CD:: @ 81DB8CD
+AI_CV_Revenge_ScoreDown2:: @ 81DB8CD
score -2
-AI_sub_81DB8CF:: @ 81DB8CF
+AI_CV_Revenge_End:: @ 81DB8CF
end
-AI_sub_81DB8D0:: @ 81DB8D0
- if_status4 0, 1, AI_sub_81DB8DF
- jump AI_sub_81DB8E1
+AI_CV_BrickBreak:: @ 81DB8D0
+ if_side_affecting AI_TARGET, SIDE_STATUS_REFLECT, AI_CV_BrickBreak_ScoreUp1
+ goto AI_CV_BrickBreak_End
-AI_sub_81DB8DF:: @ 81DB8DF
- score 1
+AI_CV_BrickBreak_ScoreUp1:: @ 81DB8DF
+ score +1
-AI_sub_81DB8E1:: @ 81DB8E1
+AI_CV_BrickBreak_End:: @ 81DB8E1
end
-AI_sub_81DB8E2:: @ 81DB8E2
- if_hp_less_than 0, 30, AI_sub_81DB8F9
- is_first_turn 1
- if_more_than 0, AI_sub_81DB8F9
- if_random_less_than -76, AI_sub_81DB8F9
- score 1
+AI_CV_KnockOff:: @ 81DB8E2
+ if_hp_less_than AI_TARGET, 30, AI_CV_KnockOff_End
+ is_first_turn_for AI_USER
+ if_more_than 0, AI_CV_KnockOff_End
+ if_random_less_than 180, AI_CV_KnockOff_End
+ score +1
-AI_sub_81DB8F9:: @ 81DB8F9
+AI_CV_KnockOff_End:: @ 81DB8F9
end
-AI_sub_81DB8FA:: @ 81DB8FA
- if_hp_less_than 0, 70, AI_sub_81DB923
- if_would_go_first 1, AI_sub_81DB915
- if_hp_more_than 1, 40, AI_sub_81DB923
- score 1
- jump AI_sub_81DB925
+AI_CV_Endeavor:: @ 81DB8FA
+ if_hp_less_than AI_TARGET, 70, AI_CV_Endeavor_ScoreDown1
+ if_target_faster AI_CV_Endeavor2
+ if_hp_more_than AI_USER, 40, AI_CV_Endeavor_ScoreDown1
+ score +1
+ goto AI_CV_Endeavor_End
-AI_sub_81DB915:: @ 81DB915
- if_hp_more_than 1, 50, AI_sub_81DB923
- score 1
- jump AI_sub_81DB925
+AI_CV_Endeavor2:: @ 81DB915
+ if_hp_more_than AI_USER, 50, AI_CV_Endeavor_ScoreDown1
+ score +1
+ goto AI_CV_Endeavor_End
-AI_sub_81DB923:: @ 81DB923
+AI_CV_Endeavor_ScoreDown1:: @ 81DB923
score -1
-AI_sub_81DB925:: @ 81DB925
+AI_CV_Endeavor_End:: @ 81DB925
end
-AI_sub_81DB926:: @ 81DB926
- if_damage_bonus 10, AI_sub_81DB94B
- if_damage_bonus 20, AI_sub_81DB94B
- if_would_go_first 1, AI_sub_81DB944
- if_hp_more_than 0, 50, AI_sub_81DB94D
- jump AI_sub_81DB94B
+AI_CV_Eruption:: @ 81DB926
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Eruption_ScoreDown1
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_Eruption_ScoreDown1
+ if_target_faster AI_CV_Eruption2
+ if_hp_more_than AI_TARGET, 50, AI_CV_Eruption_End
+ goto AI_CV_Eruption_ScoreDown1
-AI_sub_81DB944:: @ 81DB944
- if_hp_more_than 0, 70, AI_sub_81DB94D
+AI_CV_Eruption2:: @ 81DB944
+ if_hp_more_than AI_TARGET, 70, AI_CV_Eruption_End
-AI_sub_81DB94B:: @ 81DB94B
+AI_CV_Eruption_ScoreDown1:: @ 81DB94B
score -1
-AI_sub_81DB94D:: @ 81DB94D
+AI_CV_Eruption_End:: @ 81DB94D
end
-AI_sub_81DB94E:: @ 81DB94E
- is_first_turn 1
- if_more_than 0, AI_sub_81DB95E
- if_random_less_than 100, AI_sub_81DB95E
- score 2
+AI_CV_Imprison:: @ 81DB94E
+ is_first_turn_for AI_USER
+ if_more_than 0, AI_CV_Imprison_End
+ if_random_less_than 100, AI_CV_Imprison_End
+ score +2
-AI_sub_81DB95E:: @ 81DB95E
+AI_CV_Imprison_End:: @ 81DB95E
end
-AI_sub_81DB95F:: @ 81DB95F
- if_hp_less_than 0, 50, AI_sub_81DB96B
- jump AI_sub_81DB96D
+AI_CV_Refresh:: @ 81DB95F
+ if_hp_less_than AI_TARGET, 50, AI_CV_Refresh_ScoreDown1
+ goto AI_CV_Refresh_End
-AI_sub_81DB96B:: @ 81DB96B
+AI_CV_Refresh_ScoreDown1:: @ 81DB96B
score -1
-AI_sub_81DB96D:: @ 81DB96D
- end
-
-AI_sub_81DB96E:: @ 81DB96E
- is_first_turn 1
- if_equal 1, AI_sub_81DB9B5
- if_random_less_than 30, AI_sub_81DB9D7
- if_would_go_first 1, AI_sub_81DB99B
- if_hp_not_equal 1, 100, AI_sub_81DB9CF
- if_hp_less_than 0, 70, AI_sub_81DB9CF
- if_random_less_than 60, AI_sub_81DB9D7
- jump AI_sub_81DB9CF
-
-AI_sub_81DB99B:: @ 81DB99B
- if_hp_more_than 0, 25, AI_sub_81DB9CF
- if_move_effect 0, 32, AI_sub_81DB9B5
- if_move_effect 0, -100, AI_sub_81DB9B5
- jump AI_sub_81DB9C2
-
-AI_sub_81DB9B5:: @ 81DB9B5
- if_random_less_than -106, AI_sub_81DB9D7
- score 2
- jump AI_sub_81DB9D7
-
-AI_sub_81DB9C2:: @ 81DB9C2
- if_random_less_than -26, AI_sub_81DB9CF
- score 1
- jump AI_sub_81DB9D7
-
-AI_sub_81DB9CF:: @ 81DB9CF
- if_random_less_than 30, AI_sub_81DB9D7
+AI_CV_Refresh_End:: @ 81DB96D
+ end
+
+AI_CV_Snatch:: @ 81DB96E
+ is_first_turn_for AI_USER
+ if_equal 1, AI_CV_Snatch3
+ if_random_less_than 30, AI_CV_Snatch_End
+ if_target_faster AI_CV_Snatch2
+ if_hp_not_equal AI_USER, 100, AI_CV_Snatch5
+ if_hp_less_than AI_TARGET, 70, AI_CV_Snatch5
+ if_random_less_than 60, AI_CV_Snatch_End
+ goto AI_CV_Snatch5
+
+AI_CV_Snatch2:: @ 81DB99B
+ if_hp_more_than AI_TARGET, 25, AI_CV_Snatch5
+ if_has_move_with_effect AI_TARGET, EFFECT_RESTORE_HP, AI_CV_Snatch3
+ if_has_move_with_effect AI_TARGET, EFFECT_DEFENSE_CURL, AI_CV_Snatch3
+ goto AI_CV_Snatch4
+
+AI_CV_Snatch3:: @ 81DB9B5
+ if_random_less_than 150, AI_CV_Snatch_End
+ score +2
+ goto AI_CV_Snatch_End
+
+AI_CV_Snatch4:: @ 81DB9C2
+ if_random_less_than 230, AI_CV_Snatch5
+ score +1
+ goto AI_CV_Snatch_End
+
+AI_CV_Snatch5:: @ 81DB9CF
+ if_random_less_than 30, AI_CV_Snatch_End
score -2
-AI_sub_81DB9D7:: @ 81DB9D7
+AI_CV_Snatch_End:: @ 81DB9D7
end
-AI_sub_81DB9D8:: @ 81DB9D8
- if_hp_less_than 1, 50, AI_sub_81DB9FB
- get_type 0
- if_equal 13, AI_sub_81DB9F4
- get_type 2
- if_equal 13, AI_sub_81DB9F4
- jump AI_sub_81DB9FB
+AI_CV_MudSport:: @ 81DB9D8
+ if_hp_less_than AI_USER, 50, AI_CV_MudSport_ScoreDown1
+ get_target_type1
+ if_equal TYPE_ELECTRIC, AI_CV_MudSport2
+ get_target_type2
+ if_equal TYPE_ELECTRIC, AI_CV_MudSport2
+ goto AI_CV_MudSport_ScoreDown1
-AI_sub_81DB9F4:: @ 81DB9F4
- score 1
- jump AI_sub_81DB9FD
+AI_CV_MudSport2:: @ 81DB9F4
+ score +1
+ goto AI_CV_MudSport_End
-AI_sub_81DB9FB:: @ 81DB9FB
+AI_CV_MudSport_ScoreDown1:: @ 81DB9FB
score -1
-AI_sub_81DB9FD:: @ 81DB9FD
+AI_CV_MudSport_End:: @ 81DB9FD
end
-AI_sub_81DB9FE:: @ 81DB9FE
- if_damage_bonus 10, AI_sub_81DBA23
- if_damage_bonus 20, AI_sub_81DBA23
- if_would_go_first 1, AI_sub_81DBA1C
- if_hp_more_than 1, 60, AI_sub_81DBA25
- jump AI_sub_81DBA23
+AI_CV_Overheat:: @ 81DB9FE
+ if_type_effectiveness AI_EFFECTIVENESS_x0_25, AI_CV_Overheat_ScoreDown1
+ if_type_effectiveness AI_EFFECTIVENESS_x0_5, AI_CV_Overheat_ScoreDown1
+ if_target_faster AI_CV_Overheat2
+ if_hp_more_than AI_USER, 60, AI_CV_Overheat_End
+ goto AI_CV_Overheat_ScoreDown1
-AI_sub_81DBA1C:: @ 81DBA1C
- if_hp_more_than 1, 80, AI_sub_81DBA25
+AI_CV_Overheat2:: @ 81DBA1C
+ if_hp_more_than AI_USER, 80, AI_CV_Overheat_End
-AI_sub_81DBA23:: @ 81DBA23
+AI_CV_Overheat_ScoreDown1:: @ 81DBA23
score -1
-AI_sub_81DBA25:: @ 81DBA25
+AI_CV_Overheat_End:: @ 81DBA25
end
-AI_sub_81DBA26:: @ 81DBA26
- if_hp_less_than 1, 50, AI_sub_81DBA49
- get_type 0
- if_equal 10, AI_sub_81DBA42
- get_type 2
- if_equal 10, AI_sub_81DBA42
- jump AI_sub_81DBA49
+AI_CV_WaterSport:: @ 81DBA26
+ if_hp_less_than AI_USER, 50, AI_CV_WaterSport_ScoreDown1
+ get_target_type1
+ if_equal TYPE_FIRE, AI_CV_WaterSport2
+ get_target_type2
+ if_equal TYPE_FIRE, AI_CV_WaterSport2
+ goto AI_CV_WaterSport_ScoreDown1
-AI_sub_81DBA42:: @ 81DBA42
- score 1
- jump AI_sub_81DBA4B
+AI_CV_WaterSport2:: @ 81DBA42
+ score +1
+ goto AI_CV_WaterSport_End
-AI_sub_81DBA49:: @ 81DBA49
+AI_CV_WaterSport_ScoreDown1:: @ 81DBA49
score -1
-AI_sub_81DBA4B:: @ 81DBA4B
+AI_CV_WaterSport_End:: @ 81DBA4B
end
-AI_sub_81DBA4C:: @ 81DBA4C
- if_would_go_first 1, AI_sub_81DBA66
- if_hp_more_than 1, 50, AI_sub_81DBA6E
- if_random_less_than 70, AI_sub_81DBA6E
+AI_CV_DragonDance:: @ 81DBA4C
+ if_target_faster AI_CV_DragonDance2
+ if_hp_more_than AI_USER, 50, AI_CV_DragonDance_End
+ if_random_less_than 70, AI_CV_DragonDance_End
score -1
- jump AI_sub_81DBA6E
+ goto AI_CV_DragonDance_End
-AI_sub_81DBA66:: @ 81DBA66
- if_random_less_than -128, AI_sub_81DBA6E
- score 1
+AI_CV_DragonDance2:: @ 81DBA66
+ if_random_less_than 128, AI_CV_DragonDance_End
+ score +1
-AI_sub_81DBA6E:: @ 81DBA6E
+AI_CV_DragonDance_End:: @ 81DBA6E
end
-AI_CheckViability:: @ 81DBA6F
- if_can_faint AI_sub_81DBA7C
- is_most_powerful_move
- if_equal 1, AI_sub_81DA424
+AI_TryToFaint:: @ 81DBA6F
+ if_can_faint AI_TryToFaint_TryToEncourageQuickAttack
+ get_how_powerful_move_is
+ if_equal MOVE_NOT_MOST_POWERFUL, Score_Minus1
+@ if_type_effectiveness AI_EFFECTIVENESS_x4, AI_TryToFaint_DoubleSuperEffective @ Improvement in Emerald
end
-AI_sub_81DBA7C:: @ 81DBA7C
- if_effect 7, AI_sub_81DBA8C
- if_not_effect 103, AI_sub_81DBA8A
- score 2
+@ Improvement in Emerald
+@AI_TryToFaint_DoubleSuperEffective:
+@ if_random_less_than 80, AI_TryToFaint_End
+@ score +2
+@ end
+
+AI_TryToFaint_TryToEncourageQuickAttack:: @ 81DBA7C
+ if_effect EFFECT_EXPLOSION, AI_TryToFaint_End
+ if_not_effect EFFECT_QUICK_ATTACK, AI_TryToFaint_ScoreUp4
+ score +2
-AI_sub_81DBA8A:: @ 81DBA8A
- score 4
+AI_TryToFaint_ScoreUp4:: @ 81DBA8A
+ score +4
-AI_sub_81DBA8C:: @ 81DBA8C
+AI_TryToFaint_End:: @ 81DBA8C
end
AI_SetupFirstTurn:: @ 81DBA8D
get_turn_count
- if_not_equal 0, AI_sub_81DBAA6
- get_effect
- if_not_in_bytes AI_bytes_81DBAA7, AI_sub_81DBAA6
- if_random_less_than 80, AI_sub_81DBAA6
- score 2
-
-AI_sub_81DBAA6:: @ 81DBAA6
- end
-
-AI_bytes_81DBAA7:: @ 81DBAA7
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 15
- .byte 16
- .byte 18
- .byte 19
- .byte 20
- .byte 21
- .byte 22
- .byte 23
- .byte 24
- .byte 30
- .byte 35
- .byte 54
- .byte 47
- .byte 49
- .byte 50
- .byte 51
- .byte 52
- .byte 53
- .byte 54
- .byte 55
- .byte 56
- .byte 58
- .byte 59
- .byte 60
- .byte 61
- .byte 62
- .byte 63
- .byte 64
- .byte 65
- .byte 66
- .byte 67
- .byte 79
- .byte 84
- .byte 108
- .byte 109
- .byte 118
- .byte 213
- .byte 187
- .byte 156
- .byte 165
- .byte 166
- .byte 167
- .byte 181
- .byte 192
- .byte 199
- .byte 205
- .byte 206
- .byte 208
- .byte 211
- .byte 213
- .byte 0xFF
+ if_not_equal 0, AI_SetupFirstTurn_End
+ get_considered_move_effect
+ if_not_in_bytes AI_SetupFirstTurn_SetupEffectsToEncourage, AI_SetupFirstTurn_End
+ if_random_less_than 80, AI_SetupFirstTurn_End
+ score +2
+
+AI_SetupFirstTurn_End:: @ 81DBAA6
+ end
+
+AI_SetupFirstTurn_SetupEffectsToEncourage:: @ 81DBAA7
+ .byte EFFECT_ATTACK_UP
+ .byte EFFECT_DEFENSE_UP
+ .byte EFFECT_SPEED_UP
+ .byte EFFECT_SPECIAL_ATTACK_UP
+ .byte EFFECT_SPECIAL_DEFENSE_UP
+ .byte EFFECT_ACCURACY_UP
+ .byte EFFECT_EVASION_UP
+ .byte EFFECT_ATTACK_DOWN
+ .byte EFFECT_DEFENSE_DOWN
+ .byte EFFECT_SPEED_DOWN
+ .byte EFFECT_SPECIAL_ATTACK_DOWN
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN
+ .byte EFFECT_ACCURACY_DOWN
+ .byte EFFECT_EVASION_DOWN
+ .byte EFFECT_CONVERSION
+ .byte EFFECT_LIGHT_SCREEN
+ .byte EFFECT_SPECIAL_DEFENSE_UP_2
+ .byte EFFECT_FOCUS_ENERGY
+ .byte EFFECT_CONFUSE
+ .byte EFFECT_ATTACK_UP_2
+ .byte EFFECT_DEFENSE_UP_2
+ .byte EFFECT_SPEED_UP_2
+ .byte EFFECT_SPECIAL_ATTACK_UP_2
+ .byte EFFECT_SPECIAL_DEFENSE_UP_2
+ .byte EFFECT_ACCURACY_UP_2
+ .byte EFFECT_EVASION_UP_2
+ .byte EFFECT_ATTACK_DOWN_2
+ .byte EFFECT_DEFENSE_DOWN_2
+ .byte EFFECT_SPEED_DOWN_2
+ .byte EFFECT_SPECIAL_ATTACK_DOWN_2
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN_2
+ .byte EFFECT_ACCURACY_DOWN_2
+ .byte EFFECT_EVASION_DOWN_2
+ .byte EFFECT_REFLECT
+ .byte EFFECT_POISON
+ .byte EFFECT_PARALYZE
+ .byte EFFECT_SUBSTITUTE
+ .byte EFFECT_LEECH_SEED
+ .byte EFFECT_MINIMIZE
+ .byte EFFECT_CURSE
+ .byte EFFECT_SWAGGER
+ .byte EFFECT_CAMOUFLAGE
+ .byte EFFECT_YAWN
+ .byte EFFECT_DEFENSE_CURL
+ .byte EFFECT_TORMENT
+ .byte EFFECT_FLATTER
+ .byte EFFECT_WILL_O_WISP
+ .byte EFFECT_INGRAIN
+ .byte EFFECT_IMPRISON
+ .byte EFFECT_TEETER_DANCE
+ .byte EFFECT_TICKLE
+ .byte EFFECT_COSMIC_POWER
+ .byte EFFECT_BULK_UP
+ .byte EFFECT_CALM_MIND
+ .byte EFFECT_CAMOUFLAGE
+ .byte -1
AI_PreferStrongestMove:: @ 81DBADF
- is_most_powerful_move
- if_not_equal 0, AI_sub_81DBAEE
- if_random_less_than 100, AI_sub_81DBAEE
- score 2
+ get_how_powerful_move_is
+ if_not_equal MOVE_POWER_DISCOURAGED, AI_PreferStrongestMove_End
+ if_random_less_than 100, AI_PreferStrongestMove_End
+ score +2
-AI_sub_81DBAEE:: @ 81DBAEE
+AI_PreferStrongestMove_End:: @ 81DBAEE
end
AI_Risky:: @ 81DBAEF
- get_effect
- if_not_in_bytes AI_bytes_81DBB02, AI_sub_81DBB01
- if_random_less_than -128, AI_sub_81DBB01
- score 2
-
-AI_sub_81DBB01:: @ 81DBB01
- end
-
-AI_bytes_81DBB02:: @ 81DBB02
- .byte 1
- .byte 7
- .byte 9
- .byte 38
- .byte 43
- .byte 49
- .byte 83
- .byte 88
- .byte 89
- .byte 98
- .byte 118
- .byte 120
- .byte 122
- .byte 140
- .byte 142
- .byte 144
- .byte 170
- .byte 185
- .byte 199
- .byte 0xFF
+ get_considered_move_effect
+ if_not_in_bytes AI_Risky_EffectsToEncourage, AI_Risky_End
+ if_random_less_than 128, AI_Risky_End
+ score +2
+
+AI_Risky_End:: @ 81DBB01
+ end
+
+AI_Risky_EffectsToEncourage:: @ 81DBB02
+ .byte EFFECT_SLEEP
+ .byte EFFECT_EXPLOSION
+ .byte EFFECT_MIRROR_MOVE
+ .byte EFFECT_OHKO
+ .byte EFFECT_HIGH_CRITICAL
+ .byte EFFECT_CONFUSE
+ .byte EFFECT_METRONOME
+ .byte EFFECT_PSYWAVE
+ .byte EFFECT_COUNTER
+ .byte EFFECT_DESTINY_BOND
+ .byte EFFECT_SWAGGER
+ .byte EFFECT_ATTRACT
+ .byte EFFECT_PRESENT
+ .byte EFFECT_ALL_STATS_UP_HIT
+ .byte EFFECT_BELLY_DRUM
+ .byte EFFECT_MIRROR_COAT
+ .byte EFFECT_FOCUS_PUNCH
+ .byte EFFECT_REVENGE
+ .byte EFFECT_TEETER_DANCE
+ .byte -1
AI_PreferBatonPass:: @ 81DBB16
- count_alive_pokemon 1
- if_equal 0, AI_sub_81DBB3A
- is_most_powerful_move
- if_not_equal 0, AI_sub_81DBB3A
- if_move_effect 1, 127, AI_sub_81DBB32
- if_random_less_than 80, AI_sub_81DBB01
-
-AI_sub_81DBB32:: @ 81DBB32
- if_random_less_than 20, AI_sub_81DBB01
- score 3
-
-AI_sub_81DBB3A:: @ 81DBB3A
- end
-
+ count_alive_pokemon AI_USER
+ if_equal 0, AI_PreferBatonPass_End
+ get_how_powerful_move_is
+ if_not_equal MOVE_POWER_DISCOURAGED, AI_PreferBatonPass_End
+ if_has_move_with_effect AI_USER, EFFECT_BATON_PASS, AI_PreferBatonPass_GoForBatonPass
+ if_random_less_than 80, AI_Risky_End
+
+@ Improvement in Emerald (several below)
+AI_PreferBatonPass_GoForBatonPass:: @ 81DBB32
+@ if_move MOVE_SWORDS_DANCE, AI_PreferBatonPass2
+@ if_move MOVE_DRAGON_DANCE, AI_PreferBatonPass2
+@ if_move MOVE_CALM_MIND, AI_PreferBatonPass2
+@ if_effect EFFECT_PROTECT, AI_PreferBatonPass3
+@ if_move MOVE_BATON_PASS, AI_PreferBatonPass_EncourageIfHighStats
+ if_random_less_than 20, AI_Risky_End
+ score +3
+
+@AI_PreferBatonPass2:
+@ get_turn_count
+@ if_equal 0, Score_Plus5
+@ if_hp_less_than AI_USER, 60, Score_Minus10
+@ goto Score_Plus1
+@
+@AI_PreferBatonPass3::
+@ get_last_used_move AI_USER
+@ if_in_hwords AI_PreferBatonPass_ProtectMoves, Score_Minus2
+@ score +2
+@ end
+@
+@AI_PreferBatonPass_ProtectMoves:
+@ .2byte MOVE_PROTECT
+@ .2byte MOVE_DETECT
+@ .2byte -1
+@
+@AI_PreferBatonPass_EncourageIfHighStats:
+@ get_turn_count
+@ if_equal 0, Score_Minus2
+@ if_stat_level_more_than AI_USER, STAT_ATK, 8, Score_Plus3
+@ if_stat_level_more_than AI_USER, STAT_ATK, 7, Score_Plus2
+@ if_stat_level_more_than AI_USER, STAT_ATK, 6, Score_Plus1
+@ if_stat_level_more_than AI_USER, STAT_SPATK, 8, Score_Plus3
+@ if_stat_level_more_than AI_USER, STAT_SPATK, 7, Score_Plus2
+@ if_stat_level_more_than AI_USER, STAT_SPATK, 6, Score_Plus1
+@ end
+
+AI_PreferBatonPass_End:: @ 81DBB3A
+ end
+
+@ Empty. Expanded in Emerald
AI_DoubleBattle:: @ 81DBB3B
end
AI_HPAware:: @ 81DBB3C
- if_hp_more_than 1, 70, AI_sub_81DBB59
- if_hp_more_than 1, 30, AI_sub_81DBB68
- get_effect
- if_in_bytes AI_bytes_81DBBFC, AI_sub_81DBB77
- jump AI_sub_81DBB7F
-
-AI_sub_81DBB59:: @ 81DBB59
- get_effect
- if_in_bytes AI_bytes_81DBBC3, AI_sub_81DBB77
- jump AI_sub_81DBB7F
-
-AI_sub_81DBB68:: @ 81DBB68
- get_effect
- if_in_bytes AI_bytes_81DBBD1, AI_sub_81DBB77
- jump AI_sub_81DBB7F
-
-AI_sub_81DBB77:: @ 81DBB77
- if_random_less_than 50, AI_sub_81DBB7F
+ if_hp_more_than AI_USER, 70, AI_HPAware_UserHasHighHP
+ if_hp_more_than AI_USER, 30, AI_HPAware_UserHasMediumHP
+ get_considered_move_effect
+ if_in_bytes AI_HPAware_DiscouragedEffectsWhenLowHP, AI_HPAware_TryToDiscourage
+ goto AI_HPAware_ConsiderTarget
+
+AI_HPAware_UserHasHighHP:: @ 81DBB59
+ get_considered_move_effect
+ if_in_bytes AI_HPAware_DiscouragedEffectsWhenHighHP, AI_HPAware_TryToDiscourage
+ goto AI_HPAware_ConsiderTarget
+
+AI_HPAware_UserHasMediumHP:: @ 81DBB68
+ get_considered_move_effect
+ if_in_bytes AI_HPAware_DiscouragedEffectsWhenMediumHP, AI_HPAware_TryToDiscourage
+ goto AI_HPAware_ConsiderTarget
+
+AI_HPAware_TryToDiscourage:: @ 81DBB77
+ if_random_less_than 50, AI_HPAware_ConsiderTarget
score -2
-AI_sub_81DBB7F:: @ 81DBB7F
- if_hp_more_than 0, 70, AI_sub_81DBB9C
- if_hp_more_than 0, 30, AI_sub_81DBBAB
- get_effect
- if_in_bytes AI_bytes_81DBC55, AI_sub_81DBBBA
- jump AI_sub_81DBBC2
-
-AI_sub_81DBB9C:: @ 81DBB9C
- get_effect
- if_in_bytes AI_bytes_81DBC2C, AI_sub_81DBBBA
- jump AI_sub_81DBBC2
-
-AI_sub_81DBBAB:: @ 81DBBAB
- get_effect
- if_in_bytes AI_bytes_81DBC2D, AI_sub_81DBBBA
- jump AI_sub_81DBBC2
-
-AI_sub_81DBBBA:: @ 81DBBBA
- if_random_less_than 50, AI_sub_81DBBC2
+AI_HPAware_ConsiderTarget:: @ 81DBB7F
+ if_hp_more_than AI_TARGET, 70, AI_HPAware_TargetHasHighHP
+ if_hp_more_than AI_TARGET, 30, AI_HPAware_TargetHasMediumHP
+ get_considered_move_effect
+ if_in_bytes AI_HPAware_DiscouragedEffectsWhenTargetLowHP, AI_HPAware_TargetTryToDiscourage
+ goto AI_HPAware_End
+
+AI_HPAware_TargetHasHighHP:: @ 81DBB9C
+ get_considered_move_effect
+ if_in_bytes AI_HPAware_DiscouragedEffectsWhenTargetHighHP, AI_HPAware_TargetTryToDiscourage
+ goto AI_HPAware_End
+
+AI_HPAware_TargetHasMediumHP:: @ 81DBBAB
+ get_considered_move_effect
+ if_in_bytes AI_HPAware_DiscouragedEffectsWhenTargetMediumHP, AI_HPAware_TargetTryToDiscourage
+ goto AI_HPAware_End
+
+AI_HPAware_TargetTryToDiscourage:: @ 81DBBBA
+ if_random_less_than 50, AI_HPAware_End
score -2
-AI_sub_81DBBC2:: @ 81DBBC2
- end
-
-AI_bytes_81DBBC3:: @ 81DBBC3
- .byte 7
- .byte 32
- .byte 37
- .byte 98
- .byte 99
- .byte 116
- .byte 132
- .byte 133
- .byte 134
- .byte 157
- .byte 168
- .byte 194
- .byte 204
- .byte 0xFF
-
-AI_bytes_81DBBD1:: @ 81DBBD1
- .byte 7
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 15
- .byte 16
- .byte 18
- .byte 19
- .byte 20
- .byte 21
- .byte 22
- .byte 23
- .byte 24
- .byte 26
- .byte 30
- .byte 35
- .byte 46
- .byte 47
- .byte 50
- .byte 51
- .byte 52
- .byte 53
- .byte 54
- .byte 55
- .byte 56
- .byte 58
- .byte 59
- .byte 60
- .byte 61
- .byte 62
- .byte 63
- .byte 64
- .byte 93
- .byte 124
- .byte 142
- .byte 205
- .byte 206
- .byte 208
- .byte 211
- .byte 212
- .byte 0xFF
-
-AI_bytes_81DBBFC:: @ 81DBBFC
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 15
- .byte 16
- .byte 18
- .byte 19
- .byte 20
- .byte 21
- .byte 22
- .byte 23
- .byte 24
- .byte 26
- .byte 30
- .byte 35
- .byte 46
- .byte 47
- .byte 50
- .byte 51
- .byte 52
- .byte 53
- .byte 54
- .byte 55
- .byte 56
- .byte 58
- .byte 59
- .byte 60
- .byte 61
- .byte 62
- .byte 63
- .byte 64
- .byte 81
- .byte 93
- .byte 94
- .byte 124
- .byte 142
- .byte 143
- .byte 144
- .byte 151
- .byte 190
- .byte 205
- .byte 206
- .byte 208
- .byte 211
- .byte 212
- .byte 0xFF
-
-AI_bytes_81DBC2C:: @ 81DBC2C
- .byte 0xFF
-
-AI_bytes_81DBC2D:: @ 81DBC2D
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 15
- .byte 16
- .byte 18
- .byte 19
- .byte 20
- .byte 21
- .byte 22
- .byte 23
- .byte 24
- .byte 46
- .byte 47
- .byte 50
- .byte 51
- .byte 52
- .byte 53
- .byte 54
- .byte 55
- .byte 56
- .byte 58
- .byte 59
- .byte 60
- .byte 61
- .byte 62
- .byte 63
- .byte 64
- .byte 66
- .byte 91
- .byte 114
- .byte 124
- .byte 205
- .byte 206
- .byte 208
- .byte 211
- .byte 212
- .byte 0xFF
-
-AI_bytes_81DBC55:: @ 81DBC55
- .byte 1
- .byte 7
- .byte 10
- .byte 11
- .byte 12
- .byte 13
- .byte 14
- .byte 15
- .byte 16
- .byte 18
- .byte 19
- .byte 20
- .byte 21
- .byte 22
- .byte 23
- .byte 24
- .byte 26
- .byte 30
- .byte 33
- .byte 35
- .byte 38
- .byte 40
- .byte 40
- .byte 46
- .byte 47
- .byte 49
- .byte 50
- .byte 51
- .byte 52
- .byte 53
- .byte 54
- .byte 55
- .byte 56
- .byte 58
- .byte 59
- .byte 60
- .byte 61
- .byte 62
- .byte 63
- .byte 64
- .byte 66
- .byte 67
- .byte 91
- .byte 93
- .byte 94
- .byte 100
- .byte 114
- .byte 118
- .byte 119
- .byte 120
- .byte 124
- .byte 143
- .byte 144
- .byte 167
- .byte 205
- .byte 206
- .byte 208
- .byte 211
- .byte 212
- .byte 0xFF
+AI_HPAware_End:: @ 81DBBC2
+ end
+
+AI_HPAware_DiscouragedEffectsWhenHighHP:: @ 81DBBC3
+ .byte EFFECT_EXPLOSION
+ .byte EFFECT_RESTORE_HP
+ .byte EFFECT_REST
+ .byte EFFECT_DESTINY_BOND
+ .byte EFFECT_FLAIL
+ .byte EFFECT_ENDURE
+ .byte EFFECT_MORNING_SUN
+ .byte EFFECT_SYNTHESIS
+ .byte EFFECT_MOONLIGHT
+ .byte EFFECT_SOFTBOILED
+ .byte EFFECT_MEMENTO
+ .byte EFFECT_GRUDGE
+ .byte EFFECT_OVERHEAT
+ .byte -1
+
+AI_HPAware_DiscouragedEffectsWhenMediumHP:: @ 81DBBD1
+ .byte EFFECT_EXPLOSION
+ .byte EFFECT_ATTACK_UP
+ .byte EFFECT_DEFENSE_UP
+ .byte EFFECT_SPEED_UP
+ .byte EFFECT_SPECIAL_ATTACK_UP
+ .byte EFFECT_SPECIAL_DEFENSE_UP
+ .byte EFFECT_ACCURACY_UP
+ .byte EFFECT_EVASION_UP
+ .byte EFFECT_ATTACK_DOWN
+ .byte EFFECT_DEFENSE_DOWN
+ .byte EFFECT_SPEED_DOWN
+ .byte EFFECT_SPECIAL_ATTACK_DOWN
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN
+ .byte EFFECT_ACCURACY_DOWN
+ .byte EFFECT_EVASION_DOWN
+ .byte EFFECT_BIDE
+ .byte EFFECT_CONVERSION
+ .byte EFFECT_LIGHT_SCREEN
+ .byte EFFECT_MIST
+ .byte EFFECT_FOCUS_ENERGY
+ .byte EFFECT_ATTACK_UP_2
+ .byte EFFECT_DEFENSE_UP_2
+ .byte EFFECT_SPEED_UP_2
+ .byte EFFECT_SPECIAL_ATTACK_UP_2
+ .byte EFFECT_SPECIAL_DEFENSE_UP_2
+ .byte EFFECT_ACCURACY_UP_2
+ .byte EFFECT_EVASION_UP_2
+ .byte EFFECT_ATTACK_DOWN_2
+ .byte EFFECT_DEFENSE_DOWN_2
+ .byte EFFECT_SPEED_DOWN_2
+ .byte EFFECT_SPECIAL_ATTACK_DOWN_2
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN_2
+ .byte EFFECT_ACCURACY_DOWN_2
+ .byte EFFECT_EVASION_DOWN_2
+ .byte EFFECT_CONVERSION_2
+ .byte EFFECT_SAFEGUARD
+ .byte EFFECT_BELLY_DRUM
+ .byte EFFECT_TICKLE
+ .byte EFFECT_COSMIC_POWER
+ .byte EFFECT_BULK_UP
+ .byte EFFECT_CALM_MIND
+ .byte EFFECT_DRAGON_DANCE
+ .byte -1
+
+AI_HPAware_DiscouragedEffectsWhenLowHP:: @ 81DBBFC
+ .byte EFFECT_ATTACK_UP
+ .byte EFFECT_DEFENSE_UP
+ .byte EFFECT_SPEED_UP
+ .byte EFFECT_SPECIAL_ATTACK_UP
+ .byte EFFECT_SPECIAL_DEFENSE_UP
+ .byte EFFECT_ACCURACY_UP
+ .byte EFFECT_EVASION_UP
+ .byte EFFECT_ATTACK_DOWN
+ .byte EFFECT_DEFENSE_DOWN
+ .byte EFFECT_SPEED_DOWN
+ .byte EFFECT_SPECIAL_ATTACK_DOWN
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN
+ .byte EFFECT_ACCURACY_DOWN
+ .byte EFFECT_EVASION_DOWN
+ .byte EFFECT_BIDE
+ .byte EFFECT_CONVERSION
+ .byte EFFECT_LIGHT_SCREEN
+ .byte EFFECT_MIST
+ .byte EFFECT_FOCUS_ENERGY
+ .byte EFFECT_ATTACK_UP_2
+ .byte EFFECT_DEFENSE_UP_2
+ .byte EFFECT_SPEED_UP_2
+ .byte EFFECT_SPECIAL_ATTACK_UP_2
+ .byte EFFECT_SPECIAL_DEFENSE_UP_2
+ .byte EFFECT_ACCURACY_UP_2
+ .byte EFFECT_EVASION_UP_2
+ .byte EFFECT_ATTACK_DOWN_2
+ .byte EFFECT_DEFENSE_DOWN_2
+ .byte EFFECT_SPEED_DOWN_2
+ .byte EFFECT_SPECIAL_ATTACK_DOWN_2
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN_2
+ .byte EFFECT_ACCURACY_DOWN_2
+ .byte EFFECT_EVASION_DOWN_2
+ .byte EFFECT_RAGE
+ .byte EFFECT_CONVERSION_2
+ .byte EFFECT_LOCK_ON
+ .byte EFFECT_SAFEGUARD
+ .byte EFFECT_BELLY_DRUM
+ .byte EFFECT_PSYCH_UP
+ .byte EFFECT_MIRROR_COAT
+ .byte EFFECT_SOLARBEAM
+ .byte EFFECT_ERUPTION
+ .byte EFFECT_TICKLE
+ .byte EFFECT_COSMIC_POWER
+ .byte EFFECT_BULK_UP
+ .byte EFFECT_CALM_MIND
+ .byte EFFECT_DRAGON_DANCE
+ .byte -1
+
+AI_HPAware_DiscouragedEffectsWhenTargetHighHP:: @ 81DBC2C
+ .byte -1
+
+AI_HPAware_DiscouragedEffectsWhenTargetMediumHP:: @ 81DBC2D
+ .byte EFFECT_ATTACK_UP
+ .byte EFFECT_DEFENSE_UP
+ .byte EFFECT_SPEED_UP
+ .byte EFFECT_SPECIAL_ATTACK_UP
+ .byte EFFECT_SPECIAL_DEFENSE_UP
+ .byte EFFECT_ACCURACY_UP
+ .byte EFFECT_EVASION_UP
+ .byte EFFECT_ATTACK_DOWN
+ .byte EFFECT_DEFENSE_DOWN
+ .byte EFFECT_SPEED_DOWN
+ .byte EFFECT_SPECIAL_ATTACK_DOWN
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN
+ .byte EFFECT_ACCURACY_DOWN
+ .byte EFFECT_EVASION_DOWN
+ .byte EFFECT_MIST
+ .byte EFFECT_FOCUS_ENERGY
+ .byte EFFECT_ATTACK_UP_2
+ .byte EFFECT_DEFENSE_UP_2
+ .byte EFFECT_SPEED_UP_2
+ .byte EFFECT_SPECIAL_ATTACK_UP_2
+ .byte EFFECT_SPECIAL_DEFENSE_UP_2
+ .byte EFFECT_ACCURACY_UP_2
+ .byte EFFECT_EVASION_UP_2
+ .byte EFFECT_ATTACK_DOWN_2
+ .byte EFFECT_DEFENSE_DOWN_2
+ .byte EFFECT_SPEED_DOWN_2
+ .byte EFFECT_SPECIAL_ATTACK_DOWN_2
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN_2
+ .byte EFFECT_ACCURACY_DOWN_2
+ .byte EFFECT_EVASION_DOWN_2
+ .byte EFFECT_POISON
+ .byte EFFECT_PAIN_SPLIT
+ .byte EFFECT_PERISH_SONG
+ .byte EFFECT_SAFEGUARD
+ .byte EFFECT_TICKLE
+ .byte EFFECT_COSMIC_POWER
+ .byte EFFECT_BULK_UP
+ .byte EFFECT_CALM_MIND
+ .byte EFFECT_DRAGON_DANCE
+ .byte -1
+
+AI_HPAware_DiscouragedEffectsWhenTargetLowHP:: @ 81DBC55
+ .byte EFFECT_SLEEP
+ .byte EFFECT_EXPLOSION
+ .byte EFFECT_ATTACK_UP
+ .byte EFFECT_DEFENSE_UP
+ .byte EFFECT_SPEED_UP
+ .byte EFFECT_SPECIAL_ATTACK_UP
+ .byte EFFECT_SPECIAL_DEFENSE_UP
+ .byte EFFECT_ACCURACY_UP
+ .byte EFFECT_EVASION_UP
+ .byte EFFECT_ATTACK_DOWN
+ .byte EFFECT_DEFENSE_DOWN
+ .byte EFFECT_SPEED_DOWN
+ .byte EFFECT_SPECIAL_ATTACK_DOWN
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN
+ .byte EFFECT_ACCURACY_DOWN
+ .byte EFFECT_EVASION_DOWN
+ .byte EFFECT_BIDE
+ .byte EFFECT_CONVERSION
+ .byte EFFECT_TOXIC
+ .byte EFFECT_LIGHT_SCREEN
+ .byte EFFECT_OHKO
+ .byte EFFECT_SUPER_FANG @ Maybe supposed to be EFFECT_RAZOR_WIND
+ .byte EFFECT_SUPER_FANG
+ .byte EFFECT_MIST
+ .byte EFFECT_FOCUS_ENERGY
+ .byte EFFECT_CONFUSE
+ .byte EFFECT_ATTACK_UP_2
+ .byte EFFECT_DEFENSE_UP_2
+ .byte EFFECT_SPEED_UP_2
+ .byte EFFECT_SPECIAL_ATTACK_UP_2
+ .byte EFFECT_SPECIAL_DEFENSE_UP_2
+ .byte EFFECT_ACCURACY_UP_2
+ .byte EFFECT_EVASION_UP_2
+ .byte EFFECT_ATTACK_DOWN_2
+ .byte EFFECT_DEFENSE_DOWN_2
+ .byte EFFECT_SPEED_DOWN_2
+ .byte EFFECT_SPECIAL_ATTACK_DOWN_2
+ .byte EFFECT_SPECIAL_DEFENSE_DOWN_2
+ .byte EFFECT_ACCURACY_DOWN_2
+ .byte EFFECT_EVASION_DOWN_2
+ .byte EFFECT_POISON
+ .byte EFFECT_PARALYZE
+ .byte EFFECT_PAIN_SPLIT
+ .byte EFFECT_CONVERSION_2
+ .byte EFFECT_LOCK_ON
+ .byte EFFECT_SPITE
+ .byte EFFECT_PERISH_SONG
+ .byte EFFECT_SWAGGER
+ .byte EFFECT_FURY_CUTTER
+ .byte EFFECT_ATTRACT
+ .byte EFFECT_SAFEGUARD
+ .byte EFFECT_PSYCH_UP
+ .byte EFFECT_MIRROR_COAT
+ .byte EFFECT_WILL_O_WISP
+ .byte EFFECT_TICKLE
+ .byte EFFECT_COSMIC_POWER
+ .byte EFFECT_BULK_UP
+ .byte EFFECT_CALM_MIND
+ .byte EFFECT_DRAGON_DANCE
+ .byte -1
AI_Unknown:: @ 81DBC91
- if_not_effect -119, AI_sub_81DBCA7
- if_equal 0, AI_sub_81DBCA7
- is_first_turn 1
- if_equal 0, AI_sub_81DBCA7
- score 5
+ if_not_effect EFFECT_SUNNY_DAY, AI_Unknown_End
+ if_equal 0, AI_Unknown_End
+ is_first_turn_for AI_USER
+ if_equal 0, AI_Unknown_End
+ score +5
-AI_sub_81DBCA7:: @ 81DBCA7
+AI_Unknown_End:: @ 81DBCA7
end
AI_Roaming:: @ 81DBCA8
- if_status2 1, 57344, AI_sub_81DBCD5
- if_status2 1, 67108864, AI_sub_81DBCD5
- get_ability 0
- if_equal 23, AI_sub_81DBCD5
- get_ability 1
- if_equal 26, AI_sub_81DBCD4
- get_ability 0
- if_equal 71, AI_sub_81DBCD5
-
-AI_sub_81DBCD4:: @ 81DBCD4
+ if_status2 AI_USER, STATUS2_WRAPPED, AI_Roaming_End
+ if_status2 AI_USER, STATUS2_ESCAPE_PREVENTION, AI_Roaming_End
+ get_ability AI_TARGET
+ if_equal ABILITY_SHADOW_TAG, AI_Roaming_End
+ get_ability AI_USER
+ if_equal ABILITY_LEVITATE, AI_Roaming_Flee
+ get_ability AI_TARGET
+ if_equal ABILITY_ARENA_TRAP, AI_Roaming_End
+
+AI_Roaming_Flee:: @ 81DBCD4
flee
-AI_sub_81DBCD5:: @ 81DBCD5
+AI_Roaming_End:: @ 81DBCD5
end
AI_Safari:: @ 81DBCD6
- if_random_100 AI_sub_81DBCDC
+ if_random_safari_flee AI_Safari_Flee
watch
-AI_sub_81DBCDC:: @ 81DBCDC
+AI_Safari_Flee:: @ 81DBCDC
flee
+@ From Hoenns Poochyena fight (Zigzagoon in Emerald)
AI_FirstBattle:: @ 81DBCDD
- if_hp_equal 0, 20, AI_sub_81DBCEC
- if_hp_less_than 0, 20, AI_sub_81DBCEC
+ if_hp_equal AI_TARGET, 20, AI_FirstBattle_Flee
+ if_hp_less_than AI_TARGET, 20, AI_FirstBattle_Flee
end
-AI_sub_81DBCEC:: @ 81DBCEC
+AI_FirstBattle_Flee:: @ 81DBCEC
flee
AI_Ret:: @ 81DBCED
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 63d54de48..ab8c2d023 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -926,7 +926,7 @@ Text_1A5690:: @ 81A5690
.string "{PLAYER} handed over the\n"
.string "{STR_VAR_1}.$"
-gUnknown_81A56A7:: @ 81A56A7
+Text_GiveNicknameToThisMon:: @ 81A56A7
.string "Do you want to give a nickname to\n"
.string "this {STR_VAR_1}?$"
@@ -1008,43 +1008,7 @@ Text_1A5CD3:: @ 81A5CD3
Text_TheDoorIsOpen:: @ 81A5CDF
.string "The door is open…$"
-Text_1A5CF1:: @ 81A5CF1
- .string "{STR_VAR_2} was transferred to\n"
- .string "Someone's PC.\p"
- .string "It was placed in \n"
- .string "BOX “{STR_VAR_1}.”$"
-
-Text_1A5D31:: @ 81A5D31
- .string "{STR_VAR_2} was transferred to\n"
- .string "BILL'S PC.\p"
- .string "It was placed in \n"
- .string "BOX “{STR_VAR_1}.”$"
-
-Text_1A5D6E:: @ 81A5D6E
- .string "BOX “{STR_VAR_3}” on\n"
- .string "Someone's PC was full.\p"
- .string "{STR_VAR_2} was transferred to\n"
- .string "BOX “{STR_VAR_1}.”$"
-
-Text_1A5DB1:: @ 81A5DB1
- .string "BOX “{STR_VAR_3}” on\n"
- .string "BILL'S PC was full.\p"
- .string "{STR_VAR_2} was transferred to\n"
- .string "BOX “{STR_VAR_1}.”$"
-
-Text_1A5DF1:: @ 81A5DF1
- .string "{PLAYER} obtained\n"
- .string "the {STR_VAR_1}!$"
-
-Text_1A5E05:: @ 81A5E05
- .string "ポケモンを もちきれないので\n"
- .string "パソコンの ボックス“{STR_VAR_1}” に\l"
- .string "{STR_VAR_2}を てんそうした!$"
-
-gUnknown_81A5E31:: @ 81A5E31
- .string "There's no more room for POKéMON!\p"
- .string "The POKéMON BOXES are full and\n"
- .string "can't accept any more!$"
+ .include "data/text/pc_transfer.inc"
Text_1A5E89:: @ 81A5E89
.string "First, you should restore your\n"
@@ -1505,53 +1469,7 @@ EventScript_1A80FE:: @ 81A80FE
end
.include "data/scripts/silphco_doors.inc"
-
-EventScript_1A8C27:: @ 81A8C27
- getpartysize
- subvar VAR_RESULT, 1
- copyvar VAR_0x8004, VAR_RESULT
- return
-
-EventScript_1A8C33:: @ 81A8C33
- fadescreen FADE_TO_BLACK
- special ChangeBoxPokemonNickname
- waitstate
- lock
- faceplayer
- return
-
-EventScript_1A8C3C:: @ 81A8C3C
- bufferboxname 0, VAR_PC_BOX_TO_SEND_MON
- getspeciesname 1, VAR_TEMP_1
- call_if_unset FLAG_SYS_NOT_SOMEONES_PC, EventScript_1A8C57
- call_if_set FLAG_SYS_NOT_SOMEONES_PC, EventScript_1A8C82
- return
-
-EventScript_1A8C57:: @ 81A8C57
- specialvar VAR_RESULT, ShouldShowBoxWasFullMessage
- compare VAR_RESULT, TRUE
- goto_if_eq EventScript_1A8C70
- msgbox Text_1A5CF1
- return
-
-EventScript_1A8C70:: @ 81A8C70
- specialvar VAR_RESULT, GetPCBoxToSendMon
- bufferboxname 2, VAR_RESULT
- msgbox Text_1A5D6E
- return
-
-EventScript_1A8C82:: @ 81A8C82
- specialvar VAR_RESULT, ShouldShowBoxWasFullMessage
- compare VAR_RESULT, TRUE
- goto_if_eq EventScript_1A8C9B
- msgbox Text_1A5D31
- return
-
-EventScript_1A8C9B:: @ 81A8C9B
- specialvar VAR_RESULT, GetPCBoxToSendMon
- bufferboxname 2, VAR_RESULT
- msgbox Text_1A5DB1
- return
+ .include "data/scripts/pc_transfer.inc"
EventScript_GetInGameTradeSpeciesInfo:: @ 81A8CAD
copyvar VAR_0x8004, VAR_0x8008
@@ -1771,9 +1689,9 @@ EventScript_BrailleCursorWaitButton:: @ 81A926C
special Special_BrailleCursorToggle
return
-EventScript_1A927C:: @ 81A927C
+EventScript_NoMoreRoomForPokemon:: @ 81A927C
textcolor 3
- msgbox gUnknown_81A5E31
+ msgbox Text_NoMoreRoomForPokemon
release
end
diff --git a/data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc b/data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc
index e717a7cc4..73c55afd8 100644
--- a/data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc
+++ b/data/maps/CeladonCity_Condominiums_RoofRoom/scripts.inc
@@ -15,7 +15,7 @@ CeladonCity_Condominiums_RoofRoom_EventScript_16C46D:: @ 816C46D
compare VAR_RESULT, 1
goto_if_eq EventScript_16C4DA
compare VAR_RESULT, 2
- goto_if_eq EventScript_1A927C
+ goto_if_eq EventScript_NoMoreRoomForPokemon
release
end
@@ -26,10 +26,10 @@ EventScript_16C4A6:: @ 816C4A6
waitmessage
waitfanfare
getspeciesname 0, SPECIES_EEVEE
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16C514
- call EventScript_1A8C27
+ call EventScript_GetGiftMonPartySlot
call EventScript_ChangePokemonNickname
goto EventScript_16C514
end
@@ -41,15 +41,15 @@ EventScript_16C4DA:: @ 816C4DA
waitmessage
waitfanfare
getspeciesname 0, SPECIES_EEVEE
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16C509
- call EventScript_1A8C33
+ call EventScript_NameReceivedBoxMon
goto EventScript_16C509
end
EventScript_16C509:: @ 816C509
- call EventScript_1A8C3C
+ call EventScript_TransferredToPC
goto EventScript_16C514
end
diff --git a/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc b/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc
index 5a479aa3f..329f829d3 100644
--- a/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc
+++ b/data/maps/CeladonCity_GameCorner_PrizeRoom/scripts.inc
@@ -186,7 +186,7 @@ EventScript_16CD52:: @ 816CD52
EventScript_16CD74:: @ 816CD74
textcolor 3
- msgbox gUnknown_81A5E31
+ msgbox Text_NoMoreRoomForPokemon
hidecoinsbox 0, 0
release
end
@@ -215,10 +215,10 @@ EventScript_16CDB3:: @ 816CDB3
updatecoinsbox 0, 5
getspeciesname 0, VAR_TEMP_1
playfanfare MUS_FANFA1
- message Text_1A5DF1
+ message Text_PlayerObtainedTheMon
waitmessage
waitfanfare
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, YES
goto_if_eq EventScript_16CD83
goto EventScript_16CC10
@@ -229,18 +229,18 @@ EventScript_16CDE0:: @ 816CDE0
updatecoinsbox 0, 5
getspeciesname 0, VAR_TEMP_1
playfanfare MUS_FANFA1
- message Text_1A5DF1
+ message Text_PlayerObtainedTheMon
waitmessage
waitfanfare
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16CE12
- call EventScript_1A8C33
+ call EventScript_NameReceivedBoxMon
goto EventScript_16CE12
end
EventScript_16CE12:: @ 816CE12
- call EventScript_1A8C3C
+ call EventScript_TransferredToPC
goto EventScript_16CC10
end
diff --git a/data/maps/CinnabarIsland/map.json b/data/maps/CinnabarIsland/map.json
index 793eb7016..823a4ce95 100644
--- a/data/maps/CinnabarIsland/map.json
+++ b/data/maps/CinnabarIsland/map.json
@@ -34,7 +34,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_EventScript_1671EF",
+ "script": "CinnabarIsland_EventScript_Woman",
"flag": "0"
},
{
@@ -47,7 +47,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_EventScript_167208",
+ "script": "CinnabarIsland_EventScript_OldMan",
"flag": "0"
},
{
@@ -122,7 +122,7 @@
"elevation": 3,
"var": "VAR_TEMP_1",
"var_value": 0,
- "script": "CinnabarIsland_EventScript_1671CA"
+ "script": "CinnabarIsland_EventScript_GymDoorLocked"
}
],
"bg_events": [
@@ -131,28 +131,28 @@
"x": 12,
"y": 3,
"elevation": 0,
- "script": "CinnabarIsland_EventScript_167211"
+ "script": "CinnabarIsland_EventScript_IslandSign"
},
{
"type": "bg_event_type_0",
"x": 9,
"y": 9,
"elevation": 0,
- "script": "CinnabarIsland_EventScript_16721A"
+ "script": "CinnabarIsland_EventScript_PokemonLabSign"
},
{
"type": "bg_event_type_0",
"x": 22,
"y": 5,
"elevation": 0,
- "script": "CinnabarIsland_EventScript_167223"
+ "script": "CinnabarIsland_EventScript_GymSign"
},
{
"type": "bg_event_type_0",
"x": 10,
"y": 9,
"elevation": 0,
- "script": "CinnabarIsland_EventScript_16721A"
+ "script": "CinnabarIsland_EventScript_PokemonLabSign"
}
]
}
diff --git a/data/maps/CinnabarIsland/scripts.inc b/data/maps/CinnabarIsland/scripts.inc
index 57b039997..e0260dac5 100644
--- a/data/maps/CinnabarIsland/scripts.inc
+++ b/data/maps/CinnabarIsland/scripts.inc
@@ -1,3 +1,6 @@
+.equ LOCALID_BILL, 3
+.equ LOCALID_SEAGALLOP, 4
+
CinnabarIsland_MapScripts:: @ 8166ED6
map_script MAP_SCRIPT_ON_TRANSITION, CinnabarIsland_OnTransition
map_script MAP_SCRIPT_ON_FRAME_TABLE, CinnabarIsland_OnFrame
@@ -5,82 +8,82 @@ CinnabarIsland_MapScripts:: @ 8166ED6
CinnabarIsland_OnTransition:: @ 8166EE1
setworldmapflag FLAG_WORLD_MAP_CINNABAR_ISLAND
- call EventScript_166F5E
+ call CinnabarIsland_EventScript_CheckUnlockGym
compare VAR_MAP_SCENE_CINNABAR_ISLAND, 1
- call_if_eq EventScript_166F24
+ call_if_eq CinnabarIsland_EventScript_ReadyObjectsSailToOneIsland
compare VAR_MAP_SCENE_CINNABAR_ISLAND, 3
- call_if_eq EventScript_166F52
+ call_if_eq CinnabarIsland_EventScript_ReadyObjectsReturnFromSeviiIslands
compare VAR_MAP_SCENE_CINNABAR_ISLAND_2, 1
- call_if_eq EventScript_166F0B
+ call_if_eq CinnabarIsland_EventScript_ReadyObjectsSailToOneIslandFromPokeCenter
end
-EventScript_166F0B:: @ 8166F0B
+CinnabarIsland_EventScript_ReadyObjectsSailToOneIslandFromPokeCenter:: @ 8166F0B
savebgm MUS_ANNAI
setflag FLAG_TEMP_2
- setobjectxyperm 3, 15, 12
- setobjectmovementtype 3, 9
- setobjectxyperm 4, 30, 12
+ setobjectxyperm LOCALID_BILL, 15, 12
+ setobjectmovementtype LOCALID_BILL, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_SEAGALLOP, 30, 12
return
-EventScript_166F24:: @ 8166F24
+CinnabarIsland_EventScript_ReadyObjectsSailToOneIsland:: @ 8166F24
getplayerxy VAR_0x8004, VAR_0x8005
compare VAR_0x8004, 18
- goto_if_ge EventScript_166F4A
+ goto_if_ge CinnabarIsland_EventScript_MoveSeagallopDown
setflag FLAG_TEMP_2
- setobjectxyperm 3, 18, 12
- setobjectmovementtype 3, 7
- setobjectxyperm 4, 30, 12
+ setobjectxyperm LOCALID_BILL, 18, 12
+ setobjectmovementtype LOCALID_BILL, MOVEMENT_TYPE_FACE_UP
+ setobjectxyperm LOCALID_SEAGALLOP, 30, 12
return
-EventScript_166F4A:: @ 8166F4A
- setobjectxyperm 4, 30, 8
+CinnabarIsland_EventScript_MoveSeagallopDown:: @ 8166F4A
+ setobjectxyperm LOCALID_SEAGALLOP, 30, 8
return
-EventScript_166F52:: @ 8166F52
- setobjectxyperm 3, 21, 8
- setobjectmovementtype 3, 7
+CinnabarIsland_EventScript_ReadyObjectsReturnFromSeviiIslands:: @ 8166F52
+ setobjectxyperm LOCALID_BILL, 21, 8
+ setobjectmovementtype LOCALID_BILL, MOVEMENT_TYPE_FACE_UP
return
-EventScript_166F5E:: @ 8166F5E
- goto_if_set FLAG_HIDE_POKEMON_MANSION_B1F_SECRET_KEY, EventScript_166F68
+CinnabarIsland_EventScript_CheckUnlockGym:: @ 8166F5E
+ goto_if_set FLAG_HIDE_POKEMON_MANSION_B1F_SECRET_KEY, CinnabarIsland_EventScript_UnlockGym
return
-EventScript_166F68:: @ 8166F68
+CinnabarIsland_EventScript_UnlockGym:: @ 8166F68
setvar VAR_TEMP_1, 1
return
CinnabarIsland_OnFrame:: @ 8166F6E
- map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND_2, 1, EventScript_166F88
- map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND, 1, EventScript_166FCD
- map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND, 3, EventScript_166FA0
+ map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND_2, 1, CinnabarIsland_EventScript_ExitPokeCenterForOneIsland
+ map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND, 1, CinnabarIsland_EventScript_BillScene
+ map_script_2 VAR_MAP_SCENE_CINNABAR_ISLAND, 3, CinnabarIsland_EventScript_ReturnFromSeviiIslands
.2byte 0
-EventScript_166F88:: @ 8166F88
+CinnabarIsland_EventScript_ExitPokeCenterForOneIsland:: @ 8166F88
lockall
clearflag FLAG_SPECIAL_FLAG_0x4001
savebgm MUS_DUMMY
textcolor 0
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_2, 2
delay 20
- call EventScript_1670E6
+ call CinnabarIsland_EventScript_SailToOneIsland
releaseall
end
-EventScript_166FA0:: @ 8166FA0
+CinnabarIsland_EventScript_ReturnFromSeviiIslands:: @ 8166FA0
lockall
textcolor 0
- msgbox gUnknown_8180F09
+ msgbox CinnabarIsland_Text_IfYouHaveTriPassYouCanGoAgain
closemessage
- applymovement 3, Movement_166FC6
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillExit
waitmovement 0
- removeobject 3
+ removeobject LOCALID_BILL
setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 4
setflag FLAG_HIDE_TWO_ISLAND_GAME_CORNER_LOSTELLE
clearflag FLAG_HIDE_LOSTELLE_IN_HER_HOME
releaseall
end
-Movement_166FC6:: @ 8166FC6
+CinnabarIsland_Movement_BillExit:: @ 8166FC6
walk_down
walk_down
walk_down
@@ -89,72 +92,72 @@ Movement_166FC6:: @ 8166FC6
walk_down
step_end
-EventScript_166FCD:: @ 8166FCD
+CinnabarIsland_EventScript_BillScene:: @ 8166FCD
lockall
textcolor 0
- call_if_unset FLAG_TEMP_2, EventScript_167032
- call_if_set FLAG_TEMP_2, EventScript_16703D
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BillFacePlayer1
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BillFacePlayer2
playse SE_PIN
- applymovement 3, Movement_ExclamationMark
+ applymovement LOCALID_BILL, Movement_ExclamationMark
waitmovement 0
- applymovement 3, Movement_Delay48
+ applymovement LOCALID_BILL, Movement_Delay48
waitmovement 0
- call_if_unset FLAG_TEMP_2, EventScript_167048
- call_if_set FLAG_TEMP_2, EventScript_167053
- msgbox gUnknown_8180C90
- msgbox gUnknown_8180CAA, MSGBOX_YESNO
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BillApproachPlayer1
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BillApproachPlayer2
+ msgbox CinnabarIsland_Text_HeyIfItIsntPlayer
+ msgbox CinnabarIsland_Text_ComeWithMeToOneIsland, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_167068
+ goto_if_eq CinnabarIsland_EventScript_AgreeSailToOneIsland
compare VAR_RESULT, NO
- goto_if_eq EventScript_167078
+ goto_if_eq CinnabarIsland_EventScript_DeclineSailToOneIsland
end
-EventScript_167032:: @ 8167032
- applymovement 3, Movement_WalkInPlaceFastestUp
+CinnabarIsland_EventScript_BillFacePlayer1:: @ 8167032
+ applymovement LOCALID_BILL, Movement_WalkInPlaceFastestUp
waitmovement 0
return
-EventScript_16703D:: @ 816703D
- applymovement 3, Movement_WalkInPlaceFastestLeft
+CinnabarIsland_EventScript_BillFacePlayer2:: @ 816703D
+ applymovement LOCALID_BILL, Movement_WalkInPlaceFastestLeft
waitmovement 0
return
-EventScript_167048:: @ 8167048
- applymovement 3, Movement_1671A4
+CinnabarIsland_EventScript_BillApproachPlayer1:: @ 8167048
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillApproachPlayer1
waitmovement 0
return
-EventScript_167053:: @ 8167053
- applymovement 3, Movement_1671A6
+CinnabarIsland_EventScript_BillApproachPlayer2:: @ 8167053
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillApproachPlayer2
waitmovement 0
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
waitmovement 0
return
-EventScript_167068:: @ 8167068
- msgbox gUnknown_8180DDD
+CinnabarIsland_EventScript_AgreeSailToOneIsland:: @ 8167068
+ msgbox CinnabarIsland_Text_AllRightLetsGo
closemessage
- call EventScript_1670E6
+ call CinnabarIsland_EventScript_SailToOneIsland
releaseall
end
-EventScript_167078:: @ 8167078
- msgbox gUnknown_8180DF8
+CinnabarIsland_EventScript_DeclineSailToOneIsland:: @ 8167078
+ msgbox CinnabarIsland_Text_IllBeWaitingInPokeCenter
closemessage
- call_if_unset FLAG_TEMP_2, EventScript_1670A0
- call_if_set FLAG_TEMP_2, EventScript_1670B3
- removeobject 3
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BillExitToPokeCenter
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BillReturnToPokeCenter
+ removeobject LOCALID_BILL
setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 2
clearflag FLAG_HIDE_CINNABAR_POKECENTER_BILL
releaseall
end
-EventScript_1670A0:: @ 81670A0
- applymovement 3, Movement_1670AB
+CinnabarIsland_EventScript_BillExitToPokeCenter:: @ 81670A0
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillExitToPokeCenter
waitmovement 0
return
-Movement_1670AB:: @ 81670AB
+CinnabarIsland_Movement_BillExitToPokeCenter:: @ 81670AB
walk_right
walk_down
walk_down
@@ -164,46 +167,47 @@ Movement_1670AB:: @ 81670AB
walk_down
step_end
-EventScript_1670B3:: @ 81670B3
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1670DB
- applymovement 3, Movement_1670DE
+CinnabarIsland_EventScript_BillReturnToPokeCenter:: @ 81670B3
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_Movement_PlayerWatchBillExit
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillApproachDoor
waitmovement 0
opendoor 14, 11
waitdooranim
- applymovement 3, Movement_1670E2
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillReEnterPokeCenter
waitmovement 0
closedoor 14, 11
waitdooranim
return
-Movement_1670DB:: @ 81670DB
+CinnabarIsland_Movement_PlayerWatchBillExit:: @ 81670DB
walk_left
walk_in_place_fastest_right
step_end
-Movement_1670DE:: @ 81670DE
+CinnabarIsland_Movement_BillApproachDoor:: @ 81670DE
delay_16
walk_left
walk_in_place_fastest_up
step_end
-Movement_1670E2:: @ 81670E2
+CinnabarIsland_Movement_BillReEnterPokeCenter:: @ 81670E2
walk_up
delay_4
set_invisible
step_end
-EventScript_1670E6:: @ 81670E6
- call_if_set FLAG_TEMP_2, EventScript_167142
- addobject 4
- call_if_unset FLAG_TEMP_2, EventScript_167154
- call_if_set FLAG_TEMP_2, EventScript_167166
- msgbox gUnknown_8180EAD
+@ Can be triggered outside, or after talking to Bill in the poke center
+CinnabarIsland_EventScript_SailToOneIsland:: @ 81670E6
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_ApproachShore
+ addobject LOCALID_SEAGALLOP
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BoatArrive
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BoatArriveExitedPokeCenter
+ msgbox CinnabarIsland_Text_MyPalsBoatArrived
closemessage
- call_if_unset FLAG_TEMP_2, EventScript_167171
- call_if_set FLAG_TEMP_2, EventScript_167183
+ call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BoardBoat
+ call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BoardBoatExitedPokeCenter
setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 2
- removeobject 3
+ removeobject LOCALID_BILL
delay 40
setflag FLAG_HIDE_CINNABAR_SEAGALLOP
setvar VAR_MAP_SCENE_ONE_ISLAND_HARBOR, 1
@@ -212,36 +216,36 @@ EventScript_1670E6:: @ 81670E6
goto EventScript_SetSail
end
-EventScript_167142:: @ 8167142
- applymovement 3, Movement_1671AF
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1671AF
+CinnabarIsland_EventScript_ApproachShore:: @ 8167142
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_ApproachShore
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_Movement_ApproachShore
waitmovement 0
return
-EventScript_167154:: @ 8167154
- applymovement 3, Movement_1671AA
- applymovement 4, Movement_167195
+CinnabarIsland_EventScript_BoatArrive:: @ 8167154
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillFaceBoat
+ applymovement LOCALID_SEAGALLOP, CinnabarIsland_Movement_BoatArrive
waitmovement 0
return
-EventScript_167166:: @ 8167166
- applymovement 4, Movement_167195
+CinnabarIsland_EventScript_BoatArriveExitedPokeCenter:: @ 8167166
+ applymovement LOCALID_SEAGALLOP, CinnabarIsland_Movement_BoatArrive
waitmovement 0
return
-EventScript_167171:: @ 8167171
- applymovement 3, Movement_16719D
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1671BA
+CinnabarIsland_EventScript_BoardBoat:: @ 8167171
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillBoardBoat
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_Movement_PlayerBoardBoat
waitmovement 0
return
-EventScript_167183:: @ 8167183
- applymovement 3, Movement_1671B6
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1671C4
+CinnabarIsland_EventScript_BoardBoatExitedPokeCenter:: @ 8167183
+ applymovement LOCALID_BILL, CinnabarIsland_Movement_BillBoardBoatFromShore
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_Movement_PlayerBoardBoatFromShore
waitmovement 0
return
-Movement_167195:: @ 8167195
+CinnabarIsland_Movement_BoatArrive:: @ 8167195
delay_16
delay_16
walk_fast_left
@@ -251,7 +255,7 @@ Movement_167195:: @ 8167195
walk_slowest_left
step_end
-Movement_16719D:: @ 816719D
+CinnabarIsland_Movement_BillBoardBoat:: @ 816719D
walk_right
walk_down
walk_down
@@ -260,24 +264,24 @@ Movement_16719D:: @ 816719D
set_invisible
step_end
-Movement_1671A4:: @ 81671A4
+CinnabarIsland_Movement_BillApproachPlayer1:: @ 81671A4
walk_up
step_end
-Movement_1671A6:: @ 81671A6
+CinnabarIsland_Movement_BillApproachPlayer2:: @ 81671A6
walk_left
walk_left
walk_left
step_end
-Movement_1671AA:: @ 81671AA
+CinnabarIsland_Movement_BillFaceBoat:: @ 81671AA
delay_16
delay_16
delay_8
walk_in_place_fastest_right
step_end
-Movement_1671AF:: @ 81671AF
+CinnabarIsland_Movement_ApproachShore:: @ 81671AF
walk_right
walk_right
walk_right
@@ -286,13 +290,13 @@ Movement_1671AF:: @ 81671AF
walk_right
step_end
-Movement_1671B6:: @ 81671B6
+CinnabarIsland_Movement_BillBoardBoatFromShore:: @ 81671B6
walk_right
delay_4
set_invisible
step_end
-Movement_1671BA:: @ 81671BA
+CinnabarIsland_Movement_PlayerBoardBoat:: @ 81671BA
walk_down
walk_right
walk_down
@@ -304,7 +308,7 @@ Movement_1671BA:: @ 81671BA
set_invisible
step_end
-Movement_1671C4:: @ 81671C4
+CinnabarIsland_Movement_PlayerBoardBoatFromShore:: @ 81671C4
walk_right
delay_4
walk_right
@@ -312,45 +316,46 @@ Movement_1671C4:: @ 81671C4
set_invisible
step_end
-CinnabarIsland_EventScript_1671CA:: @ 81671CA
+@ Triggered when VAR_TEMP_1 is 0
+CinnabarIsland_EventScript_GymDoorLocked:: @ 81671CA
lockall
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestUp
waitmovement 0
delay 20
- msgbox gUnknown_8180B20
+ msgbox CinnabarIsland_Text_DoorIsLocked
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1671ED
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_Movement_ForcePlayerFromDoor
waitmovement 0
releaseall
end
-Movement_1671ED:: @ 81671ED
+CinnabarIsland_Movement_ForcePlayerFromDoor:: @ 81671ED
walk_down
step_end
-CinnabarIsland_EventScript_1671EF:: @ 81671EF
+CinnabarIsland_EventScript_Woman:: @ 81671EF
lock
faceplayer
famechecker FAMECHECKER_BLAINE, 3
- msgbox gUnknown_8180B34
+ msgbox CinnabarIsland_Text_BlaineLivedHereSinceBeforeLab
release
end
-CinnabarIsland_EventScript_167208:: @ 8167208
- msgbox gUnknown_8180BA0, MSGBOX_NPC
+CinnabarIsland_EventScript_OldMan:: @ 8167208
+ msgbox CinnabarIsland_Text_ScientistsExperimentInMansion, MSGBOX_NPC
end
-CinnabarIsland_EventScript_167211:: @ 8167211
- msgbox gUnknown_8180C0D, MSGBOX_SIGN
+CinnabarIsland_EventScript_IslandSign:: @ 8167211
+ msgbox CinnabarIsland_Text_IslandSign, MSGBOX_SIGN
end
-CinnabarIsland_EventScript_16721A:: @ 816721A
- msgbox gUnknown_8180C3E, MSGBOX_SIGN
+CinnabarIsland_EventScript_PokemonLabSign:: @ 816721A
+ msgbox CinnabarIsland_Text_PokemonLab, MSGBOX_SIGN
end
-CinnabarIsland_EventScript_167223:: @ 8167223
+CinnabarIsland_EventScript_GymSign:: @ 8167223
lockall
famechecker FAMECHECKER_BLAINE, 0
- msgbox gUnknown_8180C4A
+ msgbox CinnabarIsland_Text_GymSign
releaseall
end
diff --git a/data/maps/CinnabarIsland/text.inc b/data/maps/CinnabarIsland/text.inc
index 26ce19f09..08ea3e44b 100644
--- a/data/maps/CinnabarIsland/text.inc
+++ b/data/maps/CinnabarIsland/text.inc
@@ -1,35 +1,35 @@
-gUnknown_8180B20:: @ 8180B20
+CinnabarIsland_Text_DoorIsLocked:: @ 8180B20
.string "The door is locked…$"
-gUnknown_8180B34:: @ 8180B34
+CinnabarIsland_Text_BlaineLivedHereSinceBeforeLab:: @ 8180B34
.string "CINNABAR GYM's BLAINE is quite the\n"
.string "odd fellow.\p"
.string "He's lived on the island since way\n"
.string "before the LAB was built.$"
-gUnknown_8180BA0:: @ 8180BA0
+CinnabarIsland_Text_ScientistsExperimentInMansion:: @ 8180BA0
.string "Scientists conduct experiments \n"
.string "in the burned-out building.\p"
.string "You know, the one they call the\n"
.string "POKéMON MANSION.$"
-gUnknown_8180C0D:: @ 8180C0D
+CinnabarIsland_Text_IslandSign:: @ 8180C0D
.string "CINNABAR ISLAND\n"
.string "The Fiery Town of Burning Desire$"
-gUnknown_8180C3E:: @ 8180C3E
+CinnabarIsland_Text_PokemonLab:: @ 8180C3E
.string "POKéMON LAB$"
-gUnknown_8180C4A:: @ 8180C4A
+CinnabarIsland_Text_GymSign:: @ 8180C4A
.string "CINNABAR ISLAND POKéMON GYM\n"
.string "LEADER: BLAINE\l"
.string "The Hotheaded Quiz Master!$"
-gUnknown_8180C90:: @ 8180C90
+CinnabarIsland_Text_HeyIfItIsntPlayer:: @ 8180C90
.string "Huh?\n"
.string "Hey, if it isn't {PLAYER}!$"
-gUnknown_8180CAA:: @ 8180CAA
+CinnabarIsland_Text_ComeWithMeToOneIsland:: @ 8180CAA
.string "Look, it's me, BILL.\n"
.string "Long time no see!\p"
.string "I hope you're still using my\n"
@@ -43,11 +43,11 @@ gUnknown_8180CAA:: @ 8180CAA
.string "How about it?\n"
.string "Do you feel like coming with me?$"
-gUnknown_8180DDD:: @ 8180DDD
+CinnabarIsland_Text_AllRightLetsGo:: @ 8180DDD
.string "All right, then.\n"
.string "Let's go!$"
-gUnknown_8180DF8:: @ 8180DF8
+CinnabarIsland_Text_IllBeWaitingInPokeCenter:: @ 8180DF8
.string "What, are you too busy?\p"
.string "Well, all right.\n"
.string "The boat hasn't arrived yet anyway.\p"
@@ -56,13 +56,13 @@ gUnknown_8180DF8:: @ 8180DF8
.string "Come see me when you're done with\n"
.string "your business here.$"
-gUnknown_8180EAD:: @ 8180EAD
+CinnabarIsland_Text_MyPalsBoatArrived:: @ 8180EAD
.string "Looks like my pal's boat arrived,\n"
.string "too.\p"
.string "He sent it specially here to\n"
.string "CINNABAR to pick me up.$"
-gUnknown_8180F09:: @ 8180F09
+CinnabarIsland_Text_IfYouHaveTriPassYouCanGoAgain:: @ 8180F09
.string "Hey, wasn't that a long cruise?\p"
.string "My buddy CELIO seemed to enjoy\n"
.string "your company.\p"
diff --git a/data/maps/CinnabarIsland_Gym/map.json b/data/maps/CinnabarIsland_Gym/map.json
index 36ef2b0cf..05ba07431 100644
--- a/data/maps/CinnabarIsland_Gym/map.json
+++ b/data/maps/CinnabarIsland_Gym/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 1,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DB27",
+ "script": "CinnabarIsland_Gym_EventScript_Quinn",
"flag": "0"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 1,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DA7F",
+ "script": "CinnabarIsland_Gym_EventScript_Erik",
"flag": "0"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 1,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DA96",
+ "script": "CinnabarIsland_Gym_EventScript_Avery",
"flag": "0"
},
{
@@ -62,7 +62,7 @@
"movement_range_y": 1,
"trainer_type": 1,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DB53",
+ "script": "CinnabarIsland_Gym_EventScript_Ramon",
"flag": "0"
},
{
@@ -75,7 +75,7 @@
"movement_range_y": 1,
"trainer_type": 1,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DAC2",
+ "script": "CinnabarIsland_Gym_EventScript_Derek",
"flag": "0"
},
{
@@ -88,7 +88,7 @@
"movement_range_y": 1,
"trainer_type": 1,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DB7F",
+ "script": "CinnabarIsland_Gym_EventScript_Dusty",
"flag": "0"
},
{
@@ -101,7 +101,7 @@
"movement_range_y": 1,
"trainer_type": 1,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DAFB",
+ "script": "CinnabarIsland_Gym_EventScript_Zac",
"flag": "0"
},
{
@@ -114,7 +114,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16D9D4",
+ "script": "CinnabarIsland_Gym_EventScript_Blaine",
"flag": "0"
},
{
@@ -127,7 +127,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DBAB",
+ "script": "CinnabarIsland_Gym_EventScript_GymGuy",
"flag": "0"
}
],
@@ -161,105 +161,105 @@
"x": 23,
"y": 20,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DBCA"
+ "script": "CinnabarIsland_Gym_EventScript_GymStatue"
},
{
"type": "bg_event_type_0",
"x": 27,
"y": 20,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DBCA"
+ "script": "CinnabarIsland_Gym_EventScript_GymStatue"
},
{
"type": "bg_event_type_1",
"x": 22,
"y": 10,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DBE8"
+ "script": "CinnabarIsland_Gym_EventScript_Quz1Left"
},
{
"type": "bg_event_type_1",
"x": 23,
"y": 10,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DBF4"
+ "script": "CinnabarIsland_Gym_EventScript_Quz1Right"
},
{
"type": "bg_event_type_1",
"x": 15,
"y": 2,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DCDD"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz2Left"
},
{
"type": "bg_event_type_1",
"x": 16,
"y": 2,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DCE9"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz2Right"
},
{
"type": "bg_event_type_1",
"x": 13,
"y": 10,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DDBB"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz3Left"
},
{
"type": "bg_event_type_1",
"x": 14,
"y": 10,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DDC7"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz3Right"
},
{
"type": "bg_event_type_1",
"x": 13,
"y": 17,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DE92"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz4Left"
},
{
"type": "bg_event_type_1",
"x": 14,
"y": 17,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DE9E"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz4Right"
},
{
"type": "bg_event_type_1",
"x": 1,
"y": 18,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DF69"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz5Left"
},
{
"type": "bg_event_type_1",
"x": 2,
"y": 18,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16DF75"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz5Right"
},
{
"type": "bg_event_type_1",
"x": 1,
"y": 10,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16E040"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz6Left"
},
{
"type": "bg_event_type_1",
"x": 2,
"y": 10,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_16E04C"
+ "script": "CinnabarIsland_Gym_EventScript_Quiz6Right"
},
{
"type": "bg_event_type_1",
"x": 3,
"y": 1,
"elevation": 0,
- "script": "CinnabarIsland_Gym_EventScript_1ACF07"
+ "script": "CinnabarIsland_Gym_EventScript_BlaineFujiPhoto"
}
]
}
diff --git a/data/maps/CinnabarIsland_Gym/scripts.inc b/data/maps/CinnabarIsland_Gym/scripts.inc
index dc4633df7..f31d6f7bb 100644
--- a/data/maps/CinnabarIsland_Gym/scripts.inc
+++ b/data/maps/CinnabarIsland_Gym/scripts.inc
@@ -3,57 +3,57 @@ CinnabarIsland_Gym_MapScripts:: @ 816D94B
.byte 0
CinnabarIsland_Gym_OnLoad:: @ 816D951
- goto_if_set FLAG_DEFEATED_BLAINE, EventScript_16D991
- call_if_set FLAG_CINNABAR_GYM_QUIZ_1, EventScript_16D9B0
- call_if_set FLAG_CINNABAR_GYM_QUIZ_2, EventScript_16D9B6
- call_if_set FLAG_CINNABAR_GYM_QUIZ_3, EventScript_16D9BC
- call_if_set FLAG_CINNABAR_GYM_QUIZ_4, EventScript_16D9C2
- call_if_set FLAG_CINNABAR_GYM_QUIZ_5, EventScript_16D9C8
- call_if_set FLAG_CINNABAR_GYM_QUIZ_6, EventScript_16D9CE
+ goto_if_set FLAG_DEFEATED_BLAINE, CinnabarIsland_Gym_OnLoadOpenAllDoors
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_1, CinnabarIsland_Gym_OnLoadOpenDoor1
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_2, CinnabarIsland_Gym_OnLoadOpenDoor2
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_3, CinnabarIsland_Gym_OnLoadOpenDoor3
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_4, CinnabarIsland_Gym_OnLoadOpenDoor4
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_5, CinnabarIsland_Gym_OnLoadOpenDoor5
+ call_if_set FLAG_CINNABAR_GYM_QUIZ_6, CinnabarIsland_Gym_OnLoadOpenDoor6
end
-EventScript_16D991:: @ 816D991
- call EventScript_16E117
- call EventScript_16E157
- call EventScript_16E197
- call EventScript_16E1D7
- call EventScript_16E1F3
- call EventScript_16E233
+CinnabarIsland_Gym_OnLoadOpenAllDoors:: @ 816D991
+ call CinnabarIsland_Gym_EventScript_OpenDoor1
+ call CinnabarIsland_Gym_EventScript_OpenDoor2
+ call CinnabarIsland_Gym_EventScript_OpenDoor3
+ call CinnabarIsland_Gym_EventScript_OpenDoor4
+ call CinnabarIsland_Gym_EventScript_OpenDoor5
+ call CinnabarIsland_Gym_EventScript_OpenDoor6
end
-EventScript_16D9B0:: @ 816D9B0
- call EventScript_16E117
+CinnabarIsland_Gym_OnLoadOpenDoor1:: @ 816D9B0
+ call CinnabarIsland_Gym_EventScript_OpenDoor1
return
-EventScript_16D9B6:: @ 816D9B6
- call EventScript_16E157
+CinnabarIsland_Gym_OnLoadOpenDoor2:: @ 816D9B6
+ call CinnabarIsland_Gym_EventScript_OpenDoor2
return
-EventScript_16D9BC:: @ 816D9BC
- call EventScript_16E197
+CinnabarIsland_Gym_OnLoadOpenDoor3:: @ 816D9BC
+ call CinnabarIsland_Gym_EventScript_OpenDoor3
return
-EventScript_16D9C2:: @ 816D9C2
- call EventScript_16E1D7
+CinnabarIsland_Gym_OnLoadOpenDoor4:: @ 816D9C2
+ call CinnabarIsland_Gym_EventScript_OpenDoor4
return
-EventScript_16D9C8:: @ 816D9C8
- call EventScript_16E1F3
+CinnabarIsland_Gym_OnLoadOpenDoor5:: @ 816D9C8
+ call CinnabarIsland_Gym_EventScript_OpenDoor5
return
-EventScript_16D9CE:: @ 816D9CE
- call EventScript_16E233
+CinnabarIsland_Gym_OnLoadOpenDoor6:: @ 816D9CE
+ call CinnabarIsland_Gym_EventScript_OpenDoor6
return
-CinnabarIsland_Gym_EventScript_16D9D4:: @ 816D9D4
+CinnabarIsland_Gym_EventScript_Blaine:: @ 816D9D4
famechecker FAMECHECKER_BLAINE, FCPICKSTATE_COLORED, UpdatePickStateFromSpecialVar8005
- trainerbattle_single TRAINER_LEADER_BLAINE, Text_199543, Text_1995FA, EventScript_16DA06, NO_MUSIC
- goto_if_unset FLAG_GOT_TM38_FROM_BLAINE, EventScript_16DA34
- msgbox gUnknown_819971D
+ trainerbattle_single TRAINER_LEADER_BLAINE, CinnabarIsland_Gym_Text_BlaineIntro, CinnabarIsland_Gym_Text_BlaineDefeat, CinnabarIsland_Gym_EventScript_DefeatedBlaine, NO_MUSIC
+ goto_if_unset FLAG_GOT_TM38_FROM_BLAINE, CinnabarIsland_Gym_EventScript_GiveTM38
+ msgbox CinnabarIsland_Gym_Text_BlainePostBattle
release
end
-EventScript_16DA06:: @ 816DA06
+CinnabarIsland_Gym_EventScript_DefeatedBlaine:: @ 816DA06
famechecker FAMECHECKER_BLAINE, 1
setflag FLAG_DEFEATED_BLAINE
setflag FLAG_BADGE07_GET
@@ -61,675 +61,675 @@ EventScript_16DA06:: @ 816DA06
setvar VAR_MAP_SCENE_CINNABAR_ISLAND, 1
clearflag FLAG_HIDE_CINNABAR_BILL
set_gym_trainers 7
- goto EventScript_16DA34
+ goto CinnabarIsland_Gym_EventScript_GiveTM38
end
-EventScript_16DA34:: @ 816DA34
- msgbox gUnknown_819969E
+CinnabarIsland_Gym_EventScript_GiveTM38:: @ 816DA34
+ msgbox CinnabarIsland_Gym_Text_ExplainVolcanoBadge
checkitemspace ITEM_TM38, 1
compare VAR_RESULT, FALSE
- goto_if_eq EventScript_16DA75
- giveitem_msg gUnknown_81996FF, ITEM_TM38
+ goto_if_eq CinnabarIsland_Gym_EventScript_NoRoomForTM38
+ giveitem_msg CinnabarIsland_Gym_Text_ReceivedTM38FromBlaine, ITEM_TM38
setflag FLAG_GOT_TM38_FROM_BLAINE
- msgbox gUnknown_8199652
+ msgbox CinnabarIsland_Gym_Text_FireBlastIsUltimateFireMove
release
end
-EventScript_16DA75:: @ 816DA75
- msgbox gUnknown_8199789
+CinnabarIsland_Gym_EventScript_NoRoomForTM38:: @ 816DA75
+ msgbox CinnabarIsland_Gym_Text_MakeSpaceForThis
release
end
-CinnabarIsland_Gym_EventScript_16DA7F:: @ 816DA7F
- trainerbattle_single TRAINER_SUPER_NERD_ERIK, Text_1997A5, Text_1997D6
- msgbox gUnknown_81997EA, MSGBOX_AUTOCLOSE
+CinnabarIsland_Gym_EventScript_Erik:: @ 816DA7F
+ trainerbattle_single TRAINER_SUPER_NERD_ERIK, CinnabarIsland_Gym_Text_ErikIntro, CinnabarIsland_Gym_Text_ErikDefeat
+ msgbox CinnabarIsland_Gym_Text_ErikPostBattle, MSGBOX_AUTOCLOSE
end
-CinnabarIsland_Gym_EventScript_16DA96:: @ 816DA96
- trainerbattle_single TRAINER_SUPER_NERD_AVERY, Text_1998BD, Text_1998ED, EventScript_16DAB1
- msgbox gUnknown_8199911, MSGBOX_AUTOCLOSE
+CinnabarIsland_Gym_EventScript_Avery:: @ 816DA96
+ trainerbattle_single TRAINER_SUPER_NERD_AVERY, CinnabarIsland_Gym_Text_AveryIntro, CinnabarIsland_Gym_Text_AveryDefeat, CinnabarIsland_Gym_EventScript_DefeatedAvery
+ msgbox CinnabarIsland_Gym_Text_AveryPostBattle, MSGBOX_AUTOCLOSE
end
-EventScript_16DAB1:: @ 816DAB1
- call_if_unset FLAG_CINNABAR_GYM_QUIZ_2, EventScript_16DABC
+CinnabarIsland_Gym_EventScript_DefeatedAvery:: @ 816DAB1
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_2, CinnabarIsland_Gym_EventScript_Quiz2CompleteTrainer
release
end
-EventScript_16DABC:: @ 816DABC
- call EventScript_16DD31
+CinnabarIsland_Gym_EventScript_Quiz2CompleteTrainer:: @ 816DABC
+ call CinnabarIsland_Gym_EventScript_Quiz2Complete
return
-CinnabarIsland_Gym_EventScript_16DAC2:: @ 816DAC2
- trainerbattle_single TRAINER_SUPER_NERD_DEREK, Text_1999B7, Text_1999DB, EventScript_16DAEA
+CinnabarIsland_Gym_EventScript_Derek:: @ 816DAC2
+ trainerbattle_single TRAINER_SUPER_NERD_DEREK, CinnabarIsland_Gym_Text_DerekIntro, CinnabarIsland_Gym_Text_DerekDefeat, CinnabarIsland_Gym_EventScript_DefeatedDerek
famechecker FAMECHECKER_BLAINE, 2
- msgbox gUnknown_81999DF, MSGBOX_AUTOCLOSE
+ msgbox CinnabarIsland_Gym_Text_DerekPostBattle, MSGBOX_AUTOCLOSE
end
-EventScript_16DAEA:: @ 816DAEA
- call_if_unset FLAG_CINNABAR_GYM_QUIZ_4, EventScript_16DAF5
+CinnabarIsland_Gym_EventScript_DefeatedDerek:: @ 816DAEA
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_4, CinnabarIsland_Gym_EventScript_Quiz4CompleteTrainer
release
end
-EventScript_16DAF5:: @ 816DAF5
- call EventScript_16DEE6
+CinnabarIsland_Gym_EventScript_Quiz4CompleteTrainer:: @ 816DAF5
+ call CinnabarIsland_Gym_EventScript_Quiz4Complete
return
-CinnabarIsland_Gym_EventScript_16DAFB:: @ 816DAFB
- trainerbattle_single TRAINER_SUPER_NERD_ZAC, Text_199AFC, Text_199B16, EventScript_16DB16
- msgbox gUnknown_8199B27, MSGBOX_AUTOCLOSE
+CinnabarIsland_Gym_EventScript_Zac:: @ 816DAFB
+ trainerbattle_single TRAINER_SUPER_NERD_ZAC, CinnabarIsland_Gym_Text_ZacIntro, CinnabarIsland_Gym_Text_ZacDefeat, CinnabarIsland_Gym_EventScript_DefeatedZac
+ msgbox CinnabarIsland_Gym_Text_ZacPostBattle, MSGBOX_AUTOCLOSE
end
-EventScript_16DB16:: @ 816DB16
- call_if_unset FLAG_CINNABAR_GYM_QUIZ_6, EventScript_16DB21
+CinnabarIsland_Gym_EventScript_DefeatedZac:: @ 816DB16
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_6, CinnabarIsland_Gym_EventScript_Quiz6CompleteTrainer
release
end
-EventScript_16DB21:: @ 816DB21
- call EventScript_16E094
+CinnabarIsland_Gym_EventScript_Quiz6CompleteTrainer:: @ 816DB21
+ call CinnabarIsland_Gym_EventScript_Quiz6Complete
return
-CinnabarIsland_Gym_EventScript_16DB27:: @ 816DB27
- trainerbattle_single TRAINER_BURGLAR_QUINN, Text_19983F, Text_199870, EventScript_16DB42
- msgbox gUnknown_819987D, MSGBOX_AUTOCLOSE
+CinnabarIsland_Gym_EventScript_Quinn:: @ 816DB27
+ trainerbattle_single TRAINER_BURGLAR_QUINN, CinnabarIsland_Gym_Text_QuinnIntro, CinnabarIsland_Gym_Text_QuinnDefeat, CinnabarIsland_Gym_EventScript_DefeatedQuinn
+ msgbox CinnabarIsland_Gym_Text_QuinnPostBattle, MSGBOX_AUTOCLOSE
end
-EventScript_16DB42:: @ 816DB42
- call_if_unset FLAG_CINNABAR_GYM_QUIZ_1, EventScript_16DB4D
+CinnabarIsland_Gym_EventScript_DefeatedQuinn:: @ 816DB42
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_1, CinnabarIsland_Gym_EventScript_Quiz1CompleteTrainer
release
end
-EventScript_16DB4D:: @ 816DB4D
- call EventScript_16DC58
+CinnabarIsland_Gym_EventScript_Quiz1CompleteTrainer:: @ 816DB4D
+ call CinnabarIsland_Gym_EventScript_Quiz1Complete
return
-CinnabarIsland_Gym_EventScript_16DB53:: @ 816DB53
- trainerbattle_single TRAINER_BURGLAR_RAMON, Text_199948, Text_199973, EventScript_16DB6E
- msgbox gUnknown_8199986, MSGBOX_AUTOCLOSE
+CinnabarIsland_Gym_EventScript_Ramon:: @ 816DB53
+ trainerbattle_single TRAINER_BURGLAR_RAMON, CinnabarIsland_Gym_Text_RamonIntro, CinnabarIsland_Gym_Text_RamonDefeat, CinnabarIsland_Gym_EventScript_DefeatedRamon
+ msgbox CinnabarIsland_Gym_Text_RamonPostBattle, MSGBOX_AUTOCLOSE
end
-EventScript_16DB6E:: @ 816DB6E
- call_if_unset FLAG_CINNABAR_GYM_QUIZ_3, EventScript_16DB79
+CinnabarIsland_Gym_EventScript_DefeatedRamon:: @ 816DB6E
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_3, CinnabarIsland_Gym_EventScript_Quiz3CompleteTrainer
release
end
-EventScript_16DB79:: @ 816DB79
- call EventScript_16DE0F
+CinnabarIsland_Gym_EventScript_Quiz3CompleteTrainer:: @ 816DB79
+ call CinnabarIsland_Gym_EventScript_Quiz3Complete
return
-CinnabarIsland_Gym_EventScript_16DB7F:: @ 816DB7F
- trainerbattle_single TRAINER_BURGLAR_DUSTY, Text_199A7F, Text_199AB9, EventScript_16DB9A
- msgbox gUnknown_8199AC9, MSGBOX_AUTOCLOSE
+CinnabarIsland_Gym_EventScript_Dusty:: @ 816DB7F
+ trainerbattle_single TRAINER_BURGLAR_DUSTY, CinnabarIsland_Gym_Text_DustyIntro, CinnabarIsland_Gym_Text_DustyDefeat, CinnabarIsland_Gym_EventScript_DefeatedDusty
+ msgbox CinnabarIsland_Gym_Text_DustyPostBattle, MSGBOX_AUTOCLOSE
end
-EventScript_16DB9A:: @ 816DB9A
- call_if_unset FLAG_CINNABAR_GYM_QUIZ_5, EventScript_16DBA5
+CinnabarIsland_Gym_EventScript_DefeatedDusty:: @ 816DB9A
+ call_if_unset FLAG_CINNABAR_GYM_QUIZ_5, CinnabarIsland_Gym_EventScript_Quiz5CompleteTrainer
release
end
-EventScript_16DBA5:: @ 816DBA5
- call EventScript_16DFBD
+CinnabarIsland_Gym_EventScript_Quiz5CompleteTrainer:: @ 816DBA5
+ call CinnabarIsland_Gym_EventScript_Quiz5Complete
return
-CinnabarIsland_Gym_EventScript_16DBAB:: @ 816DBAB
+CinnabarIsland_Gym_EventScript_GymGuy:: @ 816DBAB
lock
faceplayer
- goto_if_set FLAG_DEFEATED_BLAINE, EventScript_16DBC0
- msgbox gUnknown_8199B81
+ goto_if_set FLAG_DEFEATED_BLAINE, CinnabarIsland_Gym_EventScript_GymGuyPostVictory
+ msgbox CinnabarIsland_Gym_Text_GymGuyAdvice
release
end
-EventScript_16DBC0:: @ 816DBC0
- msgbox gUnknown_8199C0C
+CinnabarIsland_Gym_EventScript_GymGuyPostVictory:: @ 816DBC0
+ msgbox CinnabarIsland_Gym_Text_GymGuyPostVictory
release
end
-CinnabarIsland_Gym_EventScript_16DBCA:: @ 816DBCA
+CinnabarIsland_Gym_EventScript_GymStatue:: @ 816DBCA
lockall
- goto_if_set FLAG_BADGE07_GET, EventScript_16DBDE
- msgbox gUnknown_8199C29
+ goto_if_set FLAG_BADGE07_GET, CinnabarIsland_Gym_EventScript_GymStatuePostVictory
+ msgbox CinnabarIsland_Gym_Text_GymStatue
releaseall
end
-EventScript_16DBDE:: @ 816DBDE
- msgbox gUnknown_8199C62
+CinnabarIsland_Gym_EventScript_GymStatuePostVictory:: @ 816DBDE
+ msgbox CinnabarIsland_Gym_Text_GymStatuePlayerWon
releaseall
end
-CinnabarIsland_Gym_EventScript_16DBE8:: @ 816DBE8
+CinnabarIsland_Gym_EventScript_Quz1Left:: @ 816DBE8
lockall
setvar VAR_TEMP_1, 0
- goto EventScript_16DC00
+ goto CinnabarIsland_Gym_EventScript_Quiz1
end
-CinnabarIsland_Gym_EventScript_16DBF4:: @ 816DBF4
+CinnabarIsland_Gym_EventScript_Quz1Right:: @ 816DBF4
lockall
setvar VAR_TEMP_1, 1
- goto EventScript_16DC00
+ goto CinnabarIsland_Gym_EventScript_Quiz1
end
-EventScript_16DC00:: @ 816DC00
- msgbox gUnknown_8199C9F
- msgbox gUnknown_8199D5A, MSGBOX_YESNO
+CinnabarIsland_Gym_EventScript_Quiz1:: @ 816DC00
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion1, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_16DC43
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz1Correct
compare VAR_RESULT, NO
- goto_if_eq EventScript_16DC6A
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz1Incorrect
end
-EventScript_16DC27:: @ 816DC27
+CinnabarIsland_Gym_EventScript_CorrectAnswer:: @ 816DC27
playfanfare MUS_FANFA1
waitfanfare
- msgbox gUnknown_8199E4F
+ msgbox CinnabarIsland_Gym_Text_CorrectGoOnThrough
return
-EventScript_16DC34:: @ 816DC34
+CinnabarIsland_Gym_EventScript_IncorrectAnswer:: @ 816DC34
waitse
playse SE_BOO
waitse
- msgbox gUnknown_8199E79
+ msgbox CinnabarIsland_Gym_Text_SorryBadCall
closemessage
return
-EventScript_16DC43:: @ 816DC43
- call EventScript_16DC27
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_1, EventScript_16DC68
- call EventScript_16DC58
+CinnabarIsland_Gym_EventScript_Quiz1Correct:: @ 816DC43
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_1, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz1Complete
releaseall
end
-EventScript_16DC58:: @ 816DC58
+CinnabarIsland_Gym_EventScript_Quiz1Complete:: @ 816DC58
playse SE_KI_GASYAN
waitse
- call EventScript_16E117
+ call CinnabarIsland_Gym_EventScript_OpenDoor1
special DrawWholeMapView
setflag FLAG_CINNABAR_GYM_QUIZ_1
return
-EventScript_16DC68:: @ 816DC68
+CinnabarIsland_Gym_EventScript_DoorAlreadyOpen:: @ 816DC68
releaseall
end
-EventScript_16DC6A:: @ 816DC6A
- call EventScript_16DC34
- goto_if_not_defeated TRAINER_BURGLAR_QUINN, EventScript_16DC7A
+CinnabarIsland_Gym_EventScript_Quiz1Incorrect:: @ 816DC6A
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_BURGLAR_QUINN, CinnabarIsland_Gym_EventScript_BattleQuinn
releaseall
end
-EventScript_16DC7A:: @ 816DC7A
+CinnabarIsland_Gym_EventScript_BattleQuinn:: @ 816DC7A
compare VAR_TEMP_1, 0
- call_if_eq EventScript_16DCB4
+ call_if_eq CinnabarIsland_Gym_EventScript_QuinnApproachLeft
compare VAR_TEMP_1, 1
- call_if_eq EventScript_16DCC6
+ call_if_eq CinnabarIsland_Gym_EventScript_QuinnApproachRight
textcolor 0
- msgbox gUnknown_819983F
- trainerbattle_no_intro TRAINER_BURGLAR_QUINN, Text_199870
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_1, EventScript_16DC68
- call EventScript_16DC58
+ msgbox CinnabarIsland_Gym_Text_QuinnIntro
+ trainerbattle_no_intro TRAINER_BURGLAR_QUINN, CinnabarIsland_Gym_Text_QuinnDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_1, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz1Complete
releaseall
end
-EventScript_16DCB4:: @ 816DCB4
+CinnabarIsland_Gym_EventScript_QuinnApproachLeft:: @ 816DCB4
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 1, Movement_16DCD8
+ applymovement 1, CinnabarIsland_Gym_Movement_QuinnApproachLeft
waitmovement 0
return
-EventScript_16DCC6:: @ 816DCC6
+CinnabarIsland_Gym_EventScript_QuinnApproachRight:: @ 816DCC6
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 1, Movement_16DCDB
+ applymovement 1, CinnabarIsland_Gym_Movement_QuinnApproachRight
waitmovement 0
return
-Movement_16DCD8:: @ 816DCD8
+CinnabarIsland_Gym_Movement_QuinnApproachLeft:: @ 816DCD8
walk_left
walk_left
step_end
-Movement_16DCDB:: @ 816DCDB
+CinnabarIsland_Gym_Movement_QuinnApproachRight:: @ 816DCDB
walk_left
step_end
-CinnabarIsland_Gym_EventScript_16DCDD:: @ 816DCDD
+CinnabarIsland_Gym_EventScript_Quiz2Left:: @ 816DCDD
lockall
setvar VAR_TEMP_1, 0
- goto EventScript_16DCF5
+ goto CinnabarIsland_Gym_EventScript_Quiz2
end
-CinnabarIsland_Gym_EventScript_16DCE9:: @ 816DCE9
+CinnabarIsland_Gym_EventScript_Quiz2Right:: @ 816DCE9
lockall
setvar VAR_TEMP_1, 1
- goto EventScript_16DCF5
+ goto CinnabarIsland_Gym_EventScript_Quiz2
end
-EventScript_16DCF5:: @ 816DCF5
- msgbox gUnknown_8199C9F
- msgbox gUnknown_8199D79, MSGBOX_YESNO
+CinnabarIsland_Gym_EventScript_Quiz2:: @ 816DCF5
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion2, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_16DD41
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz2Incorrect
compare VAR_RESULT, NO
- goto_if_eq EventScript_16DD1C
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz2Correct
end
-EventScript_16DD1C:: @ 816DD1C
- call EventScript_16DC27
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_2, EventScript_16DC68
- call EventScript_16DD31
+CinnabarIsland_Gym_EventScript_Quiz2Correct:: @ 816DD1C
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_2, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz2Complete
releaseall
end
-EventScript_16DD31:: @ 816DD31
+CinnabarIsland_Gym_EventScript_Quiz2Complete:: @ 816DD31
playse SE_KI_GASYAN
waitse
- call EventScript_16E157
+ call CinnabarIsland_Gym_EventScript_OpenDoor2
special DrawWholeMapView
setflag FLAG_CINNABAR_GYM_QUIZ_2
return
-EventScript_16DD41:: @ 816DD41
- call EventScript_16DC34
- goto_if_not_defeated TRAINER_SUPER_NERD_AVERY, EventScript_16DD51
+CinnabarIsland_Gym_EventScript_Quiz2Incorrect:: @ 816DD41
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_SUPER_NERD_AVERY, CinnabarIsland_Gym_EventScript_BattleAvery
releaseall
end
-EventScript_16DD51:: @ 816DD51
+CinnabarIsland_Gym_EventScript_BattleAvery:: @ 816DD51
compare VAR_TEMP_1, 0
- call_if_eq EventScript_16DD8B
+ call_if_eq CinnabarIsland_Gym_EventScript_AveryApproachLeft
compare VAR_TEMP_1, 1
- call_if_eq EventScript_16DD9D
+ call_if_eq CinnabarIsland_Gym_EventScript_AveryApproachRight
textcolor 0
- msgbox gUnknown_81998BD
- trainerbattle_no_intro TRAINER_SUPER_NERD_AVERY, Text_1998ED
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_2, EventScript_16DC68
- call EventScript_16DD31
+ msgbox CinnabarIsland_Gym_Text_AveryIntro
+ trainerbattle_no_intro TRAINER_SUPER_NERD_AVERY, CinnabarIsland_Gym_Text_AveryDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_2, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz2Complete
releaseall
end
-EventScript_16DD8B:: @ 816DD8B
- applymovement OBJ_EVENT_ID_PLAYER, Movement_16DDB7
- applymovement 3, Movement_16DDAF
+CinnabarIsland_Gym_EventScript_AveryApproachLeft:: @ 816DD8B
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_Gym_Movement_PlayerFaceAvery
+ applymovement 3, CinnabarIsland_Gym_Movement_AveryApproachLeft
waitmovement 0
return
-EventScript_16DD9D:: @ 816DD9D
- applymovement OBJ_EVENT_ID_PLAYER, Movement_16DDB7
- applymovement 3, Movement_16DDB3
+CinnabarIsland_Gym_EventScript_AveryApproachRight:: @ 816DD9D
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_Gym_Movement_PlayerFaceAvery
+ applymovement 3, CinnabarIsland_Gym_Movement_AveryApproachRight
waitmovement 0
return
-Movement_16DDAF:: @ 816DDAF
+CinnabarIsland_Gym_Movement_AveryApproachLeft:: @ 816DDAF
walk_up
walk_up
walk_left
step_end
-Movement_16DDB3:: @ 816DDB3
+CinnabarIsland_Gym_Movement_AveryApproachRight:: @ 816DDB3
walk_up
walk_up
walk_in_place_fastest_left
step_end
-Movement_16DDB7:: @ 816DDB7
+CinnabarIsland_Gym_Movement_PlayerFaceAvery:: @ 816DDB7
delay_16
delay_16
walk_in_place_fastest_right
step_end
-CinnabarIsland_Gym_EventScript_16DDBB:: @ 816DDBB
+CinnabarIsland_Gym_EventScript_Quiz3Left:: @ 816DDBB
lockall
setvar VAR_TEMP_1, 0
- goto EventScript_16DDD3
+ goto CinnabarIsland_Gym_EventScript_Quiz3
end
-CinnabarIsland_Gym_EventScript_16DDC7:: @ 816DDC7
+CinnabarIsland_Gym_EventScript_Quiz3Right:: @ 816DDC7
lockall
setvar VAR_TEMP_1, 1
- goto EventScript_16DDD3
+ goto CinnabarIsland_Gym_EventScript_Quiz3
end
-EventScript_16DDD3:: @ 816DDD3
- msgbox gUnknown_8199C9F
- msgbox gUnknown_8199DA9, MSGBOX_YESNO
+CinnabarIsland_Gym_EventScript_Quiz3:: @ 816DDD3
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion3, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_16DE1F
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz3Incorrect
compare VAR_RESULT, NO
- goto_if_eq EventScript_16DDFA
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz3Correct
end
-EventScript_16DDFA:: @ 816DDFA
- call EventScript_16DC27
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_3, EventScript_16DC68
- call EventScript_16DE0F
+CinnabarIsland_Gym_EventScript_Quiz3Correct:: @ 816DDFA
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_3, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz3Complete
releaseall
end
-EventScript_16DE0F:: @ 816DE0F
+CinnabarIsland_Gym_EventScript_Quiz3Complete:: @ 816DE0F
playse SE_KI_GASYAN
waitse
- call EventScript_16E197
+ call CinnabarIsland_Gym_EventScript_OpenDoor3
special DrawWholeMapView
setflag FLAG_CINNABAR_GYM_QUIZ_3
return
-EventScript_16DE1F:: @ 816DE1F
- call EventScript_16DC34
- goto_if_not_defeated TRAINER_BURGLAR_RAMON, EventScript_16DE2F
+CinnabarIsland_Gym_EventScript_Quiz3Incorrect:: @ 816DE1F
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_BURGLAR_RAMON, CinnabarIsland_Gym_EventScript_BattleRamon
releaseall
end
-EventScript_16DE2F:: @ 816DE2F
+CinnabarIsland_Gym_EventScript_BattleRamon:: @ 816DE2F
compare VAR_TEMP_1, 0
- call_if_eq EventScript_16DE69
+ call_if_eq CinnabarIsland_Gym_EventScript_RamonApproachLeft
compare VAR_TEMP_1, 1
- call_if_eq EventScript_16DE7B
+ call_if_eq CinnabarIsland_Gym_EventScript_RamonApproachRight
textcolor 0
- msgbox gUnknown_8199948
- trainerbattle_no_intro TRAINER_BURGLAR_RAMON, Text_199973
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_3, EventScript_16DC68
- call EventScript_16DE0F
+ msgbox CinnabarIsland_Gym_Text_RamonIntro
+ trainerbattle_no_intro TRAINER_BURGLAR_RAMON, CinnabarIsland_Gym_Text_RamonDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_3, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz3Complete
releaseall
end
-EventScript_16DE69:: @ 816DE69
+CinnabarIsland_Gym_EventScript_RamonApproachLeft:: @ 816DE69
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 4, Movement_16DE8D
+ applymovement 4, CinnabarIsland_Gym_Movement_RamonApproachLeft
waitmovement 0
return
-EventScript_16DE7B:: @ 816DE7B
+CinnabarIsland_Gym_EventScript_RamonApproachRight:: @ 816DE7B
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 4, Movement_16DE90
+ applymovement 4, CinnabarIsland_Gym_Movement_RamonApproachRight
waitmovement 0
return
-Movement_16DE8D:: @ 816DE8D
+CinnabarIsland_Gym_Movement_RamonApproachLeft:: @ 816DE8D
walk_left
walk_left
step_end
-Movement_16DE90:: @ 816DE90
+CinnabarIsland_Gym_Movement_RamonApproachRight:: @ 816DE90
walk_left
step_end
-CinnabarIsland_Gym_EventScript_16DE92:: @ 816DE92
+CinnabarIsland_Gym_EventScript_Quiz4Left:: @ 816DE92
lockall
setvar VAR_TEMP_1, 0
- goto EventScript_16DEAA
+ goto CinnabarIsland_Gym_EventScript_Quiz4
end
-CinnabarIsland_Gym_EventScript_16DE9E:: @ 816DE9E
+CinnabarIsland_Gym_EventScript_Quiz4Right:: @ 816DE9E
lockall
setvar VAR_TEMP_1, 1
- goto EventScript_16DEAA
+ goto CinnabarIsland_Gym_EventScript_Quiz4
end
-EventScript_16DEAA:: @ 816DEAA
- msgbox gUnknown_8199C9F
- msgbox gUnknown_8199DC6, MSGBOX_YESNO
+CinnabarIsland_Gym_EventScript_Quiz4:: @ 816DEAA
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion4, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_16DEF6
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz4Incorrect
compare VAR_RESULT, NO
- goto_if_eq EventScript_16DED1
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz4Correct
end
-EventScript_16DED1:: @ 816DED1
- call EventScript_16DC27
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_4, EventScript_16DC68
- call EventScript_16DEE6
+CinnabarIsland_Gym_EventScript_Quiz4Correct:: @ 816DED1
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_4, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz4Complete
releaseall
end
-EventScript_16DEE6:: @ 816DEE6
+CinnabarIsland_Gym_EventScript_Quiz4Complete:: @ 816DEE6
playse SE_KI_GASYAN
waitse
- call EventScript_16E1D7
+ call CinnabarIsland_Gym_EventScript_OpenDoor4
special DrawWholeMapView
setflag FLAG_CINNABAR_GYM_QUIZ_4
return
-EventScript_16DEF6:: @ 816DEF6
- call EventScript_16DC34
- goto_if_not_defeated TRAINER_SUPER_NERD_DEREK, EventScript_16DF06
+CinnabarIsland_Gym_EventScript_Quiz4Incorrect:: @ 816DEF6
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_SUPER_NERD_DEREK, CinnabarIsland_Gym_EventScript_BattleDerek
releaseall
end
-EventScript_16DF06:: @ 816DF06
+CinnabarIsland_Gym_EventScript_BattleDerek:: @ 816DF06
compare VAR_TEMP_1, 0
- call_if_eq EventScript_16DF40
+ call_if_eq CinnabarIsland_Gym_EventScript_DerekApproachLeft
compare VAR_TEMP_1, 1
- call_if_eq EventScript_16DF52
+ call_if_eq CinnabarIsland_Gym_EventScript_DerekApproachRight
textcolor 0
- msgbox gUnknown_81999B7
- trainerbattle_no_intro TRAINER_SUPER_NERD_DEREK, Text_1999DB
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_4, EventScript_16DC68
- call EventScript_16DEE6
+ msgbox CinnabarIsland_Gym_Text_DerekIntro
+ trainerbattle_no_intro TRAINER_SUPER_NERD_DEREK, CinnabarIsland_Gym_Text_DerekDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_4, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz4Complete
releaseall
end
-EventScript_16DF40:: @ 816DF40
+CinnabarIsland_Gym_EventScript_DerekApproachLeft:: @ 816DF40
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 5, Movement_16DF64
+ applymovement 5, CinnabarIsland_Gym_Movement_DerekApproachLeft
waitmovement 0
return
-EventScript_16DF52:: @ 816DF52
+CinnabarIsland_Gym_EventScript_DerekApproachRight:: @ 816DF52
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 5, Movement_16DF67
+ applymovement 5, CinnabarIsland_Gym_Movement_DerekApproachRight
waitmovement 0
return
-Movement_16DF64:: @ 816DF64
+CinnabarIsland_Gym_Movement_DerekApproachLeft:: @ 816DF64
walk_left
walk_left
step_end
-Movement_16DF67:: @ 816DF67
+CinnabarIsland_Gym_Movement_DerekApproachRight:: @ 816DF67
walk_left
step_end
-CinnabarIsland_Gym_EventScript_16DF69:: @ 816DF69
+CinnabarIsland_Gym_EventScript_Quiz5Left:: @ 816DF69
lockall
setvar VAR_TEMP_1, 0
- goto EventScript_16DF81
+ goto CinnabarIsland_Gym_EventScript_Quiz5
end
-CinnabarIsland_Gym_EventScript_16DF75:: @ 816DF75
+CinnabarIsland_Gym_EventScript_Quiz5Right:: @ 816DF75
lockall
setvar VAR_TEMP_1, 1
- goto EventScript_16DF81
+ goto CinnabarIsland_Gym_EventScript_Quiz5
end
-EventScript_16DF81:: @ 816DF81
- msgbox gUnknown_8199C9F
- msgbox gUnknown_8199E00, MSGBOX_YESNO
+CinnabarIsland_Gym_EventScript_Quiz5:: @ 816DF81
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion5, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_16DFA8
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz5Correct
compare VAR_RESULT, NO
- goto_if_eq EventScript_16DFCD
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz5Incorrect
end
-EventScript_16DFA8:: @ 816DFA8
- call EventScript_16DC27
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_5, EventScript_16DC68
- call EventScript_16DFBD
+CinnabarIsland_Gym_EventScript_Quiz5Correct:: @ 816DFA8
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_5, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz5Complete
releaseall
end
-EventScript_16DFBD:: @ 816DFBD
+CinnabarIsland_Gym_EventScript_Quiz5Complete:: @ 816DFBD
playse SE_KI_GASYAN
waitse
- call EventScript_16E1F3
+ call CinnabarIsland_Gym_EventScript_OpenDoor5
special DrawWholeMapView
setflag FLAG_CINNABAR_GYM_QUIZ_5
return
-EventScript_16DFCD:: @ 816DFCD
- call EventScript_16DC34
- goto_if_not_defeated TRAINER_BURGLAR_DUSTY, EventScript_16DFDD
+CinnabarIsland_Gym_EventScript_Quiz5Incorrect:: @ 816DFCD
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_BURGLAR_DUSTY, CinnabarIsland_Gym_EventScript_BattleDusty
releaseall
end
-EventScript_16DFDD:: @ 816DFDD
+CinnabarIsland_Gym_EventScript_BattleDusty:: @ 816DFDD
compare VAR_TEMP_1, 0
- call_if_eq EventScript_16E017
+ call_if_eq CinnabarIsland_Gym_EventScript_DustyApproachLeft
compare VAR_TEMP_1, 1
- call_if_eq EventScript_16E029
+ call_if_eq CinnabarIsland_Gym_EventScript_DustyApproachRight
textcolor 0
- msgbox gUnknown_8199A7F
- trainerbattle_no_intro TRAINER_BURGLAR_DUSTY, Text_199AB9
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_5, EventScript_16DC68
- call EventScript_16DFBD
+ msgbox CinnabarIsland_Gym_Text_DustyIntro
+ trainerbattle_no_intro TRAINER_BURGLAR_DUSTY, CinnabarIsland_Gym_Text_DustyDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_5, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz5Complete
releaseall
end
-EventScript_16E017:: @ 816E017
+CinnabarIsland_Gym_EventScript_DustyApproachLeft:: @ 816E017
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 6, Movement_16E03B
+ applymovement 6, CinnabarIsland_Gym_Movement_DustyApproachLeft
waitmovement 0
return
-EventScript_16E029:: @ 816E029
+CinnabarIsland_Gym_EventScript_DustyApproachRight:: @ 816E029
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 6, Movement_16E03E
+ applymovement 6, CinnabarIsland_Gym_Movement_DustyApproachRight
waitmovement 0
return
-Movement_16E03B:: @ 816E03B
+CinnabarIsland_Gym_Movement_DustyApproachLeft:: @ 816E03B
walk_left
walk_left
step_end
-Movement_16E03E:: @ 816E03E
+CinnabarIsland_Gym_Movement_DustyApproachRight:: @ 816E03E
walk_left
step_end
-CinnabarIsland_Gym_EventScript_16E040:: @ 816E040
+CinnabarIsland_Gym_EventScript_Quiz6Left:: @ 816E040
lockall
setvar VAR_TEMP_1, 0
- goto EventScript_16E058
+ goto CinnabarIsland_Gym_EventScript_Quiz6
end
-CinnabarIsland_Gym_EventScript_16E04C:: @ 816E04C
+CinnabarIsland_Gym_EventScript_Quiz6Right:: @ 816E04C
lockall
setvar VAR_TEMP_1, 1
- goto EventScript_16E058
+ goto CinnabarIsland_Gym_EventScript_Quiz6
end
-EventScript_16E058:: @ 816E058
- msgbox gUnknown_8199C9F
- msgbox gUnknown_8199E36, MSGBOX_YESNO
+CinnabarIsland_Gym_EventScript_Quiz6:: @ 816E058
+ msgbox CinnabarIsland_Gym_Text_PokemonQuizRules
+ msgbox CinnabarIsland_Gym_Text_QuizQuestion6, MSGBOX_YESNO
compare VAR_RESULT, YES
- goto_if_eq EventScript_16E0A4
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz6Incorrect
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E07F
+ goto_if_eq CinnabarIsland_Gym_EventScript_Quiz6Correct
end
-EventScript_16E07F:: @ 816E07F
- call EventScript_16DC27
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_6, EventScript_16DC68
- call EventScript_16E094
+CinnabarIsland_Gym_EventScript_Quiz6Correct:: @ 816E07F
+ call CinnabarIsland_Gym_EventScript_CorrectAnswer
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_6, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz6Complete
releaseall
end
-EventScript_16E094:: @ 816E094
+CinnabarIsland_Gym_EventScript_Quiz6Complete:: @ 816E094
playse SE_KI_GASYAN
waitse
- call EventScript_16E233
+ call CinnabarIsland_Gym_EventScript_OpenDoor6
special DrawWholeMapView
setflag FLAG_CINNABAR_GYM_QUIZ_6
return
-EventScript_16E0A4:: @ 816E0A4
- call EventScript_16DC34
- goto_if_not_defeated TRAINER_SUPER_NERD_ZAC, EventScript_16E0B4
+CinnabarIsland_Gym_EventScript_Quiz6Incorrect:: @ 816E0A4
+ call CinnabarIsland_Gym_EventScript_IncorrectAnswer
+ goto_if_not_defeated TRAINER_SUPER_NERD_ZAC, CinnabarIsland_Gym_EventScript_BattleZac
releaseall
end
-EventScript_16E0B4:: @ 816E0B4
+CinnabarIsland_Gym_EventScript_BattleZac:: @ 816E0B4
compare VAR_TEMP_1, 0
- call_if_eq EventScript_16E0EE
+ call_if_eq CinnabarIsland_Gym_EventScript_ZacApproachLeft
compare VAR_TEMP_1, 1
- call_if_eq EventScript_16E100
+ call_if_eq CinnabarIsland_Gym_EventScript_ZacApproachRight
textcolor 0
- msgbox gUnknown_8199AFC
- trainerbattle_no_intro TRAINER_SUPER_NERD_ZAC, Text_199B16
- goto_if_set FLAG_CINNABAR_GYM_QUIZ_6, EventScript_16DC68
- call EventScript_16E094
+ msgbox CinnabarIsland_Gym_Text_ZacIntro
+ trainerbattle_no_intro TRAINER_SUPER_NERD_ZAC, CinnabarIsland_Gym_Text_ZacDefeat
+ goto_if_set FLAG_CINNABAR_GYM_QUIZ_6, CinnabarIsland_Gym_EventScript_DoorAlreadyOpen
+ call CinnabarIsland_Gym_EventScript_Quiz6Complete
releaseall
end
-EventScript_16E0EE:: @ 816E0EE
+CinnabarIsland_Gym_EventScript_ZacApproachLeft:: @ 816E0EE
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 7, Movement_16E112
+ applymovement 7, CinnabarIsland_Gym_Movement_ZacApproachLeft
waitmovement 0
return
-EventScript_16E100:: @ 816E100
+CinnabarIsland_Gym_EventScript_ZacApproachRight:: @ 816E100
applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFastestRight
- applymovement 7, Movement_16E115
+ applymovement 7, CinnabarIsland_Gym_Movement_ZacApproachRight
waitmovement 0
return
-Movement_16E112:: @ 816E112
+CinnabarIsland_Gym_Movement_ZacApproachLeft:: @ 816E112
walk_left
walk_left
step_end
-Movement_16E115:: @ 816E115
+CinnabarIsland_Gym_Movement_ZacApproachRight:: @ 816E115
walk_left
step_end
-EventScript_16E117:: @ 816E117
- setmetatile 26, 8, 711, 0
- setmetatile 27, 8, 710, 0
- setmetatile 26, 9, 719, 0
- setmetatile 27, 9, 718, 0
- setmetatile 26, 10, 649, 0
- setmetatile 27, 10, 641, 0
- setmetatile 28, 10, 642, 0
- return
-
-EventScript_16E157:: @ 816E157
- setmetatile 17, 8, 711, 0
- setmetatile 18, 8, 710, 0
- setmetatile 17, 9, 719, 0
- setmetatile 18, 9, 718, 0
- setmetatile 17, 10, 649, 0
- setmetatile 18, 10, 641, 0
- setmetatile 19, 10, 642, 0
- return
-
-EventScript_16E197:: @ 816E197
- setmetatile 17, 15, 711, 0
- setmetatile 18, 15, 710, 0
- setmetatile 17, 16, 719, 0
- setmetatile 18, 16, 718, 0
- setmetatile 17, 17, 649, 0
- setmetatile 18, 17, 641, 0
- setmetatile 19, 17, 642, 0
- return
-
-EventScript_16E1D7:: @ 816E1D7
- setmetatile 11, 21, 721, 1
- setmetatile 11, 22, 649, 0
- setmetatile 11, 23, 641, 0
- return
-
-EventScript_16E1F3:: @ 816E1F3
- setmetatile 5, 16, 711, 0
- setmetatile 6, 16, 710, 0
- setmetatile 5, 17, 719, 0
- setmetatile 6, 17, 718, 0
- setmetatile 5, 18, 649, 0
- setmetatile 6, 18, 641, 0
- setmetatile 7, 18, 642, 0
- return
-
-EventScript_16E233:: @ 816E233
- setmetatile 5, 8, 711, 0
- setmetatile 6, 8, 710, 0
- setmetatile 5, 9, 719, 0
- setmetatile 6, 9, 718, 0
- setmetatile 5, 10, 649, 0
- setmetatile 6, 10, 641, 0
- setmetatile 7, 10, 642, 0
+CinnabarIsland_Gym_EventScript_OpenDoor1:: @ 816E117
+ setmetatile 26, 8, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 27, 8, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 26, 9, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 27, 9, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 26, 10, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 27, 10, METATILE_CinnabarGym_Floor, 0
+ setmetatile 28, 10, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor2:: @ 816E157
+ setmetatile 17, 8, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 18, 8, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 17, 9, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 18, 9, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 17, 10, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 18, 10, METATILE_CinnabarGym_Floor, 0
+ setmetatile 19, 10, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor3:: @ 816E197
+ setmetatile 17, 15, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 18, 15, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 17, 16, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 18, 16, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 17, 17, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 18, 17, METATILE_CinnabarGym_Floor, 0
+ setmetatile 19, 17, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor4:: @ 816E1D7
+ setmetatile 11, 21, METATILE_CinnabarGym_Wall_RetractedBarrier, 1
+ setmetatile 11, 22, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 11, 23, METATILE_CinnabarGym_Floor, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor5:: @ 816E1F3
+ setmetatile 5, 16, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 6, 16, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 5, 17, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 6, 17, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 5, 18, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 6, 18, METATILE_CinnabarGym_Floor, 0
+ setmetatile 7, 18, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
+ return
+
+CinnabarIsland_Gym_EventScript_OpenDoor6:: @ 816E233
+ setmetatile 5, 8, METATILE_CinnabarGym_Floor_WallLeftCorner, 0
+ setmetatile 6, 8, METATILE_CinnabarGym_Floor_WallRightCorner, 0
+ setmetatile 5, 9, METATILE_CinnabarGym_Floor_WallLeftEdge, 0
+ setmetatile 6, 9, METATILE_CinnabarGym_Floor_WallRightEdge, 0
+ setmetatile 5, 10, METATILE_CinnabarGym_Floor_ShadeFull, 0
+ setmetatile 6, 10, METATILE_CinnabarGym_Floor, 0
+ setmetatile 7, 10, METATILE_CinnabarGym_Floor_ShadeDiagonal, 0
return
diff --git a/data/maps/CinnabarIsland_Gym/text.inc b/data/maps/CinnabarIsland_Gym/text.inc
index c09e8b791..4543ffcc8 100644
--- a/data/maps/CinnabarIsland_Gym/text.inc
+++ b/data/maps/CinnabarIsland_Gym/text.inc
@@ -1,4 +1,4 @@
-Text_199543:: @ 8199543
+CinnabarIsland_Gym_Text_BlaineIntro:: @ 8199543
.string "Hah!\p"
.string "I am BLAINE, the red-hot LEADER\n"
.string "of CINNABAR GYM!\p"
@@ -8,95 +8,91 @@ Text_199543:: @ 8199543
.string "Hah!\n"
.string "You better have BURN HEAL!{PLAY_BGM}{MUS_EXEYE}$"
-Text_1995FA:: @ 81995FA
+CinnabarIsland_Gym_Text_BlaineDefeat:: @ 81995FA
.string "I have burned down to nothing!\n"
.string "Not even ashes remain!\p"
.string "You have earned the VOLCANOBADGE.$"
-gUnknown_8199652:: @ 8199652
+CinnabarIsland_Gym_Text_FireBlastIsUltimateFireMove:: @ 8199652
.string "FIRE BLAST is the ultimate fire\n"
.string "technique.\p"
.string "Don't waste it on WATER POKéMON.$"
-gUnknown_819969E:: @ 819969E
+CinnabarIsland_Gym_Text_ExplainVolcanoBadge:: @ 819969E
.string "Hah!\p"
.string "The VOLCANOBADGE heightens the\n"
.string "SPECIAL stats of your POKéMON.\p"
.string "Here, you can have this, too!$"
-gUnknown_81996FF:: @ 81996FF
+CinnabarIsland_Gym_Text_ReceivedTM38FromBlaine:: @ 81996FF
.string "{PLAYER} received TM38\n"
.string "from BLAINE.$"
-gUnknown_819971D:: @ 819971D
+CinnabarIsland_Gym_Text_BlainePostBattle:: @ 819971D
.string "TM38 contains FIRE BLAST.\n"
.string "Teach it to FIRE-type POKéMON.\p"
.string "VULPIX or CHARMELEON would be\n"
.string "ideal for that move.$"
-gUnknown_8199789:: @ 8199789
+CinnabarIsland_Gym_Text_MakeSpaceForThis:: @ 8199789
.string "Make space for this, child!$"
-Text_1997A5:: @ 81997A5
+CinnabarIsland_Gym_Text_ErikIntro:: @ 81997A5
.string "Do you know how hot POKéMON fire\n"
.string "breath can get?$"
-Text_1997D6:: @ 81997D6
+CinnabarIsland_Gym_Text_ErikDefeat:: @ 81997D6
.string "Yow!\n"
.string "Hot, hot, hot!$"
-gUnknown_81997EA:: @ 81997EA
+CinnabarIsland_Gym_Text_ErikPostBattle:: @ 81997EA
.string "Fire, or to be more precise,\n"
.string "combustion…\p"
.string "…Oxygen in the air…\n"
.string "Blah, blah, blah, blah…$"
-Text_19983F:: @ 819983F
-gUnknown_819983F:: @ 819983F
+CinnabarIsland_Gym_Text_QuinnIntro:: @ 819983F
.string "I was a thief, but I went straight\n"
.string "as a TRAINER.$"
-Text_199870:: @ 8199870
+CinnabarIsland_Gym_Text_QuinnDefeat:: @ 8199870
.string "I surrender!$"
-gUnknown_819987D:: @ 819987D
+CinnabarIsland_Gym_Text_QuinnPostBattle:: @ 819987D
.string "I get this uncontrollable urge to\n"
.string "steal other people's POKéMON.$"
-Text_1998BD:: @ 81998BD
-gUnknown_81998BD:: @ 81998BD
+CinnabarIsland_Gym_Text_AveryIntro:: @ 81998BD
.string "I've studied POKéMON thoroughly.\n"
.string "You can't win!$"
-Text_1998ED:: @ 81998ED
+CinnabarIsland_Gym_Text_AveryDefeat:: @ 81998ED
.string "Waah!\n"
.string "My studies were insufficient!$"
-gUnknown_8199911:: @ 8199911
+CinnabarIsland_Gym_Text_AveryPostBattle:: @ 8199911
.string "My theories are too complicated\n"
.string "for you to understand.$"
-Text_199948:: @ 8199948
-gUnknown_8199948:: @ 8199948
+CinnabarIsland_Gym_Text_RamonIntro:: @ 8199948
.string "I like using FIRE-type POKéMON.\n"
.string "I just do.$"
-Text_199973:: @ 8199973
+CinnabarIsland_Gym_Text_RamonDefeat:: @ 8199973
.string "Too hot to handle!$"
-gUnknown_8199986:: @ 8199986
+CinnabarIsland_Gym_Text_RamonPostBattle:: @ 8199986
.string "I wish there were a thief POKéMON.\n"
.string "I'd use that!$"
-Text_1999B7:: @ 81999B7
-gUnknown_81999B7:: @ 81999B7
+CinnabarIsland_Gym_Text_DerekIntro:: @ 81999B7
.string "I know why BLAINE became a\n"
.string "TRAINER.$"
-Text_1999DB:: @ 81999DB
+CinnabarIsland_Gym_Text_DerekDefeat:: @ 81999DB
.string "Ow!$"
-gUnknown_81999DF:: @ 81999DF
+CinnabarIsland_Gym_Text_DerekPostBattle:: @ 81999DF
.string "Our LEADER, BLAINE, became lost\n"
.string "in the mountains but good.\p"
.string "Night fell when a fiery bird\n"
@@ -104,33 +100,31 @@ gUnknown_81999DF:: @ 81999DF
.string "Its light allowed BLAINE to find\n"
.string "his way down safely.$"
-Text_199A7F:: @ 8199A7F
-gUnknown_8199A7F:: @ 8199A7F
+CinnabarIsland_Gym_Text_DustyIntro:: @ 8199A7F
.string "I've been to many GYMS, but this\n"
.string "one best suits my style.$"
-Text_199AB9:: @ 8199AB9
+CinnabarIsland_Gym_Text_DustyDefeat:: @ 8199AB9
.string "Yowza!\n"
.string "Too hot!$"
-gUnknown_8199AC9:: @ 8199AC9
+CinnabarIsland_Gym_Text_DustyPostBattle:: @ 8199AC9
.string "PONYTA, NINETALES…\n"
.string "Those are popular FIRE POKéMON.$"
-Text_199AFC:: @ 8199AFC
-gUnknown_8199AFC:: @ 8199AFC
+CinnabarIsland_Gym_Text_ZacIntro:: @ 8199AFC
.string "Fire is weak against H2O.$"
-Text_199B16:: @ 8199B16
+CinnabarIsland_Gym_Text_ZacDefeat:: @ 8199B16
.string "Oh!\n"
.string "Snuffed out!$"
-gUnknown_8199B27:: @ 8199B27
+CinnabarIsland_Gym_Text_ZacPostBattle:: @ 8199B27
.string "Water beats fire, of course.\p"
.string "But fire melts ice, so the FIRE\n"
.string "type beats ICE-type POKéMON.$"
-gUnknown_8199B81:: @ 8199B81
+CinnabarIsland_Gym_Text_GymGuyAdvice:: @ 8199B81
.string "Yo!\n"
.string "Champ in the making!\p"
.string "The hotheaded BLAINE is a FIRE\n"
@@ -139,23 +133,23 @@ gUnknown_8199B81:: @ 8199B81
.string "You'd better take some\n"
.string "BURN HEALS, too.$"
-gUnknown_8199C0C:: @ 8199C0C
+CinnabarIsland_Gym_Text_GymGuyPostVictory:: @ 8199C0C
.string "{PLAYER}!\n"
.string "You beat that firebrand!$"
-gUnknown_8199C29:: @ 8199C29
+CinnabarIsland_Gym_Text_GymStatue:: @ 8199C29
.string "CINNABAR POKéMON GYM\n"
.string "LEADER: BLAINE\p"
.string "WINNING TRAINERS:\n"
.string "{RIVAL}$"
-gUnknown_8199C62:: @ 8199C62
+CinnabarIsland_Gym_Text_GymStatuePlayerWon:: @ 8199C62
.string "CINNABAR POKéMON GYM\n"
.string "LEADER: BLAINE\p"
.string "WINNING TRAINERS:\n"
.string "{RIVAL}, {PLAYER}$"
-gUnknown_8199C9F:: @ 8199C9F
+CinnabarIsland_Gym_Text_PokemonQuizRules:: @ 8199C9F
.string "POKéMON Quiz!\p"
.string "Get it right, and the door opens to\n"
.string "the next room.\p"
@@ -165,32 +159,32 @@ gUnknown_8199C9F:: @ 8199C9F
.string "Then get it right!\n"
.string "Here we go!$"
-gUnknown_8199D5A:: @ 8199D5A
+CinnabarIsland_Gym_Text_QuizQuestion1:: @ 8199D5A
.string "CATERPIE evolves into METAPOD?$"
-gUnknown_8199D79:: @ 8199D79
+CinnabarIsland_Gym_Text_QuizQuestion2:: @ 8199D79
.string "There are nine certified POKéMON\n"
.string "LEAGUE BADGES?$"
-gUnknown_8199DA9:: @ 8199DA9
+CinnabarIsland_Gym_Text_QuizQuestion3:: @ 8199DA9
.string "POLIWAG evolves three times?$"
-gUnknown_8199DC6:: @ 8199DC6
+CinnabarIsland_Gym_Text_QuizQuestion4:: @ 8199DC6
.string "Are electric moves effective\n"
.string "against GROUND-type POKéMON?$"
-gUnknown_8199E00:: @ 8199E00
+CinnabarIsland_Gym_Text_QuizQuestion5:: @ 8199E00
.string "POKéMON of the same kind and level\n"
.string "are not identical?$"
-gUnknown_8199E36:: @ 8199E36
+CinnabarIsland_Gym_Text_QuizQuestion6:: @ 8199E36
.string "TM28 contains TOMBSTONY?$"
-gUnknown_8199E4F:: @ 8199E4F
+CinnabarIsland_Gym_Text_CorrectGoOnThrough:: @ 8199E4F
.string "You're absolutely correct!\p"
.string "Go on through!$"
-gUnknown_8199E79:: @ 8199E79
+CinnabarIsland_Gym_Text_SorryBadCall:: @ 8199E79
.string "Sorry!\n"
.string "Bad call!$"
diff --git a/data/maps/CinnabarIsland_Mart/map.json b/data/maps/CinnabarIsland_Mart/map.json
index d0233f91e..7970cf732 100644
--- a/data/maps/CinnabarIsland_Mart/map.json
+++ b/data/maps/CinnabarIsland_Mart/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Mart_EventScript_16EA22",
+ "script": "CinnabarIsland_Mart_EventScript_Clerk",
"flag": "0"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Mart_EventScript_16EA10",
+ "script": "CinnabarIsland_Mart_EventScript_Woman",
"flag": "0"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_Mart_EventScript_16EA19",
+ "script": "CinnabarIsland_Mart_EventScript_Scientist",
"flag": "0"
}
],
diff --git a/data/maps/CinnabarIsland_Mart/scripts.inc b/data/maps/CinnabarIsland_Mart/scripts.inc
index f5ecf68d8..29b52627b 100644
--- a/data/maps/CinnabarIsland_Mart/scripts.inc
+++ b/data/maps/CinnabarIsland_Mart/scripts.inc
@@ -1,27 +1,27 @@
CinnabarIsland_Mart_MapScripts:: @ 816EA0F
.byte 0
-CinnabarIsland_Mart_EventScript_16EA10:: @ 816EA10
- msgbox gUnknown_819A7A0, MSGBOX_NPC
+CinnabarIsland_Mart_EventScript_Woman:: @ 816EA10
+ msgbox CinnabarIsland_Mart_Text_DontTheyHaveXAttack, MSGBOX_NPC
end
-CinnabarIsland_Mart_EventScript_16EA19:: @ 816EA19
- msgbox gUnknown_819A7F1, MSGBOX_NPC
+CinnabarIsland_Mart_EventScript_Scientist:: @ 816EA19
+ msgbox CinnabarIsland_Mart_Text_ExtraItemsNeverHurt, MSGBOX_NPC
end
-CinnabarIsland_Mart_EventScript_16EA22:: @ 816EA22
+CinnabarIsland_Mart_EventScript_Clerk:: @ 816EA22
goto_if_questlog EventScript_ReleaseEnd
lock
faceplayer
message Text_MayIHelpYou
waitmessage
- pokemart Items_16EA48
+ pokemart CinnabarIsland_Mart_Items
msgbox Text_PleaseComeAgain
release
end
.align 2
-Items_16EA48:: @ 816EA48
+CinnabarIsland_Mart_Items:: @ 816EA48
.2byte ITEM_ULTRA_BALL
.2byte ITEM_GREAT_BALL
.2byte ITEM_HYPER_POTION
diff --git a/data/maps/CinnabarIsland_Mart/text.inc b/data/maps/CinnabarIsland_Mart/text.inc
index 189baff6a..30c36bf08 100644
--- a/data/maps/CinnabarIsland_Mart/text.inc
+++ b/data/maps/CinnabarIsland_Mart/text.inc
@@ -1,9 +1,9 @@
-gUnknown_819A7A0:: @ 819A7A0
+CinnabarIsland_Mart_Text_DontTheyHaveXAttack:: @ 819A7A0
.string "Don't they have X ATTACK?\p"
.string "I like it because it raises the\n"
.string "ATTACK stat in battle.$"
-gUnknown_819A7F1:: @ 819A7F1
+CinnabarIsland_Mart_Text_ExtraItemsNeverHurt:: @ 819A7F1
.string "It never hurts to have extra items.\n"
.string "You never know what might happen.$"
diff --git a/data/maps/CinnabarIsland_PokemonCenter_1F/map.json b/data/maps/CinnabarIsland_PokemonCenter_1F/map.json
index 45ed90320..5cc12ab94 100644
--- a/data/maps/CinnabarIsland_PokemonCenter_1F/map.json
+++ b/data/maps/CinnabarIsland_PokemonCenter_1F/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonCenter_1F_EventScript_16E8E6",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_Nurse",
"flag": "0"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonCenter_1F_EventScript_16E8F8",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_CooltrainerF",
"flag": "0"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonCenter_1F_EventScript_16E8EF",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_Gentleman",
"flag": "0"
},
{
@@ -62,7 +62,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonCenter_1F_EventScript_16E901",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_Youngster",
"flag": "0"
},
{
@@ -75,7 +75,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonCenter_1F_EventScript_1AD0B9",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_PokemonJournalMrFuji",
"flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
},
{
@@ -88,7 +88,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonCenter_1F_EventScript_1AD0B9",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_PokemonJournalMrFuji",
"flag": "FLAG_HIDE_POSTGAME_GOSSIPERS"
},
{
@@ -101,7 +101,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonCenter_1F_EventScript_16E90A",
+ "script": "CinnabarIsland_PokemonCenter_1F_EventScript_Bill",
"flag": "FLAG_HIDE_CINNABAR_POKECENTER_BILL"
}
],
diff --git a/data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc b/data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc
index 626263f76..c96169d1d 100644
--- a/data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc
+++ b/data/maps/CinnabarIsland_PokemonCenter_1F/scripts.inc
@@ -7,32 +7,32 @@ CinnabarIsland_PokemonCenter_1F_OnTransition:: @ 816E8E2
setrespawn SPAWN_CINNABAR_ISLAND
end
-CinnabarIsland_PokemonCenter_1F_EventScript_16E8E6:: @ 816E8E6
+CinnabarIsland_PokemonCenter_1F_EventScript_Nurse:: @ 816E8E6
lock
faceplayer
call EventScript_PkmnCenterNurse
release
end
-CinnabarIsland_PokemonCenter_1F_EventScript_16E8EF:: @ 816E8EF
- msgbox gUnknown_819A5BE, MSGBOX_NPC
+CinnabarIsland_PokemonCenter_1F_EventScript_Gentleman:: @ 816E8EF
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_VisitUnionRoom, MSGBOX_NPC
end
-CinnabarIsland_PokemonCenter_1F_EventScript_16E8F8:: @ 816E8F8
- msgbox gUnknown_819A4F8, MSGBOX_NPC
+CinnabarIsland_PokemonCenter_1F_EventScript_CooltrainerF:: @ 816E8F8
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_CinnabarGymLocked, MSGBOX_NPC
end
-CinnabarIsland_PokemonCenter_1F_EventScript_16E901:: @ 816E901
- msgbox gUnknown_819A6B1, MSGBOX_NPC
+CinnabarIsland_PokemonCenter_1F_EventScript_Youngster:: @ 816E901
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_EvolutionCanWaitForNewMoves, MSGBOX_NPC
end
-CinnabarIsland_PokemonCenter_1F_EventScript_16E90A:: @ 816E90A
+CinnabarIsland_PokemonCenter_1F_EventScript_Bill:: @ 816E90A
lock
faceplayer
- msgbox gUnknown_819A725, MSGBOX_YESNO
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_ReadyToSailToOneIsland, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E9A5
- msgbox gUnknown_819A785
+ goto_if_eq CinnabarIsland_PokemonCenter_1F_EventScript_NotReadyToSail
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_LetsGo
closemessage
playbgm MUS_ANNAI, 1
savebgm MUS_ANNAI
@@ -40,11 +40,11 @@ CinnabarIsland_PokemonCenter_1F_EventScript_16E90A:: @ 816E90A
setflag FLAG_HIDE_CINNABAR_POKECENTER_BILL
delay 20
compare VAR_FACING, DIR_SOUTH
- call_if_eq EventScript_16E96F
+ call_if_eq CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillSouth
compare VAR_FACING, DIR_EAST
- call_if_eq EventScript_16E981
+ call_if_eq CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillEast
compare VAR_FACING, DIR_WEST
- call_if_eq EventScript_16E993
+ call_if_eq CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillWest
removeobject 7
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_2, 1
clearflag FLAG_HIDE_CINNABAR_BILL
@@ -53,30 +53,30 @@ CinnabarIsland_PokemonCenter_1F_EventScript_16E90A:: @ 816E90A
release
end
-EventScript_16E96F:: @ 816E96F
- applymovement 7, Movement_16E9AF
- applymovement OBJ_EVENT_ID_PLAYER, Movement_16E9B9
+CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillSouth:: @ 816E96F
+ applymovement 7, CinnabarIsland_PokemonCenter_1F_Movement_BillExit
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitSouth
waitmovement 0
return
-EventScript_16E981:: @ 816E981
- applymovement 7, Movement_16E9C3
- applymovement OBJ_EVENT_ID_PLAYER, Movement_16E9CF
+CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillEast:: @ 816E981
+ applymovement 7, CinnabarIsland_PokemonCenter_1F_Movement_BillExitEast
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitEast
waitmovement 0
return
-EventScript_16E993:: @ 816E993
- applymovement 7, Movement_16E9AF
- applymovement OBJ_EVENT_ID_PLAYER, Movement_16E9DE
+CinnabarIsland_PokemonCenter_1F_EventScript_ExitWithBillWest:: @ 816E993
+ applymovement 7, CinnabarIsland_PokemonCenter_1F_Movement_BillExit
+ applymovement OBJ_EVENT_ID_PLAYER, CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitWest
waitmovement 0
return
-EventScript_16E9A5:: @ 816E9A5
- msgbox gUnknown_819A766
+CinnabarIsland_PokemonCenter_1F_EventScript_NotReadyToSail:: @ 816E9A5
+ msgbox CinnabarIsland_PokemonCenter_1F_Text_OhNotDoneYet
release
end
-Movement_16E9AF:: @ 816E9AF
+CinnabarIsland_PokemonCenter_1F_Movement_BillExit:: @ 816E9AF
walk_left
walk_left
walk_left
@@ -88,7 +88,7 @@ Movement_16E9AF:: @ 816E9AF
set_invisible
step_end
-Movement_16E9B9:: @ 816E9B9
+CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitSouth:: @ 816E9B9
walk_down
walk_left
walk_left
@@ -100,7 +100,7 @@ Movement_16E9B9:: @ 816E9B9
walk_down
step_end
-Movement_16E9C3:: @ 816E9C3
+CinnabarIsland_PokemonCenter_1F_Movement_BillExitEast:: @ 816E9C3
walk_up
walk_left
walk_left
@@ -114,7 +114,7 @@ Movement_16E9C3:: @ 816E9C3
set_invisible
step_end
-Movement_16E9CF:: @ 816E9CF
+CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitEast:: @ 816E9CF
delay_16
delay_16
delay_16
@@ -131,7 +131,7 @@ Movement_16E9CF:: @ 816E9CF
set_invisible
step_end
-Movement_16E9DE:: @ 816E9DE
+CinnabarIsland_PokemonCenter_1F_Movement_PlayerExitWest:: @ 816E9DE
walk_left
walk_left
walk_left
diff --git a/data/maps/CinnabarIsland_PokemonCenter_1F/text.inc b/data/maps/CinnabarIsland_PokemonCenter_1F/text.inc
index c88fbbf28..74d2f1bc1 100644
--- a/data/maps/CinnabarIsland_PokemonCenter_1F/text.inc
+++ b/data/maps/CinnabarIsland_PokemonCenter_1F/text.inc
@@ -1,4 +1,4 @@
-gUnknown_819A4F8:: @ 819A4F8
+CinnabarIsland_PokemonCenter_1F_Text_CinnabarGymLocked:: @ 819A4F8
.string "I came to visit the CINNABAR GYM,\n"
.string "but the door is locked tight.\p"
.string "There should be a key for it\n"
@@ -8,7 +8,7 @@ gUnknown_819A4F8:: @ 819A4F8
.string "The GYM LEADER's friend used to\n"
.string "live there, they say.$"
-gUnknown_819A5BE:: @ 819A5BE
+CinnabarIsland_PokemonCenter_1F_Text_VisitUnionRoom:: @ 819A5BE
.string "Do you have lots of friends?\p"
.string "Linking up with the usual friends\n"
.string "is fun, of course.\p"
@@ -19,20 +19,20 @@ gUnknown_819A5BE:: @ 819A5BE
.string "I think it would be worth your time\n"
.string "to check the UNION ROOM.$"
-gUnknown_819A6B1:: @ 819A6B1
+CinnabarIsland_PokemonCenter_1F_Text_EvolutionCanWaitForNewMoves:: @ 819A6B1
.string "POKéMON can still learn techniques\n"
.string "after canceling evolution.\p"
.string "Evolution can wait until new moves\n"
.string "have been learned.$"
-gUnknown_819A725:: @ 819A725
+CinnabarIsland_PokemonCenter_1F_Text_ReadyToSailToOneIsland:: @ 819A725
.string "BILL: Hey, you kept me waiting!\n"
.string "Ready to set sail to ONE ISLAND?$"
-gUnknown_819A766:: @ 819A766
+CinnabarIsland_PokemonCenter_1F_Text_OhNotDoneYet:: @ 819A766
.string "Oh, you're still not done yet?$"
-gUnknown_819A785:: @ 819A785
+CinnabarIsland_PokemonCenter_1F_Text_LetsGo:: @ 819A785
.string "Well, that's it.\n"
.string "Let's go!$"
diff --git a/data/maps/CinnabarIsland_PokemonLab_Entrance/map.json b/data/maps/CinnabarIsland_PokemonLab_Entrance/map.json
index cb2aa4d61..20aa48378 100644
--- a/data/maps/CinnabarIsland_PokemonLab_Entrance/map.json
+++ b/data/maps/CinnabarIsland_PokemonLab_Entrance/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_16E28B",
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_Scientist",
"flag": "0"
}
],
@@ -78,28 +78,28 @@
"x": 4,
"y": 1,
"elevation": 0,
- "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_16E294"
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_DrFujiPhoto"
},
{
"type": "bg_event_type_0",
"x": 12,
"y": 5,
"elevation": 0,
- "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_16E29D"
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_MeetingRoomSign"
},
{
"type": "bg_event_type_0",
"x": 18,
"y": 5,
"elevation": 0,
- "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_16E2A6"
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_RAndDRoomSign"
},
{
"type": "bg_event_type_0",
"x": 24,
"y": 5,
"elevation": 0,
- "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_16E2AF"
+ "script": "CinnabarIsland_PokemonLab_Entrance_EventScript_TestingRoomSign"
}
]
}
diff --git a/data/maps/CinnabarIsland_PokemonLab_Entrance/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_Entrance/scripts.inc
index caf07f29d..8aea98ace 100644
--- a/data/maps/CinnabarIsland_PokemonLab_Entrance/scripts.inc
+++ b/data/maps/CinnabarIsland_PokemonLab_Entrance/scripts.inc
@@ -4,29 +4,29 @@ CinnabarIsland_PokemonLab_Entrance_MapScripts:: @ 816E273
CinnabarIsland_PokemonLab_Entrance_OnTransition:: @ 816E279
compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1
- call_if_eq EventScript_16E285
+ call_if_eq CinnabarIsland_PokemonLab_Entrance_EventScript_ReadyFossil
end
-EventScript_16E285:: @ 816E285
+CinnabarIsland_PokemonLab_Entrance_EventScript_ReadyFossil:: @ 816E285
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 2
return
-CinnabarIsland_PokemonLab_Entrance_EventScript_16E28B:: @ 816E28B
- msgbox gUnknown_8199EE5, MSGBOX_NPC
+CinnabarIsland_PokemonLab_Entrance_EventScript_Scientist:: @ 816E28B
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_StudyMonsExtensively, MSGBOX_NPC
end
-CinnabarIsland_PokemonLab_Entrance_EventScript_16E294:: @ 816E294
- msgbox gUnknown_8199F41, MSGBOX_SIGN
+CinnabarIsland_PokemonLab_Entrance_EventScript_DrFujiPhoto:: @ 816E294
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_PhotoOfLabFounderDrFuji, MSGBOX_SIGN
end
-CinnabarIsland_PokemonLab_Entrance_EventScript_16E29D:: @ 816E29D
- msgbox gUnknown_8199F6A, MSGBOX_SIGN
+CinnabarIsland_PokemonLab_Entrance_EventScript_MeetingRoomSign:: @ 816E29D
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_MeetingRoomSign, MSGBOX_SIGN
end
-CinnabarIsland_PokemonLab_Entrance_EventScript_16E2A6:: @ 816E2A6
- msgbox gUnknown_8199F83, MSGBOX_SIGN
+CinnabarIsland_PokemonLab_Entrance_EventScript_RAndDRoomSign:: @ 816E2A6
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_RAndDRoomSign, MSGBOX_SIGN
end
-CinnabarIsland_PokemonLab_Entrance_EventScript_16E2AF:: @ 816E2AF
- msgbox gUnknown_8199F9A, MSGBOX_SIGN
+CinnabarIsland_PokemonLab_Entrance_EventScript_TestingRoomSign:: @ 816E2AF
+ msgbox CinnabarIsland_PokemonLab_Entrance_Text_TestingRoomSign, MSGBOX_SIGN
end
diff --git a/data/maps/CinnabarIsland_PokemonLab_Entrance/text.inc b/data/maps/CinnabarIsland_PokemonLab_Entrance/text.inc
index a14866bd4..2c51769bc 100644
--- a/data/maps/CinnabarIsland_PokemonLab_Entrance/text.inc
+++ b/data/maps/CinnabarIsland_PokemonLab_Entrance/text.inc
@@ -1,28 +1,28 @@
-Text_199E8A:: @ 8199E8A
+CinnabarIsland_Gym_Text_PhotoOfBlaineAndFuji:: @ 8199E8A
.string "It's a photo of BLAINE and\n"
.string "MR. FUJI.\p"
.string "They're standing shoulder to\n"
.string "shoulder with big grins.$"
-gUnknown_8199EE5:: @ 8199EE5
+CinnabarIsland_PokemonLab_Entrance_Text_StudyMonsExtensively:: @ 8199EE5
.string "We study POKéMON extensively\n"
.string "every day.\p"
.string "People often bring us rare POKéMON\n"
.string "for examination.$"
-gUnknown_8199F41:: @ 8199F41
+CinnabarIsland_PokemonLab_Entrance_Text_PhotoOfLabFounderDrFuji:: @ 8199F41
.string "A photo of the LAB's founder…\n"
.string "DR. FUJI?!$"
-gUnknown_8199F6A:: @ 8199F6A
+CinnabarIsland_PokemonLab_Entrance_Text_MeetingRoomSign:: @ 8199F6A
.string "POKéMON LAB\n"
.string "Meeting Room$"
-gUnknown_8199F83:: @ 8199F83
+CinnabarIsland_PokemonLab_Entrance_Text_RAndDRoomSign:: @ 8199F83
.string "POKéMON LAB\n"
.string "R & D Room$"
-gUnknown_8199F9A:: @ 8199F9A
+CinnabarIsland_PokemonLab_Entrance_Text_TestingRoomSign:: @ 8199F9A
.string "POKéMON LAB\n"
.string "Testing Room$"
diff --git a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/map.json b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/map.json
index 1a50f1208..2189361a9 100644
--- a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/map.json
+++ b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_16E401",
+ "script": "CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_Garett",
"flag": "0"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_16E47D",
+ "script": "CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_FossilScientist",
"flag": "0"
}
],
diff --git a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc
index dc1bd697a..08fe9acb8 100644
--- a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc
+++ b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/scripts.inc
@@ -1,309 +1,313 @@
+.equ HELIX_FOSSIL, 1
+.equ DOME_FOSSIL, 2
+.equ OLD_AMBER, 3
+
CinnabarIsland_PokemonLab_ExperimentRoom_MapScripts:: @ 816E400
.byte 0
-CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_16E401:: @ 816E401
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_Garett:: @ 816E401
lock
faceplayer
setvar VAR_0x8008, INGAME_TRADE_SEEL
call EventScript_GetInGameTradeSpeciesInfo
- goto_if_set FLAG_DID_SEELOR_TRADE, EventScript_16E473
- msgbox gUnknown_81A597B, MSGBOX_YESNO
+ goto_if_set FLAG_DID_SEELOR_TRADE, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_AlreadyTraded
+ msgbox Trade_Text_LookingForMonWannaTradeForMon, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E45B
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineTrade
call EventScript_ChooseMonForInGameTrade
compare VAR_0x8004, PARTY_SIZE
- goto_if_ge EventScript_16E45B
+ goto_if_ge CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineTrade
call EventScript_GetInGameTradeSpecies
compare VAR_RESULT, VAR_0x8009
- goto_if_ne EventScript_16E465
+ goto_if_ne CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NotRequestedMon
call EventScript_DoInGameTrade
- msgbox gUnknown_81A59DA
+ msgbox Trade_Text_HeyThanks
setflag FLAG_DID_SEELOR_TRADE
release
end
-EventScript_16E45B:: @ 816E45B
- msgbox gUnknown_81A59B6
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineTrade:: @ 816E45B
+ msgbox Trade_Text_AwwOhWell
release
end
-EventScript_16E465:: @ 816E465
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NotRequestedMon:: @ 816E465
getspeciesname 0, VAR_0x8009
- msgbox gUnknown_81A59C6
+ msgbox Trade_Text_WhatThatsNoMon
release
end
-EventScript_16E473:: @ 816E473
- msgbox gUnknown_81A59E7
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_AlreadyTraded:: @ 816E473
+ msgbox Trade_Text_IsntMyOldMonGreat
release
end
-CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_16E47D:: @ 816E47D
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_FossilScientist:: @ 816E47D
lock
faceplayer
- setvar VAR_RESULT, 0
- call_if_set FLAG_REVIVED_AMBER, EventScript_16E8A1
- compare VAR_RESULT, 1
- goto_if_eq EventScript_16E897
+ setvar VAR_RESULT, FALSE
+ call_if_set FLAG_REVIVED_AMBER, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedMtMoonFossil
+ compare VAR_RESULT, TRUE
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_RevivedAllFossils
compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 2
- goto_if_eq EventScript_16E736
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveRevivedMon
compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1
- goto_if_eq EventScript_16E72C
- call EventScript_16E4EC
- compare VAR_RESULT, 1
- goto_if_eq EventScript_16E544
- call EventScript_16E504
- compare VAR_RESULT, 1
- goto_if_eq EventScript_16E586
- call EventScript_16E51C
- compare VAR_RESULT, 1
- goto_if_eq EventScript_16E5C8
- msgbox gUnknown_819A282
- goto EventScript_16E53A
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_FossilStillReviving
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddHelixFossilToList
+ compare VAR_RESULT, TRUE
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelix
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddDomeFossilToList
+ compare VAR_RESULT, TRUE
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDome
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList
+ compare VAR_RESULT, TRUE
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilAmber
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
end
-EventScript_16E4EC:: @ 816E4EC
- goto_if_unset FLAG_GOT_HELIX_FOSSIL, EventScript_16E534
- goto_if_set FLAG_REVIVED_HELIX, EventScript_16E534
- setvar VAR_RESULT, 1
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddHelixFossilToList:: @ 816E4EC
+ goto_if_unset FLAG_GOT_HELIX_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ goto_if_set FLAG_REVIVED_HELIX, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
return
-EventScript_16E504:: @ 816E504
- goto_if_unset FLAG_GOT_DOME_FOSSIL, EventScript_16E534
- goto_if_set FLAG_REVIVED_DOME, EventScript_16E534
- setvar VAR_RESULT, 1
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddDomeFossilToList:: @ 816E504
+ goto_if_unset FLAG_GOT_DOME_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ goto_if_set FLAG_REVIVED_DOME, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
return
-EventScript_16E51C:: @ 816E51C
- goto_if_unset FLAG_GOT_OLD_AMBER, EventScript_16E534
- goto_if_set FLAG_REVIVED_AMBER, EventScript_16E534
- setvar VAR_RESULT, 1
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList:: @ 816E51C
+ goto_if_unset FLAG_GOT_OLD_AMBER, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ goto_if_set FLAG_REVIVED_AMBER, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
return
-EventScript_16E534:: @ 816E534
- setvar VAR_RESULT, 0
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse:: @ 816E534
+ setvar VAR_RESULT, FALSE
return
-EventScript_16E53A:: @ 816E53A
- msgbox gUnknown_819A314
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil:: @ 816E53A
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_NoIsTooBad
release
end
-EventScript_16E544:: @ 816E544
- message Text_19A282
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelix:: @ 816E544
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe
waitmessage
- call EventScript_16E51C
- compare VAR_RESULT, 1
- goto_if_eq EventScript_16E5FA
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList
+ compare VAR_RESULT, TRUE
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelixAmber
multichoice 0, 0, MULTICHOICE_HELIX, FALSE
switch VAR_RESULT
- case 0, EventScript_16E668
- case 1, EventScript_16E53A
- case 127, EventScript_16E53A
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowHelixFossil
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
end
-EventScript_16E586:: @ 816E586
- message Text_19A282
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDome:: @ 816E586
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe
waitmessage
- call EventScript_16E51C
- compare VAR_RESULT, 1
- goto_if_eq EventScript_16E631
+ call CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckAddOldAmberToList
+ compare VAR_RESULT, TRUE
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDomeAmber
multichoice 0, 0, MULTICHOICE_DOME, FALSE
switch VAR_RESULT
- case 0, EventScript_16E6A6
- case 1, EventScript_16E53A
- case 127, EventScript_16E53A
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowDomeFossil
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
end
-EventScript_16E5C8:: @ 816E5C8
- message Text_19A282
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilAmber:: @ 816E5C8
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe
waitmessage
multichoice 0, 0, MULTICHOICE_AMBER, FALSE
switch VAR_RESULT
- case 0, EventScript_16E6E4
- case 1, EventScript_16E53A
- case 127, EventScript_16E53A
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
end
-EventScript_16E5FA:: @ 816E5FA
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilHelixAmber:: @ 816E5FA
multichoice 0, 0, MULTICHOICE_HELIX_AMBER, FALSE
switch VAR_RESULT
- case 0, EventScript_16E668
- case 1, EventScript_16E6E4
- case 2, EventScript_16E53A
- case 127, EventScript_16E53A
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowHelixFossil
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber
+ case 2, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
end
-EventScript_16E631:: @ 816E631
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ChooseFossilDomeAmber:: @ 816E631
multichoice 0, 0, MULTICHOICE_DOME_AMBER, FALSE
switch VAR_RESULT
- case 0, EventScript_16E6A6
- case 1, EventScript_16E6E4
- case 2, EventScript_16E53A
- case 127, EventScript_16E53A
+ case 0, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowDomeFossil
+ case 1, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber
+ case 2, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
+ case 127, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DontShowFossil
end
-EventScript_16E668:: @ 816E668
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowHelixFossil:: @ 816E668
getspeciesname 0, SPECIES_OMANYTE
getitemname 1, ITEM_HELIX_FOSSIL
- msgbox gUnknown_819A3D4, MSGBOX_YESNO
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_ThatFossilIsOfMonMakeItLiveAgain, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E722
- msgbox gUnknown_819A45D
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineReviveFossil
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_HandedFossilToWeirdDoctor
textcolor 0
- removeitem ITEM_HELIX_FOSSIL, 1
- msgbox gUnknown_819A4AB
+ removeitem ITEM_HELIX_FOSSIL
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1
- setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, 1
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, HELIX_FOSSIL
release
end
-EventScript_16E6A6:: @ 816E6A6
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowDomeFossil:: @ 816E6A6
getspeciesname 0, SPECIES_KABUTO
getitemname 1, ITEM_DOME_FOSSIL
- msgbox gUnknown_819A3D4, MSGBOX_YESNO
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_ThatFossilIsOfMonMakeItLiveAgain, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E722
- msgbox gUnknown_819A45D
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineReviveFossil
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_HandedFossilToWeirdDoctor
textcolor 0
- removeitem ITEM_DOME_FOSSIL, 1
- msgbox gUnknown_819A4AB
+ removeitem ITEM_DOME_FOSSIL
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1
- setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, 2
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, DOME_FOSSIL
release
end
-EventScript_16E6E4:: @ 816E6E4
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_ShowOldAmber:: @ 816E6E4
getspeciesname 0, SPECIES_AERODACTYL
getitemname 1, ITEM_OLD_AMBER
- msgbox gUnknown_819A3D4, MSGBOX_YESNO
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_ThatFossilIsOfMonMakeItLiveAgain, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E722
- msgbox gUnknown_819A45D
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineReviveFossil
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_HandedFossilToWeirdDoctor
textcolor 0
- removeitem ITEM_OLD_AMBER, 1
- msgbox gUnknown_819A4AB
+ removeitem ITEM_OLD_AMBER
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 1
- setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, 3
+ setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, OLD_AMBER
release
end
-EventScript_16E722:: @ 816E722
- msgbox gUnknown_819A4E1
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_DeclineReviveFossil:: @ 816E722
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_YouComeAgain
release
end
-EventScript_16E72C:: @ 816E72C
- msgbox gUnknown_819A4AB
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_FossilStillReviving:: @ 816E72C
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk
release
end
-EventScript_16E736:: @ 816E736
- compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, 1
- goto_if_eq EventScript_16E758
- compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, 2
- goto_if_eq EventScript_16E79D
- compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, 3
- goto_if_eq EventScript_16E7E2
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveRevivedMon:: @ 816E736
+ compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, HELIX_FOSSIL
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveOmanyte
+ compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, DOME_FOSSIL
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveKabuto
+ compare VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_WHICH_FOSSIL, OLD_AMBER
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveAerodactyl
end
-EventScript_16E758:: @ 816E758
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveOmanyte:: @ 816E758
setvar VAR_TEMP_1, SPECIES_OMANYTE
getspeciesname 0, SPECIES_OMANYTE
- msgbox gUnknown_819A34F
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_FossilMonBackToLife
givemon SPECIES_OMANYTE, 5, ITEM_NONE
compare VAR_RESULT, 2
- goto_if_eq EventScript_1A927C
+ goto_if_eq EventScript_NoMoreRoomForPokemon
setflag FLAG_REVIVED_HELIX
compare VAR_RESULT, 0
- goto_if_eq EventScript_16E827
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonParty
compare VAR_RESULT, 1
- goto_if_eq EventScript_16E85B
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonPC
end
-EventScript_16E79D:: @ 816E79D
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveKabuto:: @ 816E79D
setvar VAR_TEMP_1, SPECIES_KABUTO
getspeciesname 0, SPECIES_KABUTO
- msgbox gUnknown_819A34F
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_FossilMonBackToLife
givemon SPECIES_KABUTO, 5, ITEM_NONE
compare VAR_RESULT, 2
- goto_if_eq EventScript_1A927C
+ goto_if_eq EventScript_NoMoreRoomForPokemon
setflag FLAG_REVIVED_DOME
compare VAR_RESULT, 0
- goto_if_eq EventScript_16E827
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonParty
compare VAR_RESULT, 1
- goto_if_eq EventScript_16E85B
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonPC
end
-EventScript_16E7E2:: @ 816E7E2
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_GiveAerodactyl:: @ 816E7E2
setvar VAR_TEMP_1, SPECIES_AERODACTYL
getspeciesname 0, SPECIES_AERODACTYL
- msgbox gUnknown_819A34F
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_FossilMonBackToLife
givemon SPECIES_AERODACTYL, 5, ITEM_NONE
compare VAR_RESULT, 2
- goto_if_eq EventScript_1A927C
+ goto_if_eq EventScript_NoMoreRoomForPokemon
setflag FLAG_REVIVED_AMBER
compare VAR_RESULT, 0
- goto_if_eq EventScript_16E827
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonParty
compare VAR_RESULT, 1
- goto_if_eq EventScript_16E85B
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonPC
end
-EventScript_16E827:: @ 816E827
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonParty:: @ 816E827
textcolor 3
playfanfare MUS_FANFA1
- message Text_19A39E
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_ReceivedMonFromDoctor
waitmessage
waitfanfare
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 0
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E895
- call EventScript_1A8C27
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_EndGiveMon
+ call EventScript_GetGiftMonPartySlot
call EventScript_ChangePokemonNickname
- goto EventScript_16E895
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_EndGiveMon
end
-EventScript_16E85B:: @ 816E85B
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_NicknameMonPC:: @ 816E85B
textcolor 3
playfanfare MUS_FANFA1
- message Text_19A39E
+ message CinnabarIsland_PokemonLab_ExperimentRoom_Text_ReceivedMonFromDoctor
waitmessage
waitfanfare
setvar VAR_MAP_SCENE_CINNABAR_ISLAND_POKEMON_LAB_EXPERIMENT_ROOM_REVIVE_STATE, 0
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E88A
- call EventScript_1A8C33
- goto EventScript_16E88A
+ goto_if_eq CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_MonSentToPC
+ call EventScript_NameReceivedBoxMon
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_MonSentToPC
end
-EventScript_16E88A:: @ 816E88A
- call EventScript_1A8C3C
- goto EventScript_16E895
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_MonSentToPC:: @ 816E88A
+ call EventScript_TransferredToPC
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_EndGiveMon
end
-EventScript_16E895:: @ 816E895
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_EndGiveMon:: @ 816E895
release
end
-EventScript_16E897:: @ 816E897
- msgbox gUnknown_819A4E1
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_RevivedAllFossils:: @ 816E897
+ msgbox CinnabarIsland_PokemonLab_ExperimentRoom_Text_YouComeAgain
release
end
-EventScript_16E8A1:: @ 816E8A1
- goto_if_set FLAG_GOT_HELIX_FOSSIL, EventScript_16E8B9
- goto_if_set FLAG_GOT_DOME_FOSSIL, EventScript_16E8C8
- goto EventScript_16E534
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedMtMoonFossil:: @ 816E8A1
+ goto_if_set FLAG_GOT_HELIX_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedHelix
+ goto_if_set FLAG_GOT_DOME_FOSSIL, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedDome
+ goto CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
end
-EventScript_16E8B9:: @ 816E8B9
- goto_if_unset FLAG_REVIVED_HELIX, EventScript_16E534
- setvar VAR_RESULT, 1
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedHelix:: @ 816E8B9
+ goto_if_unset FLAG_REVIVED_HELIX, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
return
-EventScript_16E8C8:: @ 816E8C8
- goto_if_unset FLAG_REVIVED_DOME, EventScript_16E534
- setvar VAR_RESULT, 1
+CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_CheckRevivedDome:: @ 816E8C8
+ goto_if_unset FLAG_REVIVED_DOME, CinnabarIsland_PokemonLab_ExperimentRoom_EventScript_SetResultFalse
+ setvar VAR_RESULT, TRUE
return
diff --git a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/text.inc b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/text.inc
index 6b36fd1a3..9a19c16f7 100644
--- a/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/text.inc
+++ b/data/maps/CinnabarIsland_PokemonLab_ExperimentRoom/text.inc
@@ -19,8 +19,7 @@ Text_MetronomeTaught:: @ 819A20E
.string "It tweaks your POKéMON's brain into\n"
.string "using moves it doesn't even know.$"
-Text_19A282:: @ 819A282
-gUnknown_819A282:: @ 819A282
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_HaveYouAFossilForMe:: @ 819A282
.string "Hiya!\p"
.string "I am important doctor.\n"
.string "Yes, very much so, indeed.\p"
@@ -29,29 +28,31 @@ gUnknown_819A282:: @ 819A282
.string "You!\n"
.string "Have you a fossil for me?$"
-gUnknown_819A314:: @ 819A314
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_NoIsTooBad:: @ 819A314
.string "No!\n"
.string "Is too bad!$"
-Text_19A324:: @ 819A324
+@ Unused
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalkJP:: @ 819A324
.string "ちょっと じかん かかるよ!\p"
.string "そこらへんを すこし\n"
.string "ブラブラ してくると よろしー!$"
-gUnknown_819A34F:: @ 819A34F
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_FossilMonBackToLife:: @ 819A34F
.string "You late.\n"
.string "Where were you?\p"
.string "Your fossil is back to life!\n"
.string "It was {STR_VAR_1} like I think!$"
-Text_19A39E:: @ 819A39E
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_ReceivedMonFromDoctor:: @ 819A39E
.string "{PLAYER} received the {STR_VAR_1}\n"
.string "from the doctor.$"
-Text_19A3C2:: @ 819A3C2
+@ Unused
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_NoRoomForPokemon:: @ 819A3C2
.string "ポケモン いっぱいで もてないね!$"
-gUnknown_819A3D4:: @ 819A3D4
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_ThatFossilIsOfMonMakeItLiveAgain:: @ 819A3D4
.string "Oh!\n"
.string "That is {STR_VAR_2}, it is!\p"
.string "It is fossil of {STR_VAR_1},\n"
@@ -59,17 +60,18 @@ gUnknown_819A3D4:: @ 819A3D4
.string "My Resurrection Machine will make\n"
.string "that POKéMON live again!$"
-gUnknown_819A45D:: @ 819A45D
+@ TODO: Resolve text dump error below?
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_HandedFossilToWeirdDoctor:: @ 819A45D
.string "So!\n"
.string "You hurry and give me that!\p"
.string "{SIZE}Á{PLAYER} handed over the\n"
.string "{STR_VAR_2} to the weird doctor.$"
-gUnknown_819A4AB:: @ 819A4AB
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_TakesTimeGoForWalk:: @ 819A4AB
.string "I take a little time!\n"
.string "You go for walk a little while!$"
-gUnknown_819A4E1:: @ 819A4E1
+CinnabarIsland_PokemonLab_ExperimentRoom_Text_YouComeAgain:: @ 819A4E1
.string "Aiyah!\n"
.string "You come again!$"
diff --git a/data/maps/CinnabarIsland_PokemonLab_Lounge/map.json b/data/maps/CinnabarIsland_PokemonLab_Lounge/map.json
index fedab09af..5761ffe0c 100644
--- a/data/maps/CinnabarIsland_PokemonLab_Lounge/map.json
+++ b/data/maps/CinnabarIsland_PokemonLab_Lounge/map.json
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_16E2B9",
+ "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_Scientist",
"flag": "0"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_16E2C2",
+ "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_Clifton",
"flag": "0"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_16E33E",
+ "script": "CinnabarIsland_PokemonLab_Lounge_EventScript_Norma",
"flag": "0"
}
],
diff --git a/data/maps/CinnabarIsland_PokemonLab_Lounge/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_Lounge/scripts.inc
index 1282a3b38..bcf1f17c9 100644
--- a/data/maps/CinnabarIsland_PokemonLab_Lounge/scripts.inc
+++ b/data/maps/CinnabarIsland_PokemonLab_Lounge/scripts.inc
@@ -1,90 +1,90 @@
CinnabarIsland_PokemonLab_Lounge_MapScripts:: @ 816E2B8
.byte 0
-CinnabarIsland_PokemonLab_Lounge_EventScript_16E2B9:: @ 816E2B9
- msgbox gUnknown_8199FB3, MSGBOX_NPC
+CinnabarIsland_PokemonLab_Lounge_EventScript_Scientist:: @ 816E2B9
+ msgbox CinnabarIsland_PokemonLab_Lounge_Text_FoundFossilInMtMoon, MSGBOX_NPC
end
-CinnabarIsland_PokemonLab_Lounge_EventScript_16E2C2:: @ 816E2C2
+CinnabarIsland_PokemonLab_Lounge_EventScript_Clifton:: @ 816E2C2
lock
faceplayer
setvar VAR_0x8008, INGAME_TRADE_ELECTRODE
call EventScript_GetInGameTradeSpeciesInfo
- goto_if_set FLAG_DID_ESPHERE_TRADE, EventScript_16E334
+ goto_if_set FLAG_DID_ESPHERE_TRADE, CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonAlreadyTraded
msgbox Trade_Text_DoYouHaveMonWouldYouTradeForMon, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E31C
+ goto_if_eq CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonDeclineTrade
call EventScript_ChooseMonForInGameTrade
compare VAR_0x8004, PARTY_SIZE
- goto_if_ge EventScript_16E31C
+ goto_if_ge CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonDeclineTrade
call EventScript_GetInGameTradeSpecies
compare VAR_RESULT, VAR_0x8009
- goto_if_ne EventScript_16E326
+ goto_if_ne CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonNotRequestedMon
call EventScript_DoInGameTrade
msgbox Trade_Text_Thanks
setflag FLAG_DID_ESPHERE_TRADE
release
end
-EventScript_16E31C:: @ 816E31C
+CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonDeclineTrade:: @ 816E31C
msgbox Trade_Text_WellIfYouDontWantTo
release
end
-EventScript_16E326:: @ 816E326
+CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonNotRequestedMon:: @ 816E326
getspeciesname 0, VAR_0x8009
msgbox Trade_Text_ThisIsntMon
release
end
-EventScript_16E334:: @ 816E334
+CinnabarIsland_PokemonLab_Lounge_EventScript_CliftonAlreadyTraded:: @ 816E334
msgbox Trade_Text_HasTradedMonGrownStronger
release
end
-CinnabarIsland_PokemonLab_Lounge_EventScript_16E33E:: @ 816E33E
+CinnabarIsland_PokemonLab_Lounge_EventScript_Norma:: @ 816E33E
lock
faceplayer
setvar VAR_0x8008, INGAME_TRADE_TANGELA
copyvar VAR_0x8004, VAR_0x8008
specialvar VAR_RESULT, GetInGameTradeSpeciesInfo
copyvar VAR_0x8009, VAR_RESULT
- goto_if_set FLAG_DID_TANGENY_TRADE, EventScript_16E3D4
- msgbox gUnknown_81A5AD6, MSGBOX_YESNO
+ goto_if_set FLAG_DID_TANGENY_TRADE, CinnabarIsland_PokemonLab_Lounge_EventScript_NormaAlreadyTraded
+ msgbox Trade_Text_DoYouHaveMonWantToTradeForMon, MSGBOX_YESNO
compare VAR_RESULT, NO
- goto_if_eq EventScript_16E3BC
+ goto_if_eq CinnabarIsland_PokemonLab_Lounge_EventScript_NormaDeclineTrade
special Special_ChooseMonFromParty
waitstate
copyvar VAR_0x800A, VAR_0x8004
compare VAR_0x8004, PARTY_SIZE
- goto_if_ge EventScript_16E3BC
+ goto_if_ge CinnabarIsland_PokemonLab_Lounge_EventScript_NormaDeclineTrade
copyvar VAR_0x8005, VAR_0x800A
specialvar VAR_RESULT, GetTradeSpecies
copyvar VAR_0x800B, VAR_RESULT
compare VAR_RESULT, VAR_0x8009
- goto_if_ne EventScript_16E3C6
+ goto_if_ne CinnabarIsland_PokemonLab_Lounge_EventScript_NormaNotRequestedMon
copyvar VAR_0x8004, VAR_0x8008
copyvar VAR_0x8005, VAR_0x800A
special CreateInGameTradePokemon
special DoInGameTradeScene
waitstate
- msgbox gUnknown_81A5B4A
+ msgbox Trade_Text_ThanksYoureAPal
setflag FLAG_DID_TANGENY_TRADE
release
end
-EventScript_16E3BC:: @ 816E3BC
- msgbox gUnknown_81A5B08
+CinnabarIsland_PokemonLab_Lounge_EventScript_NormaDeclineTrade:: @ 816E3BC
+ msgbox Trade_Text_ThatsTooBad
release
end
-EventScript_16E3C6:: @ 816E3C6
+CinnabarIsland_PokemonLab_Lounge_EventScript_NormaNotRequestedMon:: @ 816E3C6
getspeciesname 0, VAR_0x8009
- msgbox gUnknown_81A5B18
+ msgbox Trade_Text_ThisIsNoMon
release
end
-EventScript_16E3D4:: @ 816E3D4
- msgbox gUnknown_81A5B60
+CinnabarIsland_PokemonLab_Lounge_EventScript_NormaAlreadyTraded:: @ 816E3D4
+ msgbox Trade_Text_HowIsMyOldMon
release
end
diff --git a/data/maps/CinnabarIsland_PokemonLab_Lounge/text.inc b/data/maps/CinnabarIsland_PokemonLab_Lounge/text.inc
index 24d539c13..7ea854e1f 100644
--- a/data/maps/CinnabarIsland_PokemonLab_Lounge/text.inc
+++ b/data/maps/CinnabarIsland_PokemonLab_Lounge/text.inc
@@ -1,4 +1,4 @@
-gUnknown_8199FB3:: @ 8199FB3
+CinnabarIsland_PokemonLab_Lounge_Text_FoundFossilInMtMoon:: @ 8199FB3
.string "I found this most remarkable fossil\n"
.string "inside MT. MOON.\p"
.string "I think it's of a rare, prehistoric\n"
diff --git a/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/map.json b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/map.json
index 247b09136..1464d0db7 100644
--- a/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/map.json
+++ b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/map.json
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_16E3E5",
+ "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_Scientist",
"flag": "0"
}
],
@@ -56,14 +56,14 @@
"x": 6,
"y": 1,
"elevation": 0,
- "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_16E3F7"
+ "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_AmberPipe"
},
{
"type": "bg_event_type_0",
"x": 3,
"y": 1,
"elevation": 0,
- "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_16E3EE"
+ "script": "CinnabarIsland_PokemonLab_ResearchRoom_EventScript_Computer"
}
]
}
diff --git a/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/scripts.inc b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/scripts.inc
index 3dcd07733..1619d9df3 100644
--- a/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/scripts.inc
+++ b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/scripts.inc
@@ -5,14 +5,14 @@ CinnabarIsland_PokemonLab_ResearchRoom_EventScript_MetronomeTutor:: @ 816E3DF
goto EventScript_MetronomeTutor
end
-CinnabarIsland_PokemonLab_ResearchRoom_EventScript_16E3E5:: @ 816E3E5
- msgbox gUnknown_819A015, MSGBOX_NPC
+CinnabarIsland_PokemonLab_ResearchRoom_EventScript_Scientist:: @ 816E3E5
+ msgbox CinnabarIsland_PokemonLab_ResearchRoom_Text_EeveeCanEvolveIntroThreeMons, MSGBOX_NPC
end
-CinnabarIsland_PokemonLab_ResearchRoom_EventScript_16E3EE:: @ 816E3EE
- msgbox gUnknown_819A04A, MSGBOX_SIGN
+CinnabarIsland_PokemonLab_ResearchRoom_EventScript_Computer:: @ 816E3EE
+ msgbox CinnabarIsland_PokemonLab_ResearchRoom_Text_LegendaryBirdEmail, MSGBOX_SIGN
end
-CinnabarIsland_PokemonLab_ResearchRoom_EventScript_16E3F7:: @ 816E3F7
- msgbox gUnknown_819A128, MSGBOX_SIGN
+CinnabarIsland_PokemonLab_ResearchRoom_EventScript_AmberPipe:: @ 816E3F7
+ msgbox CinnabarIsland_PokemonLab_ResearchRoom_Text_AnAmberPipe, MSGBOX_SIGN
end
diff --git a/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/text.inc b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/text.inc
index e3343e8e3..bdfd1f95c 100644
--- a/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/text.inc
+++ b/data/maps/CinnabarIsland_PokemonLab_ResearchRoom/text.inc
@@ -1,8 +1,8 @@
-gUnknown_819A015:: @ 819A015
+CinnabarIsland_PokemonLab_ResearchRoom_Text_EeveeCanEvolveIntroThreeMons:: @ 819A015
.string "EEVEE can evolve into one of three\n"
.string "kinds of POKéMON.$"
-gUnknown_819A04A:: @ 819A04A
+CinnabarIsland_PokemonLab_ResearchRoom_Text_LegendaryBirdEmail:: @ 819A04A
.string "There's an e-mail message.\p"
.string "… … …\p"
.string "There are three legendary bird\n"
@@ -14,6 +14,6 @@ gUnknown_819A04A:: @ 819A04A
.string "close to CERULEAN.\p"
.string "From: POKéMON RESEARCH TEAM…$"
-gUnknown_819A128:: @ 819A128
+CinnabarIsland_PokemonLab_ResearchRoom_Text_AnAmberPipe:: @ 819A128
.string "An amber pipe!$"
diff --git a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc
index 5694157cc..d28125f72 100644
--- a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc
+++ b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc
@@ -1206,7 +1206,7 @@ EventScript_ThisPokeIsRealyEnergetic:: @ 8169C74
waitmessage
playfanfare MUS_FAN5
waitfanfare
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, YES
goto_if_eq EventScript_GiveNicknameToStarter
compare VAR_RESULT, NO
diff --git a/data/maps/Route11_EastEntrance_2F/scripts.inc b/data/maps/Route11_EastEntrance_2F/scripts.inc
index 93a059d12..68b520e47 100644
--- a/data/maps/Route11_EastEntrance_2F/scripts.inc
+++ b/data/maps/Route11_EastEntrance_2F/scripts.inc
@@ -23,7 +23,7 @@ Route11_EastEntrance_2F_EventScript_16FD5C:: @ 816FD5C
setvar VAR_0x8008, INGAME_TRADE_NIDORINOA
call EventScript_GetInGameTradeSpeciesInfo
goto_if_set FLAG_DID_NINA_TRADE, EventScript_16FDCE
- msgbox gUnknown_81A597B, MSGBOX_YESNO
+ msgbox Trade_Text_LookingForMonWannaTradeForMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16FDB6
call EventScript_ChooseMonForInGameTrade
@@ -33,24 +33,24 @@ Route11_EastEntrance_2F_EventScript_16FD5C:: @ 816FD5C
compare VAR_RESULT, VAR_0x8009
goto_if_ne EventScript_16FDC0
call EventScript_DoInGameTrade
- msgbox gUnknown_81A59DA
+ msgbox Trade_Text_HeyThanks
setflag FLAG_DID_NINA_TRADE
release
end
EventScript_16FDB6:: @ 816FDB6
- msgbox gUnknown_81A59B6
+ msgbox Trade_Text_AwwOhWell
release
end
EventScript_16FDC0:: @ 816FDC0
getspeciesname 0, VAR_0x8009
- msgbox gUnknown_81A59C6
+ msgbox Trade_Text_WhatThatsNoMon
release
end
EventScript_16FDCE:: @ 816FDCE
- msgbox gUnknown_81A59E7
+ msgbox Trade_Text_IsntMyOldMonGreat
release
end
diff --git a/data/maps/Route18_EastEntrance_2F/scripts.inc b/data/maps/Route18_EastEntrance_2F/scripts.inc
index 483aba832..ed29859ab 100644
--- a/data/maps/Route18_EastEntrance_2F/scripts.inc
+++ b/data/maps/Route18_EastEntrance_2F/scripts.inc
@@ -15,7 +15,7 @@ Route18_EastEntrance_2F_EventScript_17047E:: @ 817047E
setvar VAR_0x8008, INGAME_TRADE_LICKITUNG
call EventScript_GetInGameTradeSpeciesInfo
goto_if_set FLAG_DID_MARC_TRADE, EventScript_1704F0
- msgbox gUnknown_81A597B, MSGBOX_YESNO
+ msgbox Trade_Text_LookingForMonWannaTradeForMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_1704D8
call EventScript_ChooseMonForInGameTrade
@@ -25,23 +25,23 @@ Route18_EastEntrance_2F_EventScript_17047E:: @ 817047E
compare VAR_RESULT, VAR_0x8009
goto_if_ne EventScript_1704E2
call EventScript_DoInGameTrade
- msgbox gUnknown_81A59DA
+ msgbox Trade_Text_HeyThanks
setflag FLAG_DID_MARC_TRADE
release
end
EventScript_1704D8:: @ 81704D8
- msgbox gUnknown_81A59B6
+ msgbox Trade_Text_AwwOhWell
release
end
EventScript_1704E2:: @ 81704E2
getspeciesname 0, VAR_0x8009
- msgbox gUnknown_81A59C6
+ msgbox Trade_Text_WhatThatsNoMon
release
end
EventScript_1704F0:: @ 81704F0
- msgbox gUnknown_81A59E7
+ msgbox Trade_Text_IsntMyOldMonGreat
release
end
diff --git a/data/maps/Route2_House/scripts.inc b/data/maps/Route2_House/scripts.inc
index 641689dff..2cdc2d8ec 100644
--- a/data/maps/Route2_House/scripts.inc
+++ b/data/maps/Route2_House/scripts.inc
@@ -11,7 +11,7 @@ Route2_House_EventScript_16F602:: @ 816F602
setvar VAR_0x8008, INGAME_TRADE_MR_MIME
call EventScript_GetInGameTradeSpeciesInfo
goto_if_set FLAG_DID_MIMIEN_TRADE, EventScript_16F674
- msgbox gUnknown_81A597B, MSGBOX_YESNO
+ msgbox Trade_Text_LookingForMonWannaTradeForMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16F65C
call EventScript_ChooseMonForInGameTrade
@@ -21,23 +21,23 @@ Route2_House_EventScript_16F602:: @ 816F602
compare VAR_RESULT, VAR_0x8009
goto_if_ne EventScript_16F666
call EventScript_DoInGameTrade
- msgbox gUnknown_81A59DA
+ msgbox Trade_Text_HeyThanks
setflag FLAG_DID_MIMIEN_TRADE
release
end
EventScript_16F65C:: @ 816F65C
- msgbox gUnknown_81A59B6
+ msgbox Trade_Text_AwwOhWell
release
end
EventScript_16F666:: @ 816F666
getspeciesname 0, VAR_0x8009
- msgbox gUnknown_81A59C6
+ msgbox Trade_Text_WhatThatsNoMon
release
end
EventScript_16F674:: @ 816F674
- msgbox gUnknown_81A59E7
+ msgbox Trade_Text_IsntMyOldMonGreat
release
end
diff --git a/data/maps/Route4_PokemonCenter_1F/scripts.inc b/data/maps/Route4_PokemonCenter_1F/scripts.inc
index 0f310b07d..ca2c5f611 100644
--- a/data/maps/Route4_PokemonCenter_1F/scripts.inc
+++ b/data/maps/Route4_PokemonCenter_1F/scripts.inc
@@ -59,10 +59,10 @@ EventScript_16F7A2:: @ 816F7A2
EventScript_16F7F6:: @ 816F7F6
call EventScript_16F86F
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16F861
- call EventScript_1A8C27
+ call EventScript_GetGiftMonPartySlot
fadescreen FADE_TO_BLACK
hidemoneybox 0, 0
special ChangePokemonNickname
@@ -72,7 +72,7 @@ EventScript_16F7F6:: @ 816F7F6
EventScript_16F822:: @ 816F822
call EventScript_16F86F
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16F84B
fadescreen FADE_TO_BLACK
@@ -85,12 +85,12 @@ EventScript_16F822:: @ 816F822
end
EventScript_16F84B:: @ 816F84B
- call EventScript_1A8C3C
+ call EventScript_TransferredToPC
goto EventScript_16F861
end
EventScript_16F856:: @ 816F856
- call EventScript_1A8C3C
+ call EventScript_TransferredToPC
goto EventScript_16F86A
end
diff --git a/data/maps/SaffronCity_Dojo/scripts.inc b/data/maps/SaffronCity_Dojo/scripts.inc
index 7a061860a..d5c3e6603 100644
--- a/data/maps/SaffronCity_Dojo/scripts.inc
+++ b/data/maps/SaffronCity_Dojo/scripts.inc
@@ -64,7 +64,7 @@ EventScript_16EC82:: @ 816EC82
compare VAR_RESULT, 1
goto_if_eq EventScript_16ECEC
compare VAR_RESULT, 2
- goto_if_eq EventScript_1A927C
+ goto_if_eq EventScript_NoMoreRoomForPokemon
release
end
@@ -76,10 +76,10 @@ EventScript_16ECB5:: @ 816ECB5
waitmessage
waitfanfare
setflag FLAG_GOT_HITMON_FROM_DOJO
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16ED29
- call EventScript_1A8C27
+ call EventScript_GetGiftMonPartySlot
call EventScript_ChangePokemonNickname
goto EventScript_16ED29
end
@@ -92,15 +92,15 @@ EventScript_16ECEC:: @ 816ECEC
waitmessage
waitfanfare
setflag FLAG_GOT_HITMON_FROM_DOJO
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_16ED1E
- call EventScript_1A8C33
+ call EventScript_NameReceivedBoxMon
goto EventScript_16ED1E
end
EventScript_16ED1E:: @ 816ED1E
- call EventScript_1A8C3C
+ call EventScript_TransferredToPC
goto EventScript_16ED29
end
diff --git a/data/maps/SilphCo_7F/scripts.inc b/data/maps/SilphCo_7F/scripts.inc
index 19012f0e4..9ca4f31ec 100644
--- a/data/maps/SilphCo_7F/scripts.inc
+++ b/data/maps/SilphCo_7F/scripts.inc
@@ -136,7 +136,7 @@ SilphCo_7F_EventScript_161AC8:: @ 8161AC8
compare VAR_RESULT, 1
goto_if_eq EventScript_161B45
compare VAR_RESULT, 2
- goto_if_eq EventScript_1A927C
+ goto_if_eq EventScript_NoMoreRoomForPokemon
release
end
@@ -147,10 +147,10 @@ EventScript_161B12:: @ 8161B12
waitmessage
waitfanfare
getspeciesname 0, SPECIES_LAPRAS
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_161B7E
- call EventScript_1A8C27
+ call EventScript_GetGiftMonPartySlot
call EventScript_ChangePokemonNickname
goto EventScript_161B7E
@@ -164,17 +164,17 @@ EventScript_161B45:: @ 8161B45
waitmessage
waitfanfare
getspeciesname 0, SPECIES_LAPRAS
- msgbox gUnknown_81A56A7, MSGBOX_YESNO
+ msgbox Text_GiveNicknameToThisMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq EventScript_161B73
- call EventScript_1A8C33
+ call EventScript_NameReceivedBoxMon
goto EventScript_161B73
EventScript_161B72:: @ 8161B72
end
EventScript_161B73:: @ 8161B73
- call EventScript_1A8C3C
+ call EventScript_TransferredToPC
goto EventScript_161B7E
EventScript_161B7D:: @ 8161B7D
diff --git a/data/maps/UndergroundPath_NorthEntrance/scripts.inc b/data/maps/UndergroundPath_NorthEntrance/scripts.inc
index 70a690828..b34ef1e59 100644
--- a/data/maps/UndergroundPath_NorthEntrance/scripts.inc
+++ b/data/maps/UndergroundPath_NorthEntrance/scripts.inc
@@ -7,7 +7,7 @@ UndergroundPath_NorthEntrance_EventScript_Saige:: @ 8160E39
setvar VAR_0x8008, INGAME_TRADE_NIDORAN
call EventScript_GetInGameTradeSpeciesInfo
goto_if_set FLAG_DID_MS_NIDO_TRADE, UndergroundPath_NorthEntrance_EventScript_AlreadyTraded
- msgbox gUnknown_81A5AD6, MSGBOX_YESNO
+ msgbox Trade_Text_DoYouHaveMonWantToTradeForMon, MSGBOX_YESNO
compare VAR_RESULT, NO
goto_if_eq UndergroundPath_NorthEntrance_EventScript_DeclineTrade
call EventScript_ChooseMonForInGameTrade
@@ -17,23 +17,23 @@ UndergroundPath_NorthEntrance_EventScript_Saige:: @ 8160E39
compare VAR_RESULT, VAR_0x8009
goto_if_ne UndergroundPath_NorthEntrance_EventScript_NotRequestedMon
call EventScript_DoInGameTrade
- msgbox gUnknown_81A5B4A
+ msgbox Trade_Text_ThanksYoureAPal
setflag FLAG_DID_MS_NIDO_TRADE
release
end
UndergroundPath_NorthEntrance_EventScript_DeclineTrade:: @ 8160E93
- msgbox gUnknown_81A5B08
+ msgbox Trade_Text_ThatsTooBad
release
end
UndergroundPath_NorthEntrance_EventScript_NotRequestedMon:: @ 8160E9D
getspeciesname 0, VAR_0x8009
- msgbox gUnknown_81A5B18
+ msgbox Trade_Text_ThisIsNoMon
release
end
UndergroundPath_NorthEntrance_EventScript_AlreadyTraded:: @ 8160EAB
- msgbox gUnknown_81A5B60
+ msgbox Trade_Text_HowIsMyOldMon
release
end
diff --git a/data/naming_screen.s b/data/naming_screen.s
index 121d05c88..b7d348165 100644
--- a/data/naming_screen.s
+++ b/data/naming_screen.s
@@ -16,10 +16,10 @@ gUnknown_83E1980:: @ 83E1980
.incbin "graphics/interface/naming_screen_83E1980.4bpp"
gUnknown_83E2280:: @ 83E2280
- .4byte Text_1A5CF1
- .4byte Text_1A5D31
- .4byte Text_1A5D6E
- .4byte Text_1A5DB1
+ .4byte Text_MonSentToBoxInSomeonesPC
+ .4byte Text_MonSentToBoxInBillsPC
+ .4byte Text_MonSentToBoxSomeonesBoxFull
+ .4byte Text_MonSentToBoxBillsBoxFull
gUnknown_83E2290:: @ 83E2290
.4byte 0x000001e0
diff --git a/data/scripts/fame_checker.inc b/data/scripts/fame_checker.inc
index b9cbcac8c..6fe5607dd 100644
--- a/data/scripts/fame_checker.inc
+++ b/data/scripts/fame_checker.inc
@@ -127,11 +127,11 @@ SaffronCity_PokemonCenter_1F_EventScript_1ACEEC:: @ 81ACEEC
release
end
-CinnabarIsland_Gym_EventScript_1ACF07:: @ 81ACF07
+CinnabarIsland_Gym_EventScript_BlaineFujiPhoto:: @ 81ACF07
lockall
famechecker FAMECHECKER_BLAINE, 4
famechecker FAMECHECKER_MRFUJI, 4
- msgbox Text_199E8A
+ msgbox CinnabarIsland_Gym_Text_PhotoOfBlaineAndFuji
releaseall
end
@@ -260,12 +260,12 @@ LavenderTown_PokemonCenter_1F_EventScript_BaldingMan:: @ 81AD0A0
release
end
-CinnabarIsland_PokemonCenter_1F_EventScript_1AD0B9:: @ 81AD0B9
+CinnabarIsland_PokemonCenter_1F_EventScript_PokemonJournalMrFuji:: @ 81AD0B9
lock
faceplayer
famechecker FAMECHECKER_MRFUJI, 5
textcolor 3
- msgbox gUnknown_81B1BD1
+ msgbox PokemonJournal_Text_SpecialFeatureMrFuji
release
end
diff --git a/data/scripts/pc_transfer.inc b/data/scripts/pc_transfer.inc
new file mode 100644
index 000000000..c04c2d0cd
--- /dev/null
+++ b/data/scripts/pc_transfer.inc
@@ -0,0 +1,46 @@
+EventScript_GetGiftMonPartySlot:: @ 81A8C27
+ getpartysize
+ subvar VAR_RESULT, 1
+ copyvar VAR_0x8004, VAR_RESULT
+ return
+
+EventScript_NameReceivedBoxMon:: @ 81A8C33
+ fadescreen FADE_TO_BLACK
+ special ChangeBoxPokemonNickname
+ waitstate
+ lock
+ faceplayer
+ return
+
+EventScript_TransferredToPC:: @ 81A8C3C
+ bufferboxname 0, VAR_PC_BOX_TO_SEND_MON
+ getspeciesname 1, VAR_TEMP_1
+ call_if_unset FLAG_SYS_NOT_SOMEONES_PC, EventScript_TransferredSomeonesPC
+ call_if_set FLAG_SYS_NOT_SOMEONES_PC, EventScript_TransferredBillsPC
+ return
+
+EventScript_TransferredSomeonesPC:: @ 81A8C57
+ specialvar VAR_RESULT, ShouldShowBoxWasFullMessage
+ compare VAR_RESULT, TRUE
+ goto_if_eq EventScript_TransferredSomeonesPCBoxFull
+ msgbox Text_MonSentToBoxInSomeonesPC
+ return
+
+EventScript_TransferredSomeonesPCBoxFull:: @ 81A8C70
+ specialvar VAR_RESULT, GetPCBoxToSendMon
+ bufferboxname 2, VAR_RESULT
+ msgbox Text_MonSentToBoxSomeonesBoxFull
+ return
+
+EventScript_TransferredBillsPC:: @ 81A8C82
+ specialvar VAR_RESULT, ShouldShowBoxWasFullMessage
+ compare VAR_RESULT, TRUE
+ goto_if_eq EventScript_TransferredBillsPCBoxFull
+ msgbox Text_MonSentToBoxInBillsPC
+ return
+
+EventScript_TransferredBillsPCBoxFull:: @ 81A8C9B
+ specialvar VAR_RESULT, GetPCBoxToSendMon
+ bufferboxname 2, VAR_RESULT
+ msgbox Text_MonSentToBoxBillsBoxFull
+ return
diff --git a/data/strings.s b/data/strings.s
index d25e28e94..e77730429 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -4598,14 +4598,14 @@ gText_WhichMoveShouldBeForgotten:: @ 841E50C
gUnknown_841E52D:: @ 0x841E52D
.string "----------$"
-gUnknown_841E538:: @ 841E538
+gText_CommStandbyAwaitingOtherPlayer:: @ 841E538
.string "Communication standby‥\n"
.string "Awaiting another player to choose.$"
-gUnknown_841E572:: @ 841E572
+gText_BattleWasRefused:: @ 841E572
.string "The battle was refused.{PAUSE 0x3C}$"
-gUnknown_841E58D:: @ 841E58D
+gText_RefusedBattle:: @ 841E58D
.string "Refused the battle.{PAUSE 0x3C}$"
gFameCheckerText_MainScreenUI:: @ 841E5A4
diff --git a/data/text/fame_checker.inc b/data/text/fame_checker.inc
index 3c2cd5ece..8be9aec80 100644
--- a/data/text/fame_checker.inc
+++ b/data/text/fame_checker.inc
@@ -1477,7 +1477,7 @@ gUnknown_81B1B3D:: @ 81B1B3D
.string "Grand Champion is DAISY OAK of\l"
.string "PALLET TOWN!$"
-gUnknown_81B1BD1:: @ 81B1BD1
+PokemonJournal_Text_SpecialFeatureMrFuji:: @ 81B1BD1
.string "POKéMON JOURNAL\p"
.string "Special Feature:\n"
.string "MR. FUJI of POKéMON HOUSE!\p"
diff --git a/data/text/ingame_trade.inc b/data/text/ingame_trade.inc
index 861e2fc1a..0b84b96d6 100644
--- a/data/text/ingame_trade.inc
+++ b/data/text/ingame_trade.inc
@@ -1,21 +1,21 @@
-gUnknown_81A597B:: @ 81A597B
+Trade_Text_LookingForMonWannaTradeForMon:: @ 81A597B
.string "I'm looking for the POKéMON\n"
.string "{STR_VAR_1}!\p"
.string "Wanna trade one for my\n"
.string "{STR_VAR_2}?$"
-gUnknown_81A59B6:: @ 81A59B6
+Trade_Text_AwwOhWell:: @ 81A59B6
.string "Awww!\n"
.string "Oh, well…$"
-gUnknown_81A59C6:: @ 81A59C6
+Trade_Text_WhatThatsNoMon:: @ 81A59C6
.string "What?\n"
.string "That's no {STR_VAR_1}!$"
-gUnknown_81A59DA:: @ 81A59DA
+Trade_Text_HeyThanks:: @ 81A59DA
.string "Hey, thanks!$"
-gUnknown_81A59E7:: @ 81A59E7
+Trade_Text_IsntMyOldMonGreat:: @ 81A59E7
.string "Isn't my old {STR_VAR_2} great?$"
Trade_Text_DoYouHaveMonWouldYouTradeForMon:: @ 81A59FE
@@ -39,22 +39,22 @@ Trade_Text_HasTradedMonGrownStronger:: @ 81A5AA5
.string "The {STR_VAR_2} that I traded you,\n"
.string "has it grown stronger?$"
-gUnknown_81A5AD6:: @ 81A5AD6
+Trade_Text_DoYouHaveMonWantToTradeForMon:: @ 81A5AD6
.string "Hi!\n"
.string "Do you have a {STR_VAR_1}?\p"
.string "Want to trade it for my\n"
.string "{STR_VAR_2}?$"
-gUnknown_81A5B08:: @ 81A5B08
+Trade_Text_ThatsTooBad:: @ 81A5B08
.string "That's too bad.$"
-gUnknown_81A5B18:: @ 81A5B18
+Trade_Text_ThisIsNoMon:: @ 81A5B18
.string "…This is no {STR_VAR_1}.\p"
.string "If you get one, trade it with me.$"
-gUnknown_81A5B4A:: @ 81A5B4A
+Trade_Text_ThanksYoureAPal:: @ 81A5B4A
.string "Thanks, you're a pal!$"
-gUnknown_81A5B60:: @ 81A5B60
+Trade_Text_HowIsMyOldMon:: @ 81A5B60
.string "How is my old {STR_VAR_2}?\n"
.string "My {STR_VAR_1} is doing great!$"
diff --git a/data/text/pc_transfer.inc b/data/text/pc_transfer.inc
new file mode 100644
index 000000000..3e9b99ac8
--- /dev/null
+++ b/data/text/pc_transfer.inc
@@ -0,0 +1,39 @@
+Text_MonSentToBoxInSomeonesPC:: @ 81A5CF1
+ .string "{STR_VAR_2} was transferred to\n"
+ .string "Someone's PC.\p"
+ .string "It was placed in \n"
+ .string "BOX “{STR_VAR_1}.”$"
+
+Text_MonSentToBoxInBillsPC:: @ 81A5D31
+ .string "{STR_VAR_2} was transferred to\n"
+ .string "BILL'S PC.\p"
+ .string "It was placed in \n"
+ .string "BOX “{STR_VAR_1}.”$"
+
+Text_MonSentToBoxSomeonesBoxFull:: @ 81A5D6E
+ .string "BOX “{STR_VAR_3}” on\n"
+ .string "Someone's PC was full.\p"
+ .string "{STR_VAR_2} was transferred to\n"
+ .string "BOX “{STR_VAR_1}.”$"
+
+Text_MonSentToBoxBillsBoxFull:: @ 81A5DB1
+ .string "BOX “{STR_VAR_3}” on\n"
+ .string "BILL'S PC was full.\p"
+ .string "{STR_VAR_2} was transferred to\n"
+ .string "BOX “{STR_VAR_1}.”$"
+
+Text_PlayerObtainedTheMon:: @ 81A5DF1
+ .string "{PLAYER} obtained\n"
+ .string "the {STR_VAR_1}!$"
+
+@ Unused. Translated below
+@ You cannot carry any more Pokemon, so {STR_VAR_2} was sent to PC Box {STR_VAR_1}!
+Text_MonSentToBoxInPC:: @ 81A5E05
+ .string "ポケモンを もちきれないので\n"
+ .string "パソコンの ボックス“{STR_VAR_1}” に\l"
+ .string "{STR_VAR_2}を てんそうした!$"
+
+Text_NoMoreRoomForPokemon:: @ 81A5E31
+ .string "There's no more room for POKéMON!\p"
+ .string "The POKéMON BOXES are full and\n"
+ .string "can't accept any more!$"
diff --git a/data/union_room.s b/data/union_room.s
deleted file mode 100644
index 9bcc4a193..000000000
--- a/data/union_room.s
+++ /dev/null
@@ -1,1571 +0,0 @@
-#include "constants/region_map.h"
-#include "constants/flags.h"
-#include "constants/moves.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .section .rodata
- .align 2
-
-gUnknown_8456C74:: @ 8456C74
- .word gUnknown_84571AC
- .word gUnknown_8459394
- .word gUnknown_84593A4
- .word gUnknown_84593B4
- .word gUnknown_84593C4
- .word gUnknown_84593D4
- .word gUnknown_84593E4
- .word gUnknown_84593F4
- .word gUnknown_84593DC
- .word gUnknown_8459400
- .word gUnknown_8459410
- .word gUnknown_845941C
- .word gUnknown_845942C
- .word gUnknown_8459434
- .word gUnknown_8459440
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84571AC
- .word gUnknown_84593E4
- .word gUnknown_84593F4
-
-gUnknown_8456CD0:: @ 8456CD0
- .byte 0x00, 0x00, 0x00, 0x1E, 0x02, 0x0F @ window template
- .2byte 0x0008
-
- @ pal table?
-gUnknown_8456CD8:: @ 8456CD8
- .2byte 0x0201, 0x0000
- .2byte 0x0202, 0x0000
- .2byte 0x0403, 0x0000
- .2byte 0x0204, 0x0000
- .2byte 0x2509, 0x0000
- .2byte 0x250A, 0x0000
- .2byte 0x350B, 0x0000
- .2byte 0x350D, 0x0000
- .2byte 0x350E, 0x0000
-
-gUnknown_8456CFC:: @ 8456CFC
- .byte 0x00, 0x01, 0x03, 0x0D, 0x0A, 0x0F @ window template
- .2byte 0x0044
-
-gUnknown_8456D04:: @ 8456D04
- .byte 0x00, 0x10, 0x03, 0x07, 0x04, 0x0F @ window template
- .2byte 0x00C6
-
-gUnknown_8456D0C:: @ 8456D0C
- .word gUnknown_84571AC, 0
- .word gUnknown_84571AC, 1
- .word gUnknown_84571AC, 2
- .word gUnknown_84571AC, 3
- .word gUnknown_84571AC, 4
-
-gUnknown_8456D34:: @ 8456D34
- .word gUnknown_8456D0C
- .word NULL
- .word sub_81164C8
- .2byte 0x0005
- .2byte 0x0005
- .byte 0x00, 0x00, 0x01, 0x00, 0x20, 0x31, 0x10, 0x42
-
-gUnknown_8456D4C:: @ 8456D4C
- .byte 0x00, 0x01, 0x03, 0x11, 0x0A, 0x0F @ window template
- .2byte 0x0044
-
-gUnknown_8456D54:: @ 8456D54
- .byte 0x00, 0x14, 0x03, 0x07, 0x04, 0x0F @ window template
- .2byte 0x00EE
-
-gUnknown_8456D5C:: @ 8456D5C
- .word gUnknown_84571AC, 0
- .word gUnknown_84571AC, 1
- .word gUnknown_84571AC, 2
- .word gUnknown_84571AC, 3
- .word gUnknown_84571AC, 4
- .word gUnknown_84571AC, 5
- .word gUnknown_84571AC, 6
- .word gUnknown_84571AC, 7
- .word gUnknown_84571AC, 8
- .word gUnknown_84571AC, 9
- .word gUnknown_84571AC, 10
- .word gUnknown_84571AC, 11
- .word gUnknown_84571AC, 12
- .word gUnknown_84571AC, 13
- .word gUnknown_84571AC, 14
- .word gUnknown_84571AC, 15
-
-gUnknown_8456DDC:: @ 8456DDC
- .word gUnknown_8456D5C
- .word ListMenuDefaultCursorMoveFunc
- .word sub_8116F94
- .2byte 0x0010
- .2byte 0x0005
- .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x50, 0x02
-
-gUnknown_8456DF4:: @ 8456DF4
- .byte 0x00, 0x14, 0x06, 0x08, 0x07, 0x0F @ window template?
- .2byte 0x0001
-
-gUnknown_8456DFC:: @ 8456DFC
- .word gUnknown_8459354, 0x00000208
- .word gUnknown_8459344, 0x00000241
- .word gUnknown_845934C, 0x00000245
- .word gUnknown_8459360, 0x00000040
-
-gUnknown_8456E1C:: @ 8456E1C
- .word gUnknown_8456DFC
- .word ListMenuDefaultCursorMoveFunc
- .word NULL
- .2byte 0x0004
- .2byte 0x0004
- .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02
-
-gUnknown_8456E34:: @ 8456E34
- .byte 0x00, 0x12, 0x08, 0x0B, 0x05, 0x0F @ window template
- .2byte 0x0001
-
-gUnknown_8456E3C:: @ 8456E3C
- .word gText_Register, 1
- .word gUnknown_8459370, 2
- .word gUnknown_8459360, 3
-
-gUnknown_8456E54:: @ 8456E54
- .word gUnknown_8456E3C
- .word ListMenuDefaultCursorMoveFunc
- .word NULL
- .2byte 0x0003
- .2byte 0x0003
- .byte 0x00, 0x00, 0x08, 0x00, 0x20, 0x31, 0x01, 0x02
-
-gUnknown_8456E6C:: @ 8456E6C
- .byte 0x00, 0x14, 0x02, 0x09, 0x0B, 0x0F @ window template
- .2byte 0x0001
-
-gUnknown_8456E74:: @ 8456E74
- .word gTypeNames + 0x00, 0
- .word gTypeNames + 0x46, 10
- .word gTypeNames + 0x4D, 11
- .word gTypeNames + 0x5B, 13
- .word gTypeNames + 0x54, 12
- .word gTypeNames + 0x69, 15
- .word gTypeNames + 0x1C, 4
- .word gTypeNames + 0x23, 5
- .word gTypeNames + 0x0E, 2
- .word gTypeNames + 0x62, 14
- .word gTypeNames + 0x07, 1
- .word gTypeNames + 0x15, 3
- .word gTypeNames + 0x2A, 6
- .word gTypeNames + 0x31, 7
- .word gTypeNames + 0x70, 16
- .word gTypeNames + 0x38, 8
- .word gTypeNames + 0x77, 17
- .word gUnknown_8459360, 18
-
-gUnknown_8456F04:: @ 8456F04
- .word gUnknown_8456E74
- .word ListMenuDefaultCursorMoveFunc
- .word NULL
- .2byte 0x0012
- .2byte 0x0006
- .byte 0x00, 0x00, 0x08, 0x00, 0x22, 0x31, 0x01, 0x02
-
-gUnknown_8456F1C:: @ 8456F1C
- .byte 0x00, 0x01, 0x01, 0x1C, 0x02, 0x0D @ window template
- .2byte 0x0001
-
-gUnknown_8456F24:: @ 8456F24
- .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D @ window template
- .2byte 0x0039
-
-gUnknown_8456F2C:: @ 8456F2C
- .word gUnknown_84571AC, -3
- .word gUnknown_84571AC, 0
- .word gUnknown_84571AC, 1
- .word gUnknown_84571AC, 2
- .word gUnknown_84571AC, 3
- .word gUnknown_84571AC, 4
- .word gUnknown_84571AC, 5
- .word gUnknown_84571AC, 6
- .word gUnknown_84571AC, 7
- .word gUnknown_8459368, 8
-
-gUnknown_8456F7C:: @ 8456F7C
- .word gUnknown_8456F2C
- .word ListMenuDefaultCursorMoveFunc
- .word sub_811ACA4
- .2byte 0x000A
- .2byte 0x0005
- .byte 0x00, 0x00, 0x0C, 0x00, 0xE2, 0xDF, 0x09, 0x02
-
- @ unused window template?
- .byte 0x00, 0x01, 0x05, 0x1C, 0x0A, 0x0D
- .2byte 0x0039
-
-gUnknown_8456F9C:: @ 8456F9C
- .word gUnknown_84571AC, 0
- .word gUnknown_84571AC, 1
- .word gUnknown_84571AC, 2
- .word gUnknown_84571AC, 3
- .word gUnknown_84571AC, 4
- .word gUnknown_84571AC, 5
- .word gUnknown_84571AC, 6
- .word gUnknown_84571AC, 7
- .word gUnknown_84571AC, 8
- .word gUnknown_84571AC, 9
- .word gUnknown_84571AC, 10
- .word gUnknown_84571AC, 11
- .word gUnknown_84571AC, 12
- .word gUnknown_84571AC, 13
- .word gUnknown_84571AC, 14
- .word gUnknown_84571AC, 15
-
-gUnknown_845701C:: @ 845701C
- .word gUnknown_8456F9C
- .word ListMenuDefaultCursorMoveFunc
- .word nullsub_92
- .2byte 0x0010
- .2byte 0x0004
- .byte 0x00, 0x00, 0x08, 0x01, 0x20, 0x31, 0x41, 0x02
-
-gUnknown_8457034:: @ 8457034
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- @ starts at gUnknown_082F0474 in pokeemerald, union link groups
-gUnknown_845704C:: @ 845704C
- .byte 0x01, 0xFF, 0x00, 0x00
-gUnknown_8457050:: @ 8457050
- .byte 0x02, 0xFF, 0x00, 0x00
-gUnknown_8457054:: @ 8457054
- .byte 0x03, 0xFF, 0x00, 0x00
-gUnknown_8457058:: @ 8457058
- .byte 0x04, 0xFF, 0x00, 0x00
-gUnknown_845705C:: @ 845705C
- .byte 0x09, 0xFF, 0x00, 0x00
-gUnknown_8457060:: @ 8457060
- .byte 0x0A, 0xFF, 0x00, 0x00
-gUnknown_8457064:: @ 8457064
- .byte 0x0B, 0xFF, 0x00, 0x00
-gUnknown_8457068:: @ 8457068
- .byte 0x15, 0xFF, 0x00, 0x00
-gUnknown_845706C:: @ 845706C
- .byte 0x16, 0xFF, 0x00, 0x00
-gUnknown_8457070:: @ 8457070
- .byte 0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xFF, 0x00, 0x00
-gUnknown_845707C:: @ 845707C
- .byte 0x0C, 0xFF, 0x00, 0x00
-gUnknown_8457080:: @ 8457080
- .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0x0D, 0xFF, 0x00
-gUnknown_845708C:: @ 845708C
- .byte 0x01, 0x02, 0x03, 0x04, 0x0A, 0xFF, 0x00, 0x00
-
-gUnknown_8457094:: @ 8457094
- .word gUnknown_845704C
- .word gUnknown_8457050
- .word gUnknown_8457054
- .word gUnknown_8457058
- .word gUnknown_845705C
- .word gUnknown_8457060
- .word gUnknown_8457064
- .word gUnknown_8457068
- .word gUnknown_845706C
- .word gUnknown_8457070
- .word gUnknown_845707C
- .word gUnknown_8457080
- .word gUnknown_845708C
-
-gUnknown_84570C8:: @ 84570C8
- .byte 0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0xF7, 0x00, 0xAF, 0xF7, 0x01, 0xFF, 0x00
-
-gUnknown_84570D8:: @ 84570D8
- .byte 0x29, 0x36, 0x27, 0x12, 0x13, 0x14, 0x19, 0x1A, 0x00, 0x00, 0x2A, 0x3A, 0x28, 0x16, 0x17, 0x18, 0x1C, 0x1D, 0x00, 0x00
-
-gUnknown_84570EC:: @ 84570EC
- .2byte 0x0004
- .2byte 0x0006
- .2byte 0x000D
- .2byte 0x0008
- .2byte 0x000A
- .2byte 0x0006
- .2byte 0x0001
- .2byte 0x0008
- .2byte 0x000D
- .2byte 0x0004
- .2byte 0x0007
- .2byte 0x0004
- .2byte 0x0001
- .2byte 0x0004
- .2byte 0x0007
- .2byte 0x0008
-
-gUnknown_845710C:: @ 845710C
- .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01
-
-gUnknown_8457116:: @ 8457116
- .byte 0x00, 0x02, 0x01, 0x04, 0x03
-
-gUnknown_845711B:: @ 845711B
- .byte 0x01, 0x03, 0x01, 0x04, 0x02
-
-gUnknown_8457120:: @ 8457120
- .byte 0x09, 0x08, 0x07, 0x02, 0x06, 0x05, 0x04, 0x03, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00
-
- .align 2
-gUnknown_8457138:: @ 8457138
- abspath "rfu_union_tool.c"
-
- .align 2
-gUnknown_8457174:: @ 8457174
- .asciz "0"
-
- .align 2
-gUnknown_8457178:: @ 8457178
- .asciz "UnionObjWork != NULL"
-
-gUnknown_845718D:: @ 845718D
- .byte 0xA4, 0xFE
-
-gUnknown_845718F:: @ 845718F
- .byte 0xA5, 0xFE, 0x00, 0x00, 0x00
-
-gUnknown_8457194:: @ 8457194
- .2byte 0x01FC, 0x0000 @ BgTemplate
-
-gUnknown_8457198:: @ 8457198
- .byte 0x00, 0x02, 0x0F, 0x1A, 0x04, 0x0E @ window template
- .2byte 0x0014
-
- @ ???
- .byte -1, 0, 0, 0
- .byte 0, 0, 0, 0
-
-gUnknown_84571A8:: @ 84571A8
- .byte 0x01, 0x02, 0x03, 0x00
-
-gUnknown_84571AC:: @ 84571AC
- .string "$"
-
- .align 2
-gUnknown_84571B0:: @ 84571B0
- .string ":$"
-
- .align 2
-gUnknown_84571B4:: @ 84571B4
- .string "{EXTRA 7}$"
-
- .align 2
-gUnknown_84571B8:: @ 84571B8
- .string "Please start over from the beginning.$"
-
- .align 2
-gUnknown_84571E0:: @ 84571E0
- .string "The WIRELESS COMMUNICATION\n"
- .string "SYSTEM search has been canceled.$"
-
- .align 2
- .string "ともだちからの れんらくを\n" @ something about waiting for a friend to connect?
- .string "まっています$"
-
- .align 2
-gUnknown_8457234:: @ 8457234
- .string "{STR_VAR_1}! Awaiting\n"
- .string "communication from another player.$"
-
- .align 2
-gUnknown_8457264:: @ 8457264
- .string "{STR_VAR_1}! Awaiting link!\n"
- .string "Press START when everyone's ready.$"
-
- .align 2
-gJPText_SingleBattle::
- .string "シングルバトルを かいさいする$"
-
- .align 2
-gJPText_DoubleBattle::
- .string "ダブルバトルを かいさいする$"
-
- .align 2
-gJPText_MultiBattle::
- .string "マルチバトルを かいさいする$"
-
- .align 2
-gJPText_TradePokemon::
- .string "ポケモンこうかんを かいさいする$"
-
- .align 2
-gJPText_Chat::
- .string "チャットを かいさいする$"
-
- .align 2
-gJPText_DistWonderCard::
- .string "ふしぎなカードをくばる$"
-
- .align 2
-gJPText_DistWonderNews::
- .string "ふしぎなニュースをくばる$"
-
- .align 2
-unref_text_union_room_1::
- .string "ふしぎなできごとを かいさいする$"
-
- .align 2
-gJPText_HoldPokemonJump::
- .string "なわとびを かいさいする$"
-
- .align 2
-gJPText_HoldBerryCrush::
- .string "きのみマッシャーを かいさいする$"
-
- .align 2
-gJPText_HoldBerryPicking::
- .string "きのみどりを かいさいする$"
-
- .align 2
-gJPText_HoldSpinTrade::
- .string "ぐるぐるこうかんを かいさいする$"
-
- .align 2
-gJPText_HoldSpinShop::
- .string "ぐるぐるショップを かいさいする$"
-
- .align 2
-unref_text_ptrs_union_room_0::
- .word gJPText_SingleBattle
- .word gJPText_DoubleBattle
- .word gJPText_MultiBattle
- .word gJPText_TradePokemon
- .word gJPText_Chat
- .word gJPText_DistWonderCard
- .word gJPText_DistWonderNews
- .word gJPText_DistWonderCard
- .word gJPText_HoldPokemonJump
- .word gJPText_HoldBerryCrush
- .word gJPText_HoldBerryPicking
- .word gJPText_HoldBerryPicking
- .word gJPText_HoldSpinTrade
- .word gJPText_HoldSpinShop
-
-gText_1PlayerNeeded::
- .string "1 player\n"
- .string "needed.$"
-gText_2PlayersNeeded::
- .string "2 players\n"
- .string "needed.$"
-gText_3PlayersNeeded::
- .string "3 players\n"
- .string "needed.$"
-gText_4PlayersNeeded:: @ uhhhh this one is JP but not the others??? but its english in emerald???
- .string "あと4にん\n"
- .string "ひつよう$"
-gText_2PlayerMode::
- .string "2-PLAYER\n"
- .string "MODE$"
-gText_3PlayerMode::
- .string "3-PLAYER\n"
- .string "MODE$"
-gText_4PlayerMode::
- .string "4-PLAYER\n"
- .string "MODE$"
-gText_5PlayerMode::
- .string "5-PLAYER\n"
- .string "MODE$"
-
-gUnknown_845742C:: @ 845742C
- .word gText_1PlayerNeeded
- .word gText_2PlayerMode
- .word NULL
- .word NULL
- .word NULL
-
- .word gText_3PlayersNeeded
- .word gText_2PlayersNeeded
- .word gText_1PlayerNeeded
- .word gText_4PlayerMode
- .word NULL
-
- .word gText_1PlayerNeeded
- .word gText_2PlayerMode
- .word gText_3PlayerMode
- .word gText_4PlayerMode
- .word gText_5PlayerMode
-
- .word gText_2PlayersNeeded
- .word gText_1PlayerNeeded
- .word gText_3PlayerMode
- .word gText_4PlayerMode
- .word gText_5PlayerMode
-
- @ Huh? No 4 ptrs here from pokeemerald?
-
- .align 2
-gUnknown_845747C:: @ 845747C
- .string "{B_BUTTON}CANCEL$"
-
- .align 2
-unref_text_union_room_2::
- .string "ため\nさんかしゃ ぼしゅうちゅう です!$"
-
- .align 2
-gUnknown_84574A0:: @ 84574A0
- .string "{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?$"
-
- .align 2
-gUnknown_84574C4:: @ 84574C4
- .string "{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?$"
-
- .align 2
-gUnknown_84574EC:: @ 84574EC
- .string "{STR_VAR_2} contacted you.\nAdd to the members?$"
-
- .align 2
-gUnknown_8457514:: @ 8457514
- .string "{STR_VAR_1}!\nAre these members OK?$"
-
- .align 2
-gUnknown_8457530:: @ 8457530
- .string "Cancel {STR_VAR_1} MODE\nwith these members?$"
-
- .align 2
-gUnknown_8457554:: @ 8457554
- .string "An “OK” was sent\nto {STR_VAR_1}.$"
-
- .align 2
-gUnknown_845756C:: @ 845756C
- .string "The other TRAINER doesn't appear\nto be available now…\p$"
-
- .align 2
-gUnknown_84575A4:: @ 84575A4
- .string "You can't transmit with a TRAINER\nwho is too far away.\p$"
-
- .align 2
-gUnknown_84575DC:: @ 84575DC
- .string "The other TRAINER(S) is/are not\nready yet.\p$"
-
- .align 2
-gUnknown_8457608:: @ 8457608
- .word gUnknown_84575A4
- .word gUnknown_84575DC
-
- .align 2
-gUnknown_8457610:: @ 8457610
- .string "The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 90}$"
-
- .align 2
-gUnknown_8457644:: @ 8457644
- .string "There is a member who can no\nlonger remain available.\p$"
-
- .align 2
-gUnknown_845767C:: @ 845767C
- .word gUnknown_845756C
- .word gUnknown_8457644
-
- .align 2
-gUnknown_8457684:: @ 8457684
- .string "The other TRAINER appears\nunavailable…\p$"
-
- .align 2
-gUnknown_84576AC:: @ 84576AC
- .string "{STR_VAR_1} sent back an “OK”!$"
-
- .align 2
-gUnknown_84576C4:: @ 84576C4
- .string "{STR_VAR_1} OK'd your registration as\na member.$"
-
- .align 2
-gUnknown_84576EC:: @ 84576EC
- .string "{STR_VAR_1} replied, “No…”\p$"
-
- .align 2
-gUnknown_8457700:: @ 8457700
- .string "{STR_VAR_1}!\nAwaiting other members!$"
-
- .align 2
-gUnknown_845771C:: @ 845771C
- .string "Quit being a member?$"
-
- .align 2
-gUnknown_8457734:: @ 8457734
- .string "You stopped being a member.\p$"
-
- .align 2
-gUnknown_8457754:: @ 8457754
- .word NULL
- .word gUnknown_8457644
- .word gUnknown_8457684
- .word NULL
- .word NULL
- .word NULL
- .word gUnknown_84576EC
- .word NULL
- .word NULL
- .word gUnknown_8457734
-
- .align 2
-gUnknown_845777C:: @ 845777C
- .string "The WIRELESS COMMUNICATION\nSYSTEM link has been established.$"
-
- .align 2
-gUnknown_84577BC:: @ 84577BC
- .string "The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…$"
-
- .align 2
-gUnknown_84577F8:: @ 84577F8
- .string "The link with your friend has been\ndropped…$"
-
- .align 2
-gUnknown_8457824:: @ 8457824
- .string "{STR_VAR_1} replied, “No…”$"
-
- .align 2
-gUnknown_8457838:: @ 8457838
- .word NULL
- .word gUnknown_84577F8
- .word gUnknown_84577F8
- .word NULL
- .word NULL
- .word NULL
- .word gUnknown_8457824
- .word NULL
- .word NULL
- .word NULL
-
- .align 2
-gUnknown_8457860:: @ 8457860
- .string "Do you want the {STR_VAR_2}\nMODE?$"
-
- .align 2
-gUnknown_845787C:: @ 845787C
- .string "Do you want the {STR_VAR_2}\nMODE?$"
-
- .align 2
-gUnknown_8457898:: @ 8457898
- .word gUnknown_8457860
- .word gUnknown_845787C
-
- .align 2
-gUnknown_84578A0:: @ 84578A0
- .string "はなしかけています…\n" @ Communicating... please wait
- .string "しょうしょう おまちください$"
-
- .align 2
-gUnknown_84578BC:: @ 84578BC
- .string "Awaiting {STR_VAR_1}'s response about\nthe trade…$"
-
- .align 2
-gUnknown_84578E4:: @ 84578E4
- .string "Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$"
-
- .align 2
-gUnknown_8457950:: @ 8457950
- .string "Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$"
-
- .align 2
-gUnknown_84579BC:: @ 84579BC
- .string "Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.$"
-
- .align 2
-gUnknown_8457A34:: @ 8457A34
- .word gUnknown_84578E4
- .word gUnknown_8457950
- .word gUnknown_84579BC
-
- .align 2
-gUnknown_8457A40:: @ 8457A40
- .string "Hiya! Is there something that you\nwanted to do?$"
-
- .align 2
-gUnknown_8457A70:: @ 8457A70
- .string "Hello!\nWould you like to do something?$"
-
- .align 2
-gUnknown_8457A98:: @ 8457A98
- .string "{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?$"
-
- .align 2
-gUnknown_8457AD0:: @ 8457AD0
- .string "{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?$"
-
- .align 2
-gUnknown_8457B04:: @ 8457B04
- .word gUnknown_8457A40
- .word gUnknown_8457A70
- .word gUnknown_8457A98
- .word gUnknown_8457AD0
-
- .align 2
-gUnknown_8457B14:: @ 8457B14
- .string "Want to do something?$"
-
- .align 2
-gUnknown_8457B2C:: @ 8457B2C
- .string "Would you like to do something?$"
-
- .align 2
-gUnknown_8457B4C:: @ 8457B4C
- .string "{STR_VAR_1}: What would you like to\ndo now?$"
-
- .align 2
-gUnknown_8457B70:: @ 8457B70
- .string "{STR_VAR_1}‘また なにかする?$" @ Want to do anything else?
-
- .align 2
-gUnknown_8457B80:: @ 8457B80
- .word gUnknown_8457B14
- .word gUnknown_8457B2C
- .word gUnknown_8457B4C
- .word gUnknown_8457B4C
-
- .align 2
-gUnknown_8457B90:: @ 8457B90
- .string "Somebody has contacted you.{PAUSE 60}$"
-
- .align 2
-gUnknown_8457BA0:: @ 8457BA0
- .string "{STR_VAR_1} has contacted you.{PAUSE 60}$"
-
- .align 2
-gUnknown_8457BCC:: @ 8457BCC
- .word gUnknown_8457B90
- .word gUnknown_8457BA0
-
- .align 2
-gUnknown_8457BD4:: @ 8457BD4
- .string "Awaiting a response from\nthe other TRAINER…$"
-
- .align 2
-gUnknown_8457C00:: @ 8457C00
- .string "Awaiting a response from\n{STR_VAR_1}…$"
-
- .align 2
-gUnknown_8457C20:: @ 8457C20
- .word gUnknown_8457BD4
- .word gUnknown_8457C00
-
- .align 2
-gUnknown_8457C28:: @ 8457C28
- .string "あいての ていあんを まっています\n"
- .string "ビーボタンで キャンセル$"
-
- .align 2
-gUnknown_8457C48:: @ 8457C48
- .string "The other TRAINER showed\n"
- .string "you their TRAINER CARD.\p"
- .string "Would you like to show your\n"
- .string "TRAINER CARD?$"
-
- .align 2
-gUnknown_8457CA4:: @ 8457CA4
- .string "The other TRAINER challenges you\n"
- .string "to battle.\p"
- .string "Will you accept the battle\n"
- .string "challenge?$"
-
- .align 2
-gUnknown_8457CF8:: @ 8457CF8
- .string "The other TRAINER invites you\n"
- .string "to chat.\p"
- .string "Will you accept the chat\n"
- .string "invitation?$"
-
- .align 2
-gUnknown_8457D44:: @ 8457D44
- .string "There is an offer to trade your\n"
- .string "registered Lv. {DYNAMIC 0} {DYNAMIC 1}\p"
- .string "in exchange for a\n"
- .string "Lv. {DYNAMIC 2} {DYNAMIC 3}.\p"
- .string "Will you accept this trade\n"
- .string "offer?$"
-
- .align 2
-gUnknown_8457DB8:: @ 8457DB8
- .string "There is an offer to trade your\n"
- .string "registered EGG.\l"
- .string "Will you accept this trade offer?$"
-
- .align 2
-gUnknown_8457E0C:: @ 8457E0C
- .string "The chat has been dropped.\p$"
-
-gUnknown_8457E28:: @ 8457E28
- .string "You declined the offer.\p$"
-
- .align 2
-gUnknown_8457E44:: @ 8457E44
- .string "You declined the offer.\p$"
-
- .align 2
-gUnknown_8457E60:: @ 8457E60
- .string "The chat was ended.\p$"
- .align 2
-
-gUnknown_8457E78::
- .4byte gUnknown_8457C48
- .4byte gUnknown_8457CA4
- .4byte gUnknown_8457CF8
- .4byte gUnknown_8457D44
-
- .align 2
-gUnknown_8457E88::
- .string "Oh, hey! We're in a chat right now.\n"
- .string "Want to join us?$"
-
- .align 2
-gUnknown_8457EC0::
- .string "{STR_VAR_1}: Hey, {PLAYER}!\n"
- .string "We're having a chat right now.\l"
- .string "Want to join us?$"
-
- .align 2
-gUnknown_8457F00::
- .string "Oh, hi! We're having a chat now.\n"
- .string "Would you like to join us?$"
-
- .align 2
-gUnknown_8457F3C::
- .string "{STR_VAR_1}: Oh, hi, {PLAYER}!\n"
- .string "We're having a chat now.\l"
- .string "Would you like to join us?$"
-
- .align 2
-gUnknown_8457F80:: @ 8457F80
- .4byte gUnknown_8457E88
- .4byte gUnknown_8457F00
- .4byte gUnknown_8457EC0
- .4byte gUnknown_8457F3C
-
-gUnknown_8457F90:: @ 8457F90
- .string "……\n"
- .string "The TRAINER appears to be busy…\p$"
-
- .align 2
-gUnknown_8457FB4::
- .string "A battle, huh?\n"
- .string "All right, just give me some time.$"
-
- .align 2
-gUnknown_8457FE8::
- .string "You want to chat, huh?\n"
- .string "Sure, just wait a little.$"
-
- .align 2
-gUnknown_845801C::
- .string "Sure thing! As my “Greetings,”\n"
- .string "here's my TRAINER CARD.$"
-
- .align 2
-gUnknown_8458054::
- .string "A battle? Of course, but I need\n"
- .string "time to get ready.$"
-
- .align 2
-gUnknown_8458088::
- .string "Did you want to chat?\n"
- .string "Okay, but please wait a moment.$"
-
- .align 2
-gUnknown_84580C0::
- .string "As my introduction, I'll show you\n"
- .string "my TRAINER CARD.$"
-
- .align 2
-gUnknown_84580F4:: @ 84580F4
- .4byte gUnknown_8457FB4
- .4byte gUnknown_8457FE8
- .4byte 0
- .4byte gUnknown_845801C
- .4byte gUnknown_8458054
- .4byte gUnknown_8458088
- .4byte 0
- .4byte gUnknown_84580C0
-
- .align 2
- .string "チャットだね!\n" @ You want to chat, huh? Sure, just wait a little.
- .string "わかった ちょっと まってて!$"
-
- .align 2
-gUnknown_845812C::
- .string "Thanks for waiting!\n"
- .string "Let's get our battle started!{PAUSE 60}$"
-
- .align 2
-gUnknown_8458164::
- .string "All right!\n"
- .string "Let's chat!{PAUSE 60}$"
-
- .align 2
-gUnknown_8458180::
- .string "Sorry I made you wait!\n"
- .string "Let's get started!{PAUSE 60}$"
-
- .align 2
-gUnknown_84581B0::
- .string "Sorry I made you wait!\n"
- .string "Let's chat.{PAUSE 60}$"
-
- .align 2
-gUnknown_84581D8::
- .string "The trade will be started.{PAUSE 60}$"
-
- .align 2
-gUnknown_84581F8::
- .string "The battle will be started.{PAUSE 60}$"
-
- .align 2
-gUnknown_8458218::
- .string "Entering the chat…{PAUSE 60}$"
-
- .align 2
-gUnknown_8458230:: @ 8458230
- .4byte gUnknown_84581F8
- .4byte gUnknown_8458218
- .4byte gUnknown_84581D8
- .4byte gUnknown_84581F8
- .4byte gUnknown_8458218
- .4byte gUnknown_84581D8
- .4byte gUnknown_845812C
- .4byte gUnknown_8458164
- .4byte gUnknown_84581D8
- .4byte gUnknown_8458180
- .4byte gUnknown_84581B0
- .4byte gUnknown_84581D8
-
-gUnknown_8458260::
- .string "Sorry! My POKéMON don't seem to\n"
- .string "be feeling too well right now.\l"
- .string "Let me battle you another time.\p$"
-
-gUnknown_84582C0::
- .string "I'm terribly sorry, but my POKéMON\n"
- .string "aren't feeling well…\p"
- .string "Let's battle another time.\p$"
-
-gUnknown_8458314:: @ 8458314
- .4byte gUnknown_8458260
- .4byte gUnknown_84582C0
-
- .align 2
-gUnknown_845831C::
- .string "Huh? My TRAINER CARD…\n"
- .string "Where'd it go now?\l"
- .string "Sorry! I'll show you another time!\p$"
-
- .align 2
-gUnknown_845836C::
- .string "Oh? Now where did I put my\n"
- .string "TRAINER CARD?…\l"
- .string "Sorry! I'll show you later!\p$"
-
- .align 2
-gUnknown_84583B4:: @ 84583B4
- .4byte gUnknown_845831C
- .4byte gUnknown_845836C
-
- .align 2
-gUnknown_84583BC::
- .string "If you want to do something with\n"
- .string "me, just give me a shout!\p$"
- .align 2
-gUnknown_84583F8::
- .string "If you want to do something with\n"
- .string "me, don't be shy.\p$"
-
- .align 2
-gUnknown_845842C:: @ 845842C
- .4byte gUnknown_84583BC
- .4byte gUnknown_84583F8
-
-gUnknown_8458434:: @ 8458434
- .string "Whoops! Sorry, but I have to do\n"
- .string "something else.\l"
- .string "Another time, okay?\p$"
-
- .align 2
-gUnknown_845847C:: @ 845847C
- .string "If you want to battle, you need\n"
- .string "two POKéMON that are below\l"
- .string "Lv. 30.\p$"
-
-gUnknown_84584C0:: @ 84584C0
- .string "For a battle, you need two\n"
- .string "POKéMON that are below Lv. 30.\p$"
-
- .align 2
-gUnknown_84584FC::
- .string "Oh, all right.\n"
- .string "Come see me anytime, okay?\p$"
-
- .align 2
-gUnknown_8458528::
- .string "Oh…\n"
- .string "Please come by anytime.\p$"
-
- .align 2
-gUnknown_8458548:: @ 8458548
- .4byte gUnknown_84584FC
- .4byte gUnknown_8458528
-
- .align 2
-gUnknown_8458550::
- .string "Oh, sorry!\n"
- .string "I just can't right this instant.\l"
- .string "Let's chat another time.\p$"
-
- .align 2
-gUnknown_8458598::
- .string "Oh, I'm sorry.\n"
- .string "I have too much to do right now.\l"
- .string "Let's chat some other time.\p$"
-
- .align 2
-gUnknown_84585E8:: @ 84585E8
- .4byte gUnknown_8458550
- .4byte gUnknown_8458598
-
- .align 2
-gUnknown_84585F0::
- .string "Whoa!\n"
- .string "I can tell you're pretty tough!\p$"
-
- .align 2
-gUnknown_8458618::
- .string "You used that move?\n"
- .string "That's good strategy!\p$"
-
- .align 2
-gUnknown_8458644::
- .string "Way to go!\n"
- .string "That was an eye-opener!\p$"
-
- .align 2
-gUnknown_8458668::
- .string "Oh! How could you use that\n"
- .string "POKéMON in that situation?\p$"
-
- .align 2
-gUnknown_84586A0::
- .string "That POKéMON…\n"
- .string "It's been raised really well!\p$"
-
- .align 2
-gUnknown_84586D0::
- .string "That's it!\n"
- .string "This is the right move now!\p$"
-
- .align 2
-gUnknown_84586F8::
- .string "That's awesome!\n"
- .string "You can battle that way?\p$"
-
- .align 2
-gUnknown_8458724::
- .string "You have exquisite timing for\n"
- .string "switching POKéMON!\p$"
-
- .align 2
-gUnknown_8458758:: @ 8458758
- .4byte gUnknown_84585F0
- .4byte gUnknown_8458618
- .4byte gUnknown_8458644
- .4byte gUnknown_8458668
- .4byte gUnknown_84586A0
- .4byte gUnknown_84586D0
- .4byte gUnknown_84586F8
- .4byte gUnknown_8458724
-
- .align 2
-gUnknown_8458778::
- .string "Oh, I see!\n"
- .string "This is educational!\p$"
-
- .align 2
-gUnknown_845879C::
- .string "Don't say anything funny anymore!\n"
- .string "I'm sore from laughing!\p$"
-
- .align 2
-gUnknown_84587D8::
- .string "Oh?\n"
- .string "Something like that happened.\p$"
-
- .align 2
-gUnknown_84587FC::
- .string "Hmhm… What?\n"
- .string "So is this what you're saying?\p$"
-
- .align 2
-gUnknown_8458828::
- .string "Is that right?\n"
- .string "I didn't know that.\p$"
-
- .align 2
-gUnknown_845884C::
- .string "Ahaha!\n"
- .string "What is that about?\p$"
-
- .align 2
-gUnknown_8458868::
- .string "Yes, that's exactly it!\n"
- .string "That's what I meant.\p$"
-
- .align 2
-gUnknown_8458898::
- .string "In other words…\n"
- .string "Yes! That's right!\p$"
-
- .align 2
-gUnknown_84588BC:: @ 84588BC
- .4byte gUnknown_8458778
- .4byte gUnknown_845879C
- .4byte gUnknown_84587D8
- .4byte gUnknown_84587FC
- .4byte gUnknown_8458828
- .4byte gUnknown_845884C
- .4byte gUnknown_8458868
- .4byte gUnknown_8458898
-
- .align 2
-gUnknown_84588DC::
- .string "I'm just showing my TRAINER CARD\n"
- .string "as my way of greeting.\p$"
-
- .align 2
-gUnknown_8458918::
- .string "I hope I get to know you better!\p$"
-
- .align 2
-gUnknown_845893C::
- .string "We're showing each other our\n"
- .string "TRAINER CARDS to get acquainted.\p$"
-
- .align 2
-gUnknown_845897C::
- .string "Glad to meet you.\n"
- .string "Please don't be a stranger!\p$"
-
- .align 2
-gUnknown_84589AC:: @ 84589AC
- .4byte gUnknown_84588DC
- .4byte gUnknown_8458918
- .4byte gUnknown_845893C
- .4byte gUnknown_845897C
-
- .align 2
-gUnknown_84589BC::
- .string "Yeahah!\n"
- .string "I really wanted this POKéMON!\p$"
-
- .align 2
-gUnknown_84589E4::
- .string "Finally, a trade got me that\n"
- .string "POKéMON I'd wanted a long time.\p$"
-
- .align 2
-gUnknown_8458A24::
- .string "I'm trading POKéMON right now.\p$"
-
- .align 2
-gUnknown_8458A44::
- .string "I finally got that POKéMON I\n"
- .string "wanted in a trade!\p$"
-
- .align 2
-gUnknown_8458A78:: @ 8458A78
- .4byte gUnknown_84589BC
- .4byte gUnknown_84589E4
- .4byte NULL
- .4byte NULL
- .4byte gUnknown_8458A24
- .4byte gUnknown_8458A44
- .4byte NULL
- .4byte NULL
-
-gUnknown_8458A98:: @ 8458A98
- .string "{STR_VAR_1} checked the\n"
- .string "TRADING BOARD.\p$"
-
- .align 2
-gUnknown_8458AB8:: @ 8458AB8
- .string "Welcome to the TRADING BOARD.\p"
- .string "You may register your POKéMON\n"
- .string "and offer it up for a trade.\p"
- .string "Would you like to register one of\n"
- .string "your POKéMON?$"
-
- .align 2
-gUnknown_8458B44:: @ 8458B44
- .string "This TRADING BOARD is used for\n"
- .string "offering a POKéMON for a trade.\p"
- .string "All you need to do is register a\n"
- .string "POKéMON for a trade.\p"
- .string "Another TRAINER may offer a party\n"
- .string "POKéMON in return for the trade.\p"
- .string "We hope you will register POKéMON\n"
- .string "and trade them with many, many\l"
- .string "other TRAINERS.\p"
- .string "Would you like to register one of\n"
- .string "your POKéMON?$"
-
- .align 2
- .string "こうかんけいじばん の とうろくが\n"
- .string "かんりょう しました\p"
- .string "ごりよう ありがとう\n"
- .string "ございました!\p$"
-
- .align 2
- .string "けいじばんに だれも ポケモンを\n"
- .string "とうろく していません\p\n$"
-
- .align 2
-gUnknown_8458CD4:: @ 8458CD4
- .string "Please choose the type of POKéMON\n"
- .string "that you would like in the trade.\n$"
-
- .align 2
-gUnknown_8458D1C:: @ 8458D1C
- .string "Which of your party POKéMON will\n"
- .string "you offer in trade?\p$"
-
- .align 2
-gUnknown_8458D54:: @ 8458D54
- .string "Registration has been canceled.\p$"
-
- .align 2
-gUnknown_8458D78:: @ 8458D78
- .string "Registration has been completed.\p$"
-
- .align 2
-gUnknown_8458D9C:: @ 8458D9C
- .string "The trade has been canceled.\p$"
-
- .align 2
-gUnknown_8458DBC:: @ 8458DBC
- .string "Cancel the registration of your\n"
- .string "Lv. {STR_VAR_2} {STR_VAR_1}?$"
-
- .align 2
-gUnknown_8458DE8:: @ 8458DE8
- .string "Cancel the registration of your\n"
- .string "EGG?$"
-
- .align 2
-gUnknown_8458E10:: @ 8458E10
- .string "The registration has been canceled.\p$"
-
- .align 2
- .string "こうかんを きぼうしているひとを\n"
- .string "ひょうじします$"
-
- .align 2
- .string "こうかん したい トレーナーを\n"
- .string "えらんで ください$"
-
- .align 2
-gUnknown_8458E70:: @ 8458E70
- .string "Would you like to ask {STR_VAR_1} to\n"
- .string "make a trade?$"
-
- .align 2
- .string "……\n"
- .string "あいての へんじを まっています$"
-
- .align 2
- .string "あなたが こうかんにだす\n"
- .string "ポケモンが とうろくされていません\p$"
-
- .align 2
-gUnknown_8458ED0:: @ 8458ED0
- .string "You don't have a {STR_VAR_2}-type\n"
- .string "POKéMON that {STR_VAR_1} wants.\p$"
-
- .align 2
-gUnknown_8458F04:: @ 8458F04
- .string "You don't have an EGG that\n"
- .string "{STR_VAR_1} wants.\p$"
-
- .align 2
-gUnknown_8458F2C:: @ 8458F2C
- .string "{STR_VAR_1} can't make a trade for\n"
- .string "your POKéMON right now.\p$"
-
- .align 2
-gUnknown_8458F60:: @ 8458F60
- .string "You can't make a trade for\n"
- .string "{STR_VAR_1}'s POKéMON right now.\p$"
-
- .align 2
-gUnknown_8458F94:: @ 8458F94
- .word gUnknown_8458F2C
- .word gUnknown_8458F60
-
-gUnknown_8458F9C:: @ 8458F9C
- .string "Your trade offer was rejected.\p$"
-
-gUnknown_8458FBC:: @ 8458FBC
- .string "EGG TRADE$"
-
- .align 2
-gUnknown_8458FC8:: @ 8458FC8
- .string "{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL$"
-
- .align 2
-gUnknown_8458FE4:: @ 8458FE4
- .string "Please choose a TRAINER.$"
-
- .align 2
-gUnknown_8459000::
- .string "Please choose a TRAINER for\n"
- .string "a SINGLE BATTLE.$"
-
- .align 2
-gUnknown_8459030::
- .string "Please choose a TRAINER for\n"
- .string "a DOUBLE BATTLE.$"
-
- .align 2
-gUnknown_8459060::
- .string "Please choose the LEADER\n"
- .string "for a MULTI BATTLE.$"
-
- .align 2
-gUnknown_8459090::
- .string "Please choose the TRAINER to\n"
- .string "trade with.$"
-
- .align 2
-gUnknown_84590BC::
- .string "Please choose the TRAINER who is\n"
- .string "sharing WONDER CARDS.$"
-
- .align 2
-gUnknown_84590F4::
- .string "Please choose the TRAINER who is\n"
- .string "sharing WONDER NEWS.$"
-
- .align 2
-gUnknown_845912C::
- .string "Jump with mini POKéMON!\n"
- .string "Please choose the LEADER.$"
-
- .align 2
-gUnknown_8459160::
- .string "BERRY CRUSH!\n"
- .string "Please choose the LEADER.$"
-
- .align 2
-gUnknown_8459188::
- .string "DODRIO BERRY-PICKING!\n"
- .string "Please choose the LEADER.$"
-
- .align 2
-gUnknown_84591B8:: @ 84591B8
- .4byte gUnknown_8459000
- .4byte gUnknown_8459030
- .4byte gUnknown_8459060
- .4byte gUnknown_8459090
- .4byte gUnknown_845912C
- .4byte gUnknown_8459160
- .4byte gUnknown_8459188
- .4byte gUnknown_84590BC
- .4byte gUnknown_84590F4
-
- .align 2
-gUnknown_84591DC:: @ 84591DC
- .string "Searching for a WIRELESS\n"
- .string "COMMUNICATION SYSTEM. Wait...$"
-
- .align 2
- .string "ダブルバトルでは 2ひき いじょうの\n"
- .string "ポケモンが ひつようです\p$"
-
- .align 2
-gUnknown_8459238:: @ 8459238
- .string "Awaiting {STR_VAR_1}'s response…$"
-
- .align 2
-gUnknown_8459250:: @ 8459250
- .string "{STR_VAR_1} has been asked to register\n"
- .string "you as a member. Please wait.$"
-
- .align 2
-gUnknown_845928C:: @ 845928C
- .string "Awaiting a response from the\n"
- .string "WIRELESS COMMUNICATION SYSTEM.$"
-
- .align 2
- .string "ほかの さんかしゃが そろうまで\n"
- .string "しょうしょう おまちください$"
-
- .align 2
-gUnknown_84592E8:: @ 84592E8
- .string "No CARDS appear to be shared \n"
- .string "right now.$"
-
- .align 2
-gUnknown_8459314:: @ 8459314
- .string "No NEWS appears to be shared\n"
- .string "right now.$"
-
-gUnknown_845933C:: @ 845933C
- .word gUnknown_84592E8
- .word gUnknown_8459314
-
- .align 2
-gUnknown_8459344:: @ 8459344
- .string "BATTLE$"
-
- .align 2
-gUnknown_845934C:: @ 845934C
- .string "CHAT$"
-
- .align 2
-gUnknown_8459354:: @ 8459354
- .string "GREETINGS$"
-
- .align 2
-gUnknown_8459360:: @ 8459360
- .string "EXIT$"
-
- .align 2
-gUnknown_8459368:: @ 8459368
- .string "EXIT$"
-
- .align 2
-gUnknown_8459370:: @ 8459370
- .string "INFO$"
-
- .align 2
-gUnknown_8459378:: @ 8459378
- .string "NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.$"
-
- .align 2
-gUnknown_8459394:: @ 8459394
- .string "SINGLE BATTLE$"
-
- .align 2
-gUnknown_84593A4:: @ 84593A4
- .string "DOUBLE BATTLE$"
-
- .align 2
-gUnknown_84593B4:: @ 84593B4
- .string "MULTI BATTLE$"
-
- .align 2
-gUnknown_84593C4:: @ 84593C4
- .string "POKéMON TRADES$"
-
- .align 2
-gUnknown_84593D4:: @ 84593D4
- .string "CHAT$"
-
- .align 2
-gUnknown_84593DC:: @ 84593DC
- .string "CARDS$"
-
- .align 2
-gUnknown_84593E4:: @ 84593E4
- .string "WONDER CARDS$"
-
- .align 2
-gUnknown_84593F4:: @ 84593F4
- .string "WONDER NEWS$"
-
- .align 2
-gUnknown_8459400:: @ 8459400
- .string "POKéMON JUMP$"
-
- .align 2
-gUnknown_8459410:: @ 8459410
- .string "BERRY CRUSH$"
-
- .align 2
-gUnknown_845941C:: @ 845941C
- .string "BERRY-PICKING$"
-
- .align 2
-gUnknown_845942C:: @ 845942C
- .string "SEARCH$"
-
- .align 2
-gUnknown_8459434:: @ 8459434
- .string "ぐるぐるこうかん$"
-
- .align 2
-gUnknown_8459440:: @ 8459440
- .string "アイテムトレード$"
-
- .align 2
-gUnknown_845944C:: @ 845944C
- .string "It's a NORMAL CARD.$"
-
- .align 2
-gUnknown_8459460:: @ 459460
- .string "It's a BRONZE CARD!$"
-
- .align 2
-gUnknown_8459474:: @ 8459474
- .string "It's a COPPER CARD!$"
-
- .align 2
-gUnknown_8459488:: @ 8459488
- .string "It's a SILVER CARD!$"
-
- .align 2
-gUnknown_845949C:: @ 845949C
- .string "It's a GOLD CARD!$"
-
- .align 2
-gUnknown_84594B0:: @ 84594B0
- .word gUnknown_845944C
- .word gUnknown_8459460
- .word gUnknown_8459474
- .word gUnknown_8459488
- .word gUnknown_845949C
-
- .align 2
-gUnknown_84594C4:: @ 84594C4
- .string "This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p$"
-
- .align 2
-gUnknown_8459504:: @ 8459504
- .string "BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p$"
-
- .align 2
-gUnknown_8459544:: @ 8459544
- .string "{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}$"
-
- .align 2
-gUnknown_8459564:: @ 8459564
- .string "{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}$"
-
- .align 2
-gUnknown_8459580:: @ 8459580
- .word gUnknown_8459544
- .word gUnknown_8459564
-
- .align 2
-gUnknown_8459588:: @ 8459588
- .string "Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}$"
-
- @ why is this data here of all places?
-
- .align 2
-gUnknown_84595B0::
- .string "Canceled reading the Card.$"
-
- .align 2
-gUnknown_84595CC::
- .4byte 0x02, 0x15 @ RECEIVE ID(0x15)
- .4byte 0x0c, 0x00 @ READ PACKET AND COMPUTER SOMETHING
- .4byte 0x14, 0x00 @ SEND ALL
- .4byte 0x01, 0x0e @ RETURN 0x0e
-
-gMEventSrvScript_OtherTrainerCanceled:: @ 84595EC @ referenced in mevent/script_common.inc
- .4byte 0x12, 0x20, gUnknown_84595CC @ SEND
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x14, 0x1b, gUnknown_84595B0 @ SEND_STR
- .4byte 0x01, 0x00, NULL @ WAIT SEND
- .4byte 0x02, 0x14, NULL @ RECV
- .4byte 0x00, 0x09, NULL @ RETURN (other trainer canceled)
diff --git a/include/berry_crush.h b/include/berry_crush.h
new file mode 100644
index 000000000..2583aba61
--- /dev/null
+++ b/include/berry_crush.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_CRUSH_H
+#define GUARD_BERRY_CRUSH_H
+
+void sub_814B754(MainCallback callback);
+
+#endif //GUARD_BERRY_CRUSH_H
diff --git a/include/cable_club.h b/include/cable_club.h
index 5375c2210..c1dbab1a5 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -10,5 +10,6 @@
// Exported ROM declarations
void sub_8081A90(u8 taskId);
u8 sub_8081150(void);
+void sub_8081668(void);
#endif //GUARD_CABLE_CLUB_H
diff --git a/include/constants/battle.h b/include/constants/battle.h
index 2da89d815..b28955210 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -58,14 +58,15 @@
#define BATTLE_TYPE_EREADER_TRAINER 0x0800
#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
#define BATTLE_TYPE_LEGENDARY 0x2000
+#define BATTLE_TYPE_GHOST_UNVEILED 0x2000 // Re-use of BATTLE_TYPE_LEGENDARY, when combined with BATTLE_TYPE_GHOST
#define BATTLE_TYPE_REGI 0x4000
#define BATTLE_TYPE_GHOST 0x8000
#define BATTLE_TYPE_POKEDUDE 0x10000
-#define BATTLE_TYPE_PALACE 0x20000
-#define BATTLE_TYPE_ARENA 0x40000
+#define BATTLE_TYPE_WILD_SCRIPTED 0x20000
+#define BATTLE_TYPE_LEGENDARY_FRLG 0x40000
#define BATTLE_TYPE_TRAINER_TOWER 0x80000
-#define BATTLE_TYPE_PIKE 0x100000
-#define BATTLE_TYPE_PYRAMID 0x200000
+#define BATTLE_TYPE_x100000 0x100000
+#define BATTLE_TYPE_x200000 0x200000
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
#define BATTLE_TYPE_x800000 0x800000
#define BATTLE_TYPE_RECORDED 0x1000000
@@ -76,8 +77,9 @@
#define BATTLE_TYPE_KYOGRE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
#define BATTLE_TYPE_x80000000 0x80000000
-#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
-#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
+
+#define IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && !((flags) & BATTLE_TYPE_GHOST_UNVEILED))
+#define IS_BATTLE_TYPE_GHOST_WITH_SCOPE(flags) ((flags) & BATTLE_TYPE_GHOST && (flags) & BATTLE_TYPE_GHOST_UNVEILED)
// Battle Outcome defines
#define B_OUTCOME_WON 0x1
diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h
index f55661b91..d23648f39 100644
--- a/include/constants/battle_ai.h
+++ b/include/constants/battle_ai.h
@@ -23,7 +23,7 @@
#define AI_EFFECTIVENESS_x0 0
// ai weather
-#define AI_WEATHER_SUNNY 0
+#define AI_WEATHER_SUN 0
#define AI_WEATHER_RAIN 1
#define AI_WEATHER_SANDSTORM 2
#define AI_WEATHER_HAIL 3
@@ -35,8 +35,8 @@
// script's table id to bit
#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0)
-#define AI_SCRIPT_TRY_TO_FAINT (1 << 1)
-#define AI_SCRIPT_CHECK_VIABILITY (1 << 2)
+#define AI_SCRIPT_CHECK_VIABILITY (1 << 1)
+#define AI_SCRIPT_TRY_TO_FAINT (1 << 2)
#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3)
#define AI_SCRIPT_RISKY (1 << 4)
#define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5)
diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h
index 6a4405b65..bf75a47cc 100644
--- a/include/constants/event_object_movement.h
+++ b/include/constants/event_object_movement.h
@@ -1,6 +1,7 @@
#ifndef GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
#define GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
+// FIXME: Different in FRLG
#define MOVEMENT_TYPE_NONE 0x0
#define MOVEMENT_TYPE_LOOK_AROUND 0x1
#define MOVEMENT_TYPE_WANDER_AROUND 0x2
@@ -239,8 +240,10 @@
#define MOVEMENT_ACTION_STOP_LEVITATE 0x99
#define MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP 0x9A
#define MOVEMENT_ACTION_FIGURE_8 0x9B
-#define MOVEMENT_ACTION_FLY_UP 0x9C
-#define MOVEMENT_ACTION_FLY_DOWN 0x9D
+
+// These two are verified correct in FRLG
+#define MOVEMENT_ACTION_FLY_UP 0xA4
+#define MOVEMENT_ACTION_FLY_DOWN 0xA5
#define MOVEMENT_ACTION_STEP_END 0xFE
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index fc8418b44..1bbc360df 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -68,7 +68,18 @@
#define METATILE_PokemonMansion_Statue_RedEyes_Shade 0x34E
#define METATILE_PokemonMansion_Statue_RedEyes_Basement 0x34F
+// Cinnabar Gym
+#define METATILE_CinnabarGym_Floor 0x281
+#define METATILE_CinnabarGym_Floor_ShadeDiagonal 0x282
+#define METATILE_CinnabarGym_Floor_ShadeFull 0x289
+#define METATILE_CinnabarGym_Floor_WallRightCorner 0x2C6
+#define METATILE_CinnabarGym_Floor_WallLeftCorner 0x2C7
+#define METATILE_CinnabarGym_Floor_WallRightEdge 0x2CE
+#define METATILE_CinnabarGym_Floor_WallLeftEdge 0x2CF
+#define METATILE_CinnabarGym_Wall_RetractedBarrier 0x2D1
+
// gTileset_82D504C. Below metatile probably needs generic name
#define METATILE_MtEmber_CaveEntrance 0x346
+
#endif // GUARD_METATILE_LABELS_H
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index dfbba41d9..a8009f1ff 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -1,6 +1,97 @@
#ifndef GUARD_CONSTANTS_POKEMON_H
#define GUARD_CONSTANTS_POKEMON_H
+// For (Set|Get)(Box)?MonData
+#define MON_DATA_PERSONALITY 0
+#define MON_DATA_OT_ID 1
+#define MON_DATA_NICKNAME 2
+#define MON_DATA_LANGUAGE 3
+#define MON_DATA_SANITY_IS_BAD_EGG 4
+#define MON_DATA_SANITY_HAS_SPECIES 5
+#define MON_DATA_SANITY_IS_EGG 6
+#define MON_DATA_OT_NAME 7
+#define MON_DATA_MARKINGS 8
+#define MON_DATA_CHECKSUM 9
+#define MON_DATA_ENCRYPT_SEPARATOR 10
+#define MON_DATA_SPECIES 11
+#define MON_DATA_HELD_ITEM 12
+#define MON_DATA_MOVE1 13
+#define MON_DATA_MOVE2 14
+#define MON_DATA_MOVE3 15
+#define MON_DATA_MOVE4 16
+#define MON_DATA_PP1 17
+#define MON_DATA_PP2 18
+#define MON_DATA_PP3 19
+#define MON_DATA_PP4 20
+#define MON_DATA_PP_BONUSES 21
+#define MON_DATA_COOL 22
+#define MON_DATA_BEAUTY 23
+#define MON_DATA_CUTE 24
+#define MON_DATA_EXP 25
+#define MON_DATA_HP_EV 26
+#define MON_DATA_ATK_EV 27
+#define MON_DATA_DEF_EV 28
+#define MON_DATA_SPEED_EV 29
+#define MON_DATA_SPATK_EV 30
+#define MON_DATA_SPDEF_EV 31
+#define MON_DATA_FRIENDSHIP 32
+#define MON_DATA_SMART 33
+#define MON_DATA_POKERUS 34
+#define MON_DATA_MET_LOCATION 35
+#define MON_DATA_MET_LEVEL 36
+#define MON_DATA_MET_GAME 37
+#define MON_DATA_POKEBALL 38
+#define MON_DATA_HP_IV 39
+#define MON_DATA_ATK_IV 40
+#define MON_DATA_DEF_IV 41
+#define MON_DATA_SPEED_IV 42
+#define MON_DATA_SPATK_IV 43
+#define MON_DATA_SPDEF_IV 44
+#define MON_DATA_IS_EGG 45
+#define MON_DATA_ABILITY_NUM 46
+#define MON_DATA_TOUGH 47
+#define MON_DATA_SHEEN 48
+#define MON_DATA_OT_GENDER 49
+#define MON_DATA_COOL_RIBBON 50
+#define MON_DATA_BEAUTY_RIBBON 51
+#define MON_DATA_CUTE_RIBBON 52
+#define MON_DATA_SMART_RIBBON 53
+#define MON_DATA_TOUGH_RIBBON 54
+#define MON_DATA_STATUS 55
+#define MON_DATA_LEVEL 56
+#define MON_DATA_HP 57
+#define MON_DATA_MAX_HP 58
+#define MON_DATA_ATK 59
+#define MON_DATA_DEF 60
+#define MON_DATA_SPEED 61
+#define MON_DATA_SPATK 62
+#define MON_DATA_SPDEF 63
+#define MON_DATA_MAIL 64
+#define MON_DATA_SPECIES2 65
+#define MON_DATA_IVS 66
+#define MON_DATA_CHAMPION_RIBBON 67
+#define MON_DATA_WINNING_RIBBON 68
+#define MON_DATA_VICTORY_RIBBON 69
+#define MON_DATA_ARTIST_RIBBON 70
+#define MON_DATA_EFFORT_RIBBON 71
+#define MON_DATA_GIFT_RIBBON_1 72
+#define MON_DATA_GIFT_RIBBON_2 73
+#define MON_DATA_GIFT_RIBBON_3 74
+#define MON_DATA_GIFT_RIBBON_4 75
+#define MON_DATA_GIFT_RIBBON_5 76
+#define MON_DATA_GIFT_RIBBON_6 77
+#define MON_DATA_GIFT_RIBBON_7 78
+#define MON_DATA_FATEFUL_ENCOUNTER 79
+#define MON_DATA_OBEDIENCE 80
+#define MON_DATA_KNOWN_MOVES 81
+#define MON_DATA_RIBBON_COUNT 82
+#define MON_DATA_RIBBONS 83
+#define MON_DATA_ATK2 84
+#define MON_DATA_DEF2 85
+#define MON_DATA_SPEED2 86
+#define MON_DATA_SPATK2 87
+#define MON_DATA_SPDEF2 88
+
// Pokemon types
#define TYPE_NORMAL 0x00
#define TYPE_FIGHTING 0x01
@@ -93,4 +184,33 @@
#define PLAYER_HAS_ONE_MON 0x1
#define PLAYER_HAS_ONE_USABLE_MON 0x2
+#define MAX_LEVEL 100
+
+#define OT_ID_RANDOM_NO_SHINY 2
+#define OT_ID_PRESET 1
+#define OT_ID_PLAYER_ID 0
+
+#define MON_GIVEN_TO_PARTY 0x0
+#define MON_GIVEN_TO_PC 0x1
+#define MON_CANT_GIVE 0x2
+
+#define MON_MALE 0x00
+#define MON_FEMALE 0xFE
+#define MON_GENDERLESS 0xFF
+
+#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
+#define FRIENDSHIP_EVENT_VITAMIN 0x1
+#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
+#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
+#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
+#define FRIENDSHIP_EVENT_WALKING 0x5
+#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
+#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
+#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
+
+#define PARTY_SIZE 6
+#define MAX_TOTAL_EVS 510
+#define UNOWN_FORM_COUNT 28
+#define MAX_MON_LEVEL 100
+
#endif // GUARD_CONSTANTS_POKEMON_H
diff --git a/include/dodrio_berry_picking.h b/include/dodrio_berry_picking.h
new file mode 100644
index 000000000..59736ba7a
--- /dev/null
+++ b/include/dodrio_berry_picking.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_DODRIO_BERRY_PICKING_H
+#define GUARD_DODRIO_BERRY_PICKING_H
+
+void sub_81507FC(u16 species, MainCallback callback);
+
+#endif //GUARD_DODRIO_BERRY_PICKING_H
diff --git a/include/event_object_80688E4.h b/include/event_object_80688E4.h
index cee8ff707..36040e0a5 100644
--- a/include/event_object_80688E4.h
+++ b/include/event_object_80688E4.h
@@ -6,5 +6,10 @@
void FreezeObjectEvents(void);
void FreezeObjectEvent(struct ObjectEvent *);
void FreezeObjectEventsExceptOne(u8 objEventId);
+void sub_8069124(u8 a0, bool8 a1);
+u32 sub_806916C(u8 a0);
+void sub_80691A4(u8 a0, u8 a1);
+void sub_8069094(u8 a0, u8 a1);
+bool32 sub_8069294(u8 a0);
#endif // GUARD_EVENT_OBJECT_80688E4_H
diff --git a/include/event_object_8097404.h b/include/event_object_8097404.h
index 77781943e..23fce9576 100644
--- a/include/event_object_8097404.h
+++ b/include/event_object_8097404.h
@@ -14,7 +14,7 @@ extern void *gUnknown_020375B8;
// Exported ROM declarations
void sub_8097AC8(struct Sprite *);
-void npc_sync_anim_pause_bits(struct ObjectEvent *);
+void UnfreezeObjectEvent(struct ObjectEvent *);
void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
u8 sub_8097F78(struct ObjectEvent *);
bool8 obj_npc_ministep(struct Sprite *sprite);
diff --git a/include/event_object_lock.h b/include/event_object_lock.h
index c5c32857b..5c65585b5 100644
--- a/include/event_object_lock.h
+++ b/include/event_object_lock.h
@@ -11,5 +11,6 @@ void sub_8098630(void);
bool8 sub_8098734(void);
void sub_80696C0(void);
bool8 walkrun_is_standing_still(void);
+void sub_80696F0(void);
#endif // GUARD_EVENT_OBJECT_LOCK_H
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index b81a61664..f2e7bd325 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -47,7 +47,7 @@ void ObjectEventClearAnimIfSpecialAnimActive(struct ObjectEvent *);
void SpawnObjectEventsInView(s16, s16);
u8 sprite_new(u8, u8, s16, s16, u8, u8);
u8 AddPseudoObjectEvent(u16, SpriteCallback, s16, s16, u8);
-u8 show_sprite(u8, u8, u8);
+u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup);
u8 SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8);
u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);
void sub_8093038(s16, s16, s16 *, s16 *);
@@ -82,7 +82,7 @@ bool8 ObjectEventIsSpecialAnimActive(struct ObjectEvent *);
u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z);
void sub_8063E28(struct ObjectEvent *, struct Sprite *);
-void ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
+bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
void npc_coords_shift_still(struct ObjectEvent *);
void sub_805FE7C(struct ObjectEvent *, u8);
void SetTrainerMovementType(struct ObjectEvent *, u8);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 54eb2b2a9..b8da8f3e0 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1190,10 +1190,10 @@ extern const u8 EventScript_PC[];
extern const u8 EventScript_RepelWoreOff[];
// battle_message
-extern const u8 Text_1A5CF1[];
-extern const u8 Text_1A5D31[];
-extern const u8 Text_1A5D6E[];
-extern const u8 Text_1A5DB1[];
+extern const u8 Text_MonSentToBoxInSomeonesPC[];
+extern const u8 Text_MonSentToBoxInBillsPC[];
+extern const u8 Text_MonSentToBoxSomeonesBoxFull[];
+extern const u8 Text_MonSentToBoxBillsBoxFull[];
extern const u8 EventScript_BagItemCanBeRegistered[];
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index ecb622de5..57a2fab66 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -7,5 +7,6 @@ extern u32 gUnknown_3005078;
void RestartWildEncounterImmunitySteps(void);
void ClearPoisonStepCounter(void);
+void SetCableClubWarp(void);
#endif //GUARD_FIELD_CONTROL_AVATAR_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index 22849a37d..d27d0e54a 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -17,6 +17,8 @@ void FieldCallback_ReturnToEventScript2(void);
void sub_807DC00(void);
void FadeTransition_FadeInOnReturnToStartMenu(void);
+void sub_807DCE4(void);
+
bool32 sub_807E418(void);
#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index ec1a077be..a69ec6155 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -35,5 +35,6 @@ bool32 sub_805DAD0(void);
bool32 sub_805DC24(void);
bool8 PartyHasMonWithSurf(void);
bool8 IsPlayerSurfingNorth(void);
+void player_get_pos_including_state_based_drift(s16 *x, s16 *y);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_weather.h b/include/field_weather.h
index 2709a7298..de2543edb 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -3,7 +3,7 @@
#include "global.h"
-void fade_screen(u8, s8);
+void FadeScreen(u8, s8);
void SetSav1Weather(u32);
u8 GetSav1Weather(void);
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 1560a0841..91a45d8c5 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -31,5 +31,6 @@ void sub_8059948(u8 a0, u8 a1);
void save_serialize_map(void);
u32 sub_8058F1C(u32 original, u8 bit);
u32 sub_8058F48(s16 x, s16 y, u8 z);
+void sub_8059024(s32 x, s32 y, bool32 arg2);
#endif //GUARD_FIELDMAP_H
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 4402d5042..01cd992ec 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -275,9 +275,9 @@ enum
struct PlayerAvatar /* 0x202E858 */
{
/*0x00*/ u8 flags;
- /*0x01*/ u8 bike;
- /*0x02*/ u8 running2;
- /*0x03*/ u8 running1;
+ /*0x01*/ u8 unk1; // used to be bike, but it's not that in Emerald and probably isn't here either. maybe transition flags?
+ /*0x02*/ u8 runningState; // this is a static running state. 00 is not moving, 01 is turn direction, 02 is moving.
+ /*0x03*/ u8 tileTransitionState; // this is a transition running state: 00 is not moving, 01 is transition between tiles, 02 means you are on the frame in which you have centered on a tile but are about to keep moving, even if changing directions. 2 is also used for a ledge hop, since you are transitioning.
/*0x04*/ u8 spriteId;
/*0x05*/ u8 objectEventId;
/*0x06*/ u8 unk6;
diff --git a/include/link.h b/include/link.h
index 4175ac97f..770a60f44 100644
--- a/include/link.h
+++ b/include/link.h
@@ -278,5 +278,6 @@ bool8 HandleLinkConnection(void);
void sub_800B0B4(void);
void sub_800B110(u32 who);
void sub_800ACBC(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 unk_06);
+u8 sub_800A8D4(void);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index bde20c555..790429870 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -233,9 +233,9 @@ void MG_DrawCheckerboardPattern(void);
void task_add_05_task_del_08FA224_when_no_RfuFunc(void);
bool8 IsLinkRfuTaskFinished(void);
void DestroyWirelessStatusIndicatorSprite(void);
-void MEvent_CreateTask_CardOrNewsWithFriend(u8);
-void MEvent_CreateTask_CardOrNewsOverWireless(u8);
-void MEvent_CreateTask_Leader(u8);
+void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
+void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
+void MEvent_CreateTask_Leader(u32 arg0);
void sub_80F9E2C(void * data);
u8 sub_8116DE0(void);
void sub_80FBB4C(void);
@@ -288,13 +288,43 @@ bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1);
void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1);
u8 sub_80FEA34(u8 a0, u16 a1);
void sub_80FDA30(u32 a0);
-void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3);
+void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3);
void LinkRfu_syncVBlank_(void);
s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16));
void sub_80FEB3C(void);
void sub_80FAFE0(u8 a0);
bool32 sub_80FA44C(u32 a0);
bool8 sub_80FC1B0(void);
+bool8 sub_80F8F40(void);
+void sub_80F8F5C(void);
+bool32 sub_80FA5D4(void);
+bool32 sub_80FC1CC(void);
+bool32 sub_80F8F7C(bool32 a0);
+bool32 sub_80FA634(u16 a0, const u8 *a1);
+void sub_80FA670(u8 a0, u16 a1, const u8 *a2);
+u32 sub_80FA6FC(u16 a0, const u8 *a1);
+void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2);
+void sub_80FBB8C(u32 a0);
+void sub_80FBD4C(const u8 *ptr, u16 a1);
+void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname);
+void sub_80FBBD8(void);
+void sub_80FA6BC(void);
+void sub_80FBF54(const u8 *src, u16 trainerId);
+void sub_80FB008(u8 a0, u32 a1, u32 a2);
+void RecordMixTrainerNames(void);
+void sub_80F8CFC();
+void sub_80F8D14();
+void sub_80FAF74(bool32 a0, bool32 a1);
+void ClearAndInitHostRFUtgtGname(void);
+void sub_80F8FA0(void);
+void sub_80FAFA0(u32 type, u32 species, u32 level);
+bool32 sub_80FBB0C(void);
+void sub_80FBC00(void);
+void sub_80FBD6C(u32 a0);
+void sub_80FC114(const u8 *name, struct GFtgtGname *structPtr, u8 a2);
+bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name);
+bool8 sub_80FCC3C(struct GFtgtGname *gname, u8 *uname, u8 idx);
+bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx);
#include "mevent_server.h"
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
diff --git a/include/mevent.h b/include/mevent.h
index 81caeb42f..85782f20a 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -70,5 +70,8 @@ void sub_8143D24(void);
u16 sub_81445C0(u32 command);
void sub_8144714(u32 a0, u32 a1);
u16 *GetMEventProfileECWordsMaybe(void);
+void sub_81446C4(void);
+bool32 sub_81446D0(u16 a0);
+u16 GetWonderCardFlagId(void);
#endif //GUARD_MEVENT_H
diff --git a/include/mevent_server.h b/include/mevent_server.h
index b691e9e1f..1e9ef7bef 100644
--- a/include/mevent_server.h
+++ b/include/mevent_server.h
@@ -86,6 +86,7 @@ struct mevent_server_cmd
#define SRV_SEND_NEWS {.instr = 14}
#define SRV_BUFFER_SEND {.instr = 15}
#define SRV_SEND(x, y) {.instr = 18, .flag = x, .parameter = (void *)y}
+#define SRV_SENDSTR(x, y) {.instr = 20, .flag = x, .parameter = (void *)y}
#define SRV_BUFFER_CARD {.instr = 26}
#define SRV_BUFFER_NEWS {.instr = 27}
#define SRV_RAM_SCRIPT_IF_VALID {.instr = 28}
diff --git a/include/mystery_gift_menu.h b/include/mystery_gift_menu.h
index 32624d602..bd790b36e 100644
--- a/include/mystery_gift_menu.h
+++ b/include/mystery_gift_menu.h
@@ -7,5 +7,8 @@ void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
void PrintMysteryGiftOrEReaderTopMenu(bool8, bool32);
void c2_mystery_gift(void);
void c2_mystery_gift_e_reader_run(void);
+s8 mevent_message_print_and_prompt_yes_no(u8 * textState, u16 * windowId, bool8 yesNoBoxPlacement, const u8 * str);
+void MG_DrawTextBorder(u8 windowId);
+u16 GetMysteryGiftBaseBlock(void);
#endif //GUARD_MYSTERY_GIFT_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index c24b63cf9..a7031e56d 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -62,7 +62,8 @@ extern struct WarpData gUnknown_2031DB4;
extern struct WarpData gUnknown_2031DBC;
extern u8 gUnknown_2031DE0;
-extern u8 gUnknown_300502C;
+extern u8 gFieldLinkPlayerCount;
+extern u8 gLocalLinkPlayerId;
void IncrementGameStat(u8 index);
diff --git a/include/party_menu.h b/include/party_menu.h
index cc8889137..a1b85e059 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -68,7 +68,7 @@ void CB2_ChooseMonToGiveItem(void);
void ChooseMonToGiveMailFromMailbox(void);
void InitChooseHalfPartyForBattle(u8 a1);
void ClearSelectedPartyOrder(void);
-void sub_81277F4(u8 menuType, MainCallback callback);
+void ChooseMonForTradingBoard(u8 menuType, MainCallback callback);
void ChooseMonForMoveTutor(void);
void ChooseMonForWirelessMinigame(void);
void OpenPartyMenuInTutorialBattle(u8 partyAction);
diff --git a/include/pokemon.h b/include/pokemon.h
index ae909018c..be0a35877 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -3,167 +3,7 @@
#include "global.h"
#include "sprite.h"
-
-#define MON_DATA_PERSONALITY 0
-#define MON_DATA_OT_ID 1
-#define MON_DATA_NICKNAME 2
-#define MON_DATA_LANGUAGE 3
-#define MON_DATA_SANITY_IS_BAD_EGG 4
-#define MON_DATA_SANITY_HAS_SPECIES 5
-#define MON_DATA_SANITY_IS_EGG 6
-#define MON_DATA_OT_NAME 7
-#define MON_DATA_MARKINGS 8
-#define MON_DATA_CHECKSUM 9
-#define MON_DATA_ENCRYPT_SEPARATOR 10
-#define MON_DATA_SPECIES 11
-#define MON_DATA_HELD_ITEM 12
-#define MON_DATA_MOVE1 13
-#define MON_DATA_MOVE2 14
-#define MON_DATA_MOVE3 15
-#define MON_DATA_MOVE4 16
-#define MON_DATA_PP1 17
-#define MON_DATA_PP2 18
-#define MON_DATA_PP3 19
-#define MON_DATA_PP4 20
-#define MON_DATA_PP_BONUSES 21
-#define MON_DATA_COOL 22
-#define MON_DATA_BEAUTY 23
-#define MON_DATA_CUTE 24
-#define MON_DATA_EXP 25
-#define MON_DATA_HP_EV 26
-#define MON_DATA_ATK_EV 27
-#define MON_DATA_DEF_EV 28
-#define MON_DATA_SPEED_EV 29
-#define MON_DATA_SPATK_EV 30
-#define MON_DATA_SPDEF_EV 31
-#define MON_DATA_FRIENDSHIP 32
-#define MON_DATA_SMART 33
-#define MON_DATA_POKERUS 34
-#define MON_DATA_MET_LOCATION 35
-#define MON_DATA_MET_LEVEL 36
-#define MON_DATA_MET_GAME 37
-#define MON_DATA_POKEBALL 38
-#define MON_DATA_HP_IV 39
-#define MON_DATA_ATK_IV 40
-#define MON_DATA_DEF_IV 41
-#define MON_DATA_SPEED_IV 42
-#define MON_DATA_SPATK_IV 43
-#define MON_DATA_SPDEF_IV 44
-#define MON_DATA_IS_EGG 45
-#define MON_DATA_ABILITY_NUM 46
-#define MON_DATA_TOUGH 47
-#define MON_DATA_SHEEN 48
-#define MON_DATA_OT_GENDER 49
-#define MON_DATA_COOL_RIBBON 50
-#define MON_DATA_BEAUTY_RIBBON 51
-#define MON_DATA_CUTE_RIBBON 52
-#define MON_DATA_SMART_RIBBON 53
-#define MON_DATA_TOUGH_RIBBON 54
-#define MON_DATA_STATUS 55
-#define MON_DATA_LEVEL 56
-#define MON_DATA_HP 57
-#define MON_DATA_MAX_HP 58
-#define MON_DATA_ATK 59
-#define MON_DATA_DEF 60
-#define MON_DATA_SPEED 61
-#define MON_DATA_SPATK 62
-#define MON_DATA_SPDEF 63
-#define MON_DATA_MAIL 64
-#define MON_DATA_SPECIES2 65
-#define MON_DATA_IVS 66
-#define MON_DATA_CHAMPION_RIBBON 67
-#define MON_DATA_WINNING_RIBBON 68
-#define MON_DATA_VICTORY_RIBBON 69
-#define MON_DATA_ARTIST_RIBBON 70
-#define MON_DATA_EFFORT_RIBBON 71
-#define MON_DATA_GIFT_RIBBON_1 72
-#define MON_DATA_GIFT_RIBBON_2 73
-#define MON_DATA_GIFT_RIBBON_3 74
-#define MON_DATA_GIFT_RIBBON_4 75
-#define MON_DATA_GIFT_RIBBON_5 76
-#define MON_DATA_GIFT_RIBBON_6 77
-#define MON_DATA_GIFT_RIBBON_7 78
-#define MON_DATA_FATEFUL_ENCOUNTER 79
-#define MON_DATA_OBEDIENCE 80
-#define MON_DATA_KNOWN_MOVES 81
-#define MON_DATA_RIBBON_COUNT 82
-#define MON_DATA_RIBBONS 83
-#define MON_DATA_ATK2 84
-#define MON_DATA_DEF2 85
-#define MON_DATA_SPEED2 86
-#define MON_DATA_SPATK2 87
-#define MON_DATA_SPDEF2 88
-
-#define MAX_LEVEL 100
-
-#define OT_ID_RANDOM_NO_SHINY 2
-#define OT_ID_PRESET 1
-#define OT_ID_PLAYER_ID 0
-
-#define MON_GIVEN_TO_PARTY 0x0
-#define MON_GIVEN_TO_PC 0x1
-#define MON_CANT_GIVE 0x2
-
-#define MON_MALE 0x00
-#define MON_FEMALE 0xFE
-#define MON_GENDERLESS 0xFF
-
-#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
-#define FRIENDSHIP_EVENT_VITAMIN 0x1
-#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
-#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
-#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
-#define FRIENDSHIP_EVENT_WALKING 0x5
-#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
-#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
-#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
-
-#define TYPE_NORMAL 0x00
-#define TYPE_FIGHTING 0x01
-#define TYPE_FLYING 0x02
-#define TYPE_POISON 0x03
-#define TYPE_GROUND 0x04
-#define TYPE_ROCK 0x05
-#define TYPE_BUG 0x06
-#define TYPE_GHOST 0x07
-#define TYPE_STEEL 0x08
-#define TYPE_MYSTERY 0x09
-#define TYPE_FIRE 0x0a
-#define TYPE_WATER 0x0b
-#define TYPE_GRASS 0x0c
-#define TYPE_ELECTRIC 0x0d
-#define TYPE_PSYCHIC 0x0e
-#define TYPE_ICE 0x0f
-#define TYPE_DRAGON 0x10
-#define TYPE_DARK 0x11
-
-#define NUMBER_OF_MON_TYPES 0x12
-
-#define PARTY_SIZE 6
-#define MAX_TOTAL_EVS 510
-#define NUM_STATS 6
-#define UNOWN_FORM_COUNT 28
-#define MAX_MON_LEVEL 100
-
-enum
-{
- EGG_GROUP_NONE,
- EGG_GROUP_MONSTER,
- EGG_GROUP_WATER_1,
- EGG_GROUP_BUG,
- EGG_GROUP_FLYING,
- EGG_GROUP_FIELD,
- EGG_GROUP_FAIRY,
- EGG_GROUP_GRASS,
- EGG_GROUP_HUMAN_LIKE,
- EGG_GROUP_WATER_3,
- EGG_GROUP_MINERAL,
- EGG_GROUP_AMORPHOUS,
- EGG_GROUP_WATER_2,
- EGG_GROUP_DITTO,
- EGG_GROUP_DRAGON,
- EGG_GROUP_UNDISCOVERED
-};
+#include "constants/pokemon.h"
struct PokemonSubstruct0
{
@@ -357,28 +197,6 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
-enum
-{
- STAT_STAGE_HP, // 0
- STAT_STAGE_ATK, // 1
- STAT_STAGE_DEF, // 2
- STAT_STAGE_SPEED, // 3
- STAT_STAGE_SPATK, // 4
- STAT_STAGE_SPDEF, // 5
- STAT_STAGE_ACC, // 6
- STAT_STAGE_EVASION, // 7
-};
-
-enum
-{
- STAT_HP, // 0
- STAT_ATK, // 1
- STAT_DEF, // 2
- STAT_SPD, // 3
- STAT_SPATK, // 4
- STAT_SPDEF, // 5
-};
-
struct BaseStats
{
/* 0x00 */ u8 baseHP;
diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h
index 8623b223a..0e9094752 100644
--- a/include/pokemon_jump.h
+++ b/include/pokemon_jump.h
@@ -5,5 +5,6 @@
void ResetPokeJumpResults(void);
bool32 IsSpeciesAllowedInPokemonJump(u16 species);
+void sub_8147AA8(u16 species, MainCallback callback);
#endif // GUARD_POKEMON_JUMP_H
diff --git a/include/rfu_union_tool.h b/include/rfu_union_tool.h
new file mode 100644
index 000000000..b8b5cd664
--- /dev/null
+++ b/include/rfu_union_tool.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H
+#define GUARD_UNION_ROOM_PLAYER_AVATAR_H
+
+#include "union_room.h"
+
+void sub_811C1C8(void);
+void sub_811BAAC(u8 *spriteIds, s32 arg1);
+void sub_811BB40(u8 *spriteIds);
+void sub_811BB68(void);
+void sub_811BECC(struct UnkStruct_URoom *arg0);
+void sub_811BEDC(struct UnkStruct_URoom *arg0);
+bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
+void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
+u8 ZeroUnionObjWork(struct UnionObj * ptr);
+void sub_811BA78(void);
+
+#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H
diff --git a/include/save_location.h b/include/save_location.h
index fb71ab728..c8e362231 100644
--- a/include/save_location.h
+++ b/include/save_location.h
@@ -6,6 +6,7 @@
#define POKECENTER_SAVEWARP (1 << 1)
#define LOBBY_SAVEWARP (1 << 2)
#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3)
+#define CHAMPION_SAVEWARP (1 << 7)
void TrySetMapSaveWarpStatus(void);
bool32 IsCurMapPokeCenter(void);
diff --git a/include/strings.h b/include/strings.h
index 7e8a4fbb4..a57493a9b 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1056,4 +1056,9 @@ extern const u8 gText_DepositHowManyStrVars1[];
extern const u8 gText_DepositedStrVar2StrVar1s[];
extern const u8 gText_NoRoomToStoreItems[];
+// union_room_battle
+extern const u8 gText_CommStandbyAwaitingOtherPlayer[];
+extern const u8 gText_RefusedBattle[];
+extern const u8 gText_BattleWasRefused[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/union_room.h b/include/union_room.h
index d57683a8a..3cb8eb84a 100644
--- a/include/union_room.h
+++ b/include/union_room.h
@@ -2,11 +2,11 @@
#define GUARD_UNION_ROOM_H
#include "global.h"
-#include "librfu.h"
+#include "link_rfu.h"
struct UnkStruct_Shared
{
- struct GFtgtGname field_0;
+ struct GFtgtGname gname;
u8 ALIGNED(4) playerName[PLAYER_NAME_LENGTH];
};
@@ -28,26 +28,27 @@ struct UnkStruct_x20
u8 field_1F;
};
+// These arrays are dynamically allocated but must be
+// represented as structs to match.
+// Don't ask me why.
+
+// FIXME: Find a way around this.
+
struct UnkStruct_Main0
{
- struct UnkStruct_x20 arr[8];
+ struct UnkStruct_x20 arr[0];
};
struct UnkStruct_Main4
{
- struct UnkStruct_x1C arr[5];
-};
-
-struct UnkStruct_Main8
-{
- struct UnkStruct_x20 arr[5];
+ struct UnkStruct_x1C arr[0];
};
struct UnkStruct_Leader
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- struct UnkStruct_Main8 *field_8;
+ struct UnkStruct_Main0 * field_0;
+ struct UnkStruct_Main4 * field_4;
+ struct UnkStruct_Main0 * field_8;
u8 state;
u8 textState;
u8 field_E;
@@ -67,8 +68,8 @@ struct UnkStruct_Leader
struct UnkStruct_Group
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
+ struct UnkStruct_Main0 * field_0;
+ struct UnkStruct_Main4 * field_4;
u8 state;
u8 textState;
u8 field_A;
@@ -85,56 +86,56 @@ struct UnkStruct_Group
u8 field_15;
};
-struct UnkStruct_8019BA8
+struct UnionObj
{
- u8 field_0;
- u8 field_1;
- s8 field_2;
- u8 field_3;
+ u8 state;
+ u8 gfxId;
+ s8 animState;
+ u8 schedAnim;
};
struct UnkStruct_URoom
{
- struct UnkStruct_Main0 *field_0;
- struct UnkStruct_Main4 *field_4;
- struct UnkStruct_Main0 *field_8;
- struct UnkStruct_Main4 *field_C;
- u16 field_10;
- u16 field_12;
- u8 state;
- u8 stateAfterPrint;
- u8 textState;
- u8 field_17;
- u8 field_18;
- u8 field_19;
- u8 field_1A;
- u8 field_1B;
- u8 field_1C;
- u8 field_1D;
- u8 field_1E;
- u8 field_1F;
- u8 field_20;
- u8 spriteIds[40];
- u8 field_49;
- u8 field_4A;
- u16 field_4C[6];
- u8 field_58[0x98 - 0x58];
- u16 field_98;
- u16 field_9A[3];
- struct UnkStruct_8019BA8 field_A0[8];
- u8 field_C0[12][15];
- u8 field_174[48];
- u8 field_1A4[200];
+ /* 0x000 */ struct UnkStruct_Main0 * field_0;
+ /* 0x004 */ struct UnkStruct_Main4 * field_4;
+ /* 0x008 */ struct UnkStruct_Main0 * field_8;
+ /* 0x00C */ struct UnkStruct_Main4 * field_C;
+ /* 0x010 */ u16 field_10;
+ /* 0x012 */ u16 field_12;
+ /* 0x014 */ u8 state;
+ /* 0x015 */ u8 stateAfterPrint;
+ /* 0x016 */ u8 textState;
+ /* 0x017 */ u8 field_17;
+ /* 0x018 */ u8 field_18;
+ /* 0x019 */ u8 field_19;
+ /* 0x01A */ u8 field_1A;
+ /* 0x01B */ u8 field_1B;
+ /* 0x01C */ u8 field_1C;
+ /* 0x01D */ u8 field_1D;
+ /* 0x01E */ u8 field_1E;
+ /* 0x01F */ u8 field_1F;
+ /* 0x020 */ u8 field_20;
+ /* 0x021 */ u8 spriteIds[40];
+ /* 0x049 */ u8 field_49;
+ /* 0x04A */ u8 field_4A;
+ /* 0x04C */ u16 field_4C[6];
+ /* 0x058 */ u8 field_58[4][11];
+ /* 0x084 */ u16 field_98;
+ /* 0x086 */ u16 field_9A[3];
+ /* 0x08C */ struct UnionObj unionObjs[8];
+ /* 0x0AC */ u8 trainerCardStrbufs[12][15];
+ /* 0x160 */ u8 field_174[48];
+ /* 0x190 */ u8 field_1A4[200];
};
union UnkUnion_Main
{
- struct UnkStruct_Leader *leader;
- struct UnkStruct_Group *group;
- struct UnkStruct_URoom *uRoom;
+ struct UnkStruct_Leader * leader;
+ struct UnkStruct_Group * group;
+ struct UnkStruct_URoom * uRoom;
};
-struct TradeUnkStruct
+struct UnionRoomTrade
{
u16 field_0;
u16 type;
@@ -153,4 +154,6 @@ extern struct GFtgtGnameSub gUnknown_203B064;
extern u16 gUnionRoomOfferedSpecies;
extern u8 gUnionRoomRequestedMonType;
+void sub_81173C0(u16 battleFlags);
+
#endif //GUARD_UNION_ROOM_H
diff --git a/include/union_room_chat.h b/include/union_room_chat.h
index 17e482525..66daac376 100644
--- a/include/union_room_chat.h
+++ b/include/union_room_chat.h
@@ -2,6 +2,7 @@
#define GUARD_UNION_ROOM_CHAT_H
void sub_801DD98(void);
+void sub_8128420(void);
void copy_strings_to_sav1(void);
#endif // GUARD_UNION_ROOM_CHAT_H
diff --git a/include/union_room_message.h b/include/union_room_message.h
new file mode 100644
index 000000000..b7de673ba
--- /dev/null
+++ b/include/union_room_message.h
@@ -0,0 +1,114 @@
+#ifndef GUARD_UNION_ROOM_MESSAGE_H
+#define GUARD_UNION_ROOM_MESSAGE_H
+
+#include "global.h"
+
+extern const u8 gUnknown_84571AC[];
+extern const u8 gUnknown_84571B0[];
+extern const u8 gUnknown_84571B4[];
+extern const u8 gUnknown_84571B8[];
+extern const u8 gUnknown_84571E0[];
+extern const u8 gUnknown_8457234[];
+extern const u8 gUnknown_8457264[];
+extern const u8 *const gUnknown_845742C[][5];
+extern const u8 gUnknown_845747C[];
+extern const u8 gUnknown_84574A0[];
+extern const u8 gUnknown_84574C4[];
+extern const u8 gUnknown_84574EC[];
+extern const u8 gUnknown_8457514[];
+extern const u8 gUnknown_8457530[];
+extern const u8 gUnknown_8457554[];
+extern const u8 *const gUnknown_8457608[];
+extern const u8 gUnknown_8457610[];
+extern const u8 *const gUnknown_845767C[];
+extern const u8 gUnknown_84576AC[];
+extern const u8 gUnknown_84576C4[];
+extern const u8 gUnknown_8457700[];
+extern const u8 gUnknown_845771C[];
+extern const u8 *const gUnknown_8457754[];
+extern const u8 gUnknown_845777C[];
+extern const u8 gUnknown_84577BC[];
+extern const u8 gUnknown_84577F8[];
+extern const u8 *const gUnknown_8457838[];
+extern const u8 gUnknown_84578BC[];
+extern const u8 *const gUnknown_8457A34[];
+extern const u8 *const gUnknown_8457B04[][2];
+extern const u8 *const gUnknown_8457BCC[];
+extern const u8 *const gUnknown_8457C20[];
+extern const u8 gUnknown_8457C48[];
+extern const u8 gUnknown_8457CA4[];
+extern const u8 gUnknown_8457CF8[];
+extern const u8 gUnknown_8457D44[];
+extern const u8 gUnknown_8457DB8[];
+extern const u8 gUnknown_8457E0C[];
+extern const u8 gUnknown_8457E28[];
+extern const u8 gUnknown_8457E44[];
+extern const u8 gUnknown_8457E60[];
+extern const u8 *const gUnknown_8457F80[][2];
+extern const u8 gUnknown_8457F90[];
+extern const u8 *const gUnknown_84580F4[][4];
+extern const u8 *const gUnknown_8458230[][2][3];
+extern const u8 *const gUnknown_8458314[];
+extern const u8 *const gUnknown_84583B4[];
+extern const u8 *const gUnknown_845842C[];
+extern const u8 gUnknown_8458434[];
+extern const u8 gUnknown_845847C[];
+extern const u8 gUnknown_84584C0[];
+extern const u8 *const gUnknown_8458548[];
+extern const u8 *const gUnknown_84585E8[];
+extern const u8 *const gUnknown_8458758[2][4];
+extern const u8 *const gUnknown_84588BC[2][4];
+extern const u8 *const gUnknown_84589AC[2][2];
+extern const u8 *const gUnknown_8458A78[2][4];
+extern const u8 gUnknown_8458A98[];
+extern const u8 gUnknown_8458AB8[];
+extern const u8 gUnknown_8458B44[];
+extern const u8 gUnknown_8458CD4[];
+extern const u8 gUnknown_8458D1C[];
+extern const u8 gUnknown_8458D54[];
+extern const u8 gUnknown_8458D78[];
+extern const u8 gUnknown_8458D9C[];
+extern const u8 gUnknown_8458DBC[];
+extern const u8 gUnknown_8458DE8[];
+extern const u8 gUnknown_8458E10[];
+extern const u8 gUnknown_8458E70[];
+extern const u8 gUnknown_8458ED0[];
+extern const u8 gUnknown_8458F04[];
+extern const u8 gUnknown_8458F9C[];
+extern const u8 gUnknown_8458FBC[];
+extern const u8 gUnknown_8458FC8[];
+extern const u8 gUnknown_8458FE4[];
+extern const u8 gUnknown_84591DC[];
+extern const u8 *const gUnknown_84591B8[];
+extern const u8 gUnknown_8459238[];
+extern const u8 gUnknown_8459250[];
+extern const u8 gUnknown_845928C[];
+extern const u8 *const gUnknown_845933C[];
+extern const u8 gUnknown_8459344[];
+extern const u8 gUnknown_845934C[];
+extern const u8 gUnknown_8459354[];
+extern const u8 gUnknown_8459360[];
+extern const u8 gUnknown_8459368[];
+extern const u8 gUnknown_8459370[];
+extern const u8 gUnknown_8459378[];
+extern const u8 gUnknown_8459394[];
+extern const u8 gUnknown_84593A4[];
+extern const u8 gUnknown_84593B4[];
+extern const u8 gUnknown_84593C4[];
+extern const u8 gUnknown_84593D4[];
+extern const u8 gUnknown_84593E4[];
+extern const u8 gUnknown_84593F4[];
+extern const u8 gUnknown_84593DC[];
+extern const u8 gUnknown_8459400[];
+extern const u8 gUnknown_8459410[];
+extern const u8 gUnknown_845941C[];
+extern const u8 gUnknown_845942C[];
+extern const u8 gUnknown_8459434[];
+extern const u8 gUnknown_8459440[];
+extern const u8 *const gUnknown_84594B0[];
+extern const u8 gUnknown_84594C4[];
+extern const u8 gUnknown_8459504[];
+extern const u8 *const gUnknown_8459580[];
+extern const u8 gUnknown_8459588[];
+
+#endif //GUARD_UNION_ROOM_MESSAGE_H
diff --git a/ld_script.txt b/ld_script.txt
index 016793dc9..f0792ad9d 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -241,8 +241,9 @@ SECTIONS {
src/mailbox_pc.o(.text);
src/menu.o(.text);
src/quest_log.o(.text);
- asm/union_room.o(.text);
- asm/union_room_player_avatar.o(.text);
+ src/union_room.o(.text);
+ src/rfu_union_tool.o(.text);
+ src/union_room_battle.o(.text);
asm/pokemon_special_anim.o(.text);
src/party_menu.o(.text);
asm/union_room_chat.o(.text);
@@ -527,7 +528,10 @@ SECTIONS {
data/decorations.o(.rodata);
src/menu.o(.rodata);
src/quest_log.o(.rodata);
- data/union_room.o(.rodata);
+ src/union_room.o(.rodata);
+ src/rfu_union_tool.o(.rodata);
+ src/union_room_battle.o(.rodata);
+ src/union_room_message.o(.rodata);
data/pokemon_special_anim.o(.rodata);
src/party_menu.o(.rodata);
data/union_room_chat.o(.rodata);
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index d988fd7b4..a8bc439f4 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -44,100 +44,100 @@ AI scripts.
static EWRAM_DATA const u8 *sAIScriptPtr = NULL;
extern u8 *gBattleAI_ScriptsTable[];
-static void BattleAICmd_if_random_less_than(void);
-static void BattleAICmd_if_random_greater_than(void);
-static void BattleAICmd_if_random_equal(void);
-static void BattleAICmd_if_random_not_equal(void);
-static void BattleAICmd_score(void);
-static void BattleAICmd_if_hp_less_than(void);
-static void BattleAICmd_if_hp_more_than(void);
-static void BattleAICmd_if_hp_equal(void);
-static void BattleAICmd_if_hp_not_equal(void);
-static void BattleAICmd_if_status(void);
-static void BattleAICmd_if_not_status(void);
-static void BattleAICmd_if_status2(void);
-static void BattleAICmd_if_not_status2(void);
-static void BattleAICmd_if_status3(void);
-static void BattleAICmd_if_not_status3(void);
-static void BattleAICmd_if_status4(void);
-static void BattleAICmd_if_not_status4(void);
-static void BattleAICmd_if_less_than(void);
-static void BattleAICmd_if_more_than(void);
-static void BattleAICmd_if_equal(void);
-static void BattleAICmd_if_not_equal(void);
-static void BattleAICmd_if_less_than_32(void);
-static void BattleAICmd_if_more_than_32(void);
-static void BattleAICmd_if_equal_32(void);
-static void BattleAICmd_if_not_equal_32(void);
-static void BattleAICmd_if_move(void);
-static void BattleAICmd_if_not_move(void);
-static void BattleAICmd_if_in_bytes(void);
-static void BattleAICmd_if_not_in_bytes(void);
-static void BattleAICmd_if_in_words(void);
-static void BattleAICmd_if_not_in_words(void);
-static void BattleAICmd_if_user_can_damage(void);
-static void BattleAICmd_if_user_cant_damage(void);
-static void BattleAICmd_get_turn_count(void);
-static void BattleAICmd_get_type(void);
-static void BattleAICmd_get_move_power(void);
-static void BattleAICmd_is_most_powerful_move(void);
-static void BattleAICmd_get_move(void);
-static void BattleAICmd_if_arg_equal(void);
-static void BattleAICmd_if_arg_not_equal(void);
-static void BattleAICmd_if_would_go_first(void);
-static void BattleAICmd_if_would_not_go_first(void);
-static void BattleAICmd_nullsub_2A(void);
-static void BattleAICmd_nullsub_2B(void);
-static void BattleAICmd_count_alive_pokemon(void);
-static void BattleAICmd_get_considered_move(void);
-static void BattleAICmd_get_considered_move_effect(void);
-static void BattleAICmd_get_ability(void);
-static void BattleAICmd_get_highest_possible_damage(void);
-static void BattleAICmd_if_type_effectiveness(void);
-static void BattleAICmd_nullsub_32(void);
-static void BattleAICmd_nullsub_33(void);
-static void BattleAICmd_if_status_in_party(void);
-static void BattleAICmd_if_status_not_in_party(void);
-static void BattleAICmd_get_weather(void);
-static void BattleAICmd_if_effect(void);
-static void BattleAICmd_if_not_effect(void);
-static void BattleAICmd_if_stat_level_less_than(void);
-static void BattleAICmd_if_stat_level_more_than(void);
-static void BattleAICmd_if_stat_level_equal(void);
-static void BattleAICmd_if_stat_level_not_equal(void);
-static void BattleAICmd_if_can_faint(void);
-static void BattleAICmd_if_cant_faint(void);
-static void BattleAICmd_if_has_move(void);
-static void BattleAICmd_if_dont_have_move(void);
-static void BattleAICmd_if_move_effect(void);
-static void BattleAICmd_if_not_move_effect(void);
-static void BattleAICmd_if_last_move_did_damage(void);
-static void BattleAICmd_if_encored(void);
-static void BattleAICmd_flee(void);
-static void BattleAICmd_frlg_safari(void);
-static void BattleAICmd_watch(void);
-static void BattleAICmd_get_hold_effect(void);
-static void BattleAICmd_get_gender(void);
-static void BattleAICmd_is_first_turn(void);
-static void BattleAICmd_get_stockpile_count(void);
-static void BattleAICmd_is_double_battle(void);
-static void BattleAICmd_get_used_held_item(void);
-static void BattleAICmd_get_move_type_from_result(void);
-static void BattleAICmd_get_move_power_from_result(void);
-static void BattleAICmd_get_move_effect_from_result(void);
-static void BattleAICmd_get_protect_count(void);
-static void BattleAICmd_nullsub_52(void);
-static void BattleAICmd_nullsub_53(void);
-static void BattleAICmd_nullsub_54(void);
-static void BattleAICmd_nullsub_55(void);
-static void BattleAICmd_nullsub_56(void);
-static void BattleAICmd_nullsub_57(void);
-static void BattleAICmd_call(void);
-static void BattleAICmd_jump(void);
-static void BattleAICmd_end(void);
-static void BattleAICmd_if_level_compare(void);
-static void BattleAICmd_if_taunted(void);
-static void BattleAICmd_if_not_taunted(void);
+static void Cmd_if_random_less_than(void);
+static void Cmd_if_random_greater_than(void);
+static void Cmd_if_random_equal(void);
+static void Cmd_if_random_not_equal(void);
+static void Cmd_score(void);
+static void Cmd_if_hp_less_than(void);
+static void Cmd_if_hp_more_than(void);
+static void Cmd_if_hp_equal(void);
+static void Cmd_if_hp_not_equal(void);
+static void Cmd_if_status(void);
+static void Cmd_if_not_status(void);
+static void Cmd_if_status2(void);
+static void Cmd_if_not_status2(void);
+static void Cmd_if_status3(void);
+static void Cmd_if_not_status3(void);
+static void Cmd_if_side_affecting(void);
+static void Cmd_if_not_side_affecting(void);
+static void Cmd_if_less_than(void);
+static void Cmd_if_more_than(void);
+static void Cmd_if_equal(void);
+static void Cmd_if_not_equal(void);
+static void Cmd_if_less_than_ptr(void);
+static void Cmd_if_more_than_ptr(void);
+static void Cmd_if_equal_ptr(void);
+static void Cmd_if_not_equal_ptr(void);
+static void Cmd_if_move(void);
+static void Cmd_if_not_move(void);
+static void Cmd_if_in_bytes(void);
+static void Cmd_if_not_in_bytes(void);
+static void Cmd_if_in_hwords(void);
+static void Cmd_if_not_in_hwords(void);
+static void Cmd_if_user_has_attacking_move(void);
+static void Cmd_if_user_has_no_attacking_moves(void);
+static void Cmd_get_turn_count(void);
+static void Cmd_get_type(void);
+static void Cmd_get_considered_move_power(void);
+static void Cmd_get_how_powerful_move_is(void);
+static void Cmd_get_last_used_battler_move(void);
+static void Cmd_if_equal_(void);
+static void Cmd_if_not_equal_(void);
+static void Cmd_if_would_go_first(void);
+static void Cmd_if_would_not_go_first(void);
+static void Cmd_nullsub_2A(void);
+static void Cmd_nullsub_2B(void);
+static void Cmd_count_alive_pokemon(void);
+static void Cmd_get_considered_move(void);
+static void Cmd_get_considered_move_effect(void);
+static void Cmd_get_ability(void);
+static void Cmd_get_highest_type_effectiveness(void);
+static void Cmd_if_type_effectiveness(void);
+static void Cmd_nullsub_32(void);
+static void Cmd_nullsub_33(void);
+static void Cmd_if_status_in_party(void);
+static void Cmd_if_status_not_in_party(void);
+static void Cmd_get_weather(void);
+static void Cmd_if_effect(void);
+static void Cmd_if_not_effect(void);
+static void Cmd_if_stat_level_less_than(void);
+static void Cmd_if_stat_level_more_than(void);
+static void Cmd_if_stat_level_equal(void);
+static void Cmd_if_stat_level_not_equal(void);
+static void Cmd_if_can_faint(void);
+static void Cmd_if_cant_faint(void);
+static void Cmd_if_has_move(void);
+static void Cmd_if_doesnt_have_move(void);
+static void Cmd_if_has_move_with_effect(void);
+static void Cmd_if_doesnt_have_move_with_effect(void);
+static void Cmd_if_any_move_disabled_or_encored(void);
+static void Cmd_if_curr_move_disabled_or_encored(void);
+static void Cmd_flee(void);
+static void Cmd_if_random_safari_flee(void);
+static void Cmd_watch(void);
+static void Cmd_get_hold_effect(void);
+static void Cmd_get_gender(void);
+static void Cmd_is_first_turn_for(void);
+static void Cmd_get_stockpile_count(void);
+static void Cmd_is_double_battle(void);
+static void Cmd_get_used_held_item(void);
+static void Cmd_get_move_type_from_result(void);
+static void Cmd_get_move_power_from_result(void);
+static void Cmd_get_move_effect_from_result(void);
+static void Cmd_get_protect_count(void);
+static void Cmd_nullsub_52(void);
+static void Cmd_nullsub_53(void);
+static void Cmd_nullsub_54(void);
+static void Cmd_nullsub_55(void);
+static void Cmd_nullsub_56(void);
+static void Cmd_nullsub_57(void);
+static void Cmd_call(void);
+static void Cmd_goto(void);
+static void Cmd_end(void);
+static void Cmd_if_level_compare(void);
+static void Cmd_if_target_taunted(void);
+static void Cmd_if_target_not_taunted(void);
static void RecordLastUsedMoveByTarget(void);
static void BattleAI_DoAIProcessing(void);
@@ -148,100 +148,100 @@ typedef void (*BattleAICmdFunc)(void);
static const BattleAICmdFunc sBattleAICmdTable[] =
{
- BattleAICmd_if_random_less_than, // 0x0
- BattleAICmd_if_random_greater_than, // 0x1
- BattleAICmd_if_random_equal, // 0x2
- BattleAICmd_if_random_not_equal, // 0x3
- BattleAICmd_score, // 0x4
- BattleAICmd_if_hp_less_than, // 0x5
- BattleAICmd_if_hp_more_than, // 0x6
- BattleAICmd_if_hp_equal, // 0x7
- BattleAICmd_if_hp_not_equal, // 0x8
- BattleAICmd_if_status, // 0x9
- BattleAICmd_if_not_status, // 0xA
- BattleAICmd_if_status2, // 0xB
- BattleAICmd_if_not_status2, // 0xC
- BattleAICmd_if_status3, // 0xD
- BattleAICmd_if_not_status3, // 0xE
- BattleAICmd_if_status4, // 0xF
- BattleAICmd_if_not_status4, // 0x10
- BattleAICmd_if_less_than, // 0x11
- BattleAICmd_if_more_than, // 0x12
- BattleAICmd_if_equal, // 0x13
- BattleAICmd_if_not_equal, // 0x14
- BattleAICmd_if_less_than_32, // 0x15
- BattleAICmd_if_more_than_32, // 0x16
- BattleAICmd_if_equal_32, // 0x17
- BattleAICmd_if_not_equal_32, // 0x18
- BattleAICmd_if_move, // 0x19
- BattleAICmd_if_not_move, // 0x1A
- BattleAICmd_if_in_bytes, // 0x1B
- BattleAICmd_if_not_in_bytes, // 0x1C
- BattleAICmd_if_in_words, // 0x1D
- BattleAICmd_if_not_in_words, // 0x1E
- BattleAICmd_if_user_can_damage, // 0x1F
- BattleAICmd_if_user_cant_damage, // 0x20
- BattleAICmd_get_turn_count, // 0x21
- BattleAICmd_get_type, // 0x22
- BattleAICmd_get_move_power, // 0x23
- BattleAICmd_is_most_powerful_move, // 0x24
- BattleAICmd_get_move, // 0x25
- BattleAICmd_if_arg_equal, // 0x26
- BattleAICmd_if_arg_not_equal, // 0x27
- BattleAICmd_if_would_go_first, // 0x28
- BattleAICmd_if_would_not_go_first, // 0x29
- BattleAICmd_nullsub_2A, // 0x2A
- BattleAICmd_nullsub_2B, // 0x2B
- BattleAICmd_count_alive_pokemon, // 0x2C
- BattleAICmd_get_considered_move, // 0x2D
- BattleAICmd_get_considered_move_effect, // 0x2E
- BattleAICmd_get_ability, // 0x2F
- BattleAICmd_get_highest_possible_damage, // 0x30
- BattleAICmd_if_type_effectiveness, // 0x31
- BattleAICmd_nullsub_32, // 0x32
- BattleAICmd_nullsub_33, // 0x33
- BattleAICmd_if_status_in_party, // 0x34
- BattleAICmd_if_status_not_in_party, // 0x35
- BattleAICmd_get_weather, // 0x36
- BattleAICmd_if_effect, // 0x37
- BattleAICmd_if_not_effect, // 0x38
- BattleAICmd_if_stat_level_less_than, // 0x39
- BattleAICmd_if_stat_level_more_than, // 0x3A
- BattleAICmd_if_stat_level_equal, // 0x3B
- BattleAICmd_if_stat_level_not_equal, // 0x3C
- BattleAICmd_if_can_faint, // 0x3D
- BattleAICmd_if_cant_faint, // 0x3E
- BattleAICmd_if_has_move, // 0x3F
- BattleAICmd_if_dont_have_move, // 0x40
- BattleAICmd_if_move_effect, // 0x41
- BattleAICmd_if_not_move_effect, // 0x42
- BattleAICmd_if_last_move_did_damage, // 0x43
- BattleAICmd_if_encored, // 0x44
- BattleAICmd_flee, // 0x45
- BattleAICmd_frlg_safari, // 0x46
- BattleAICmd_watch, // 0x47
- BattleAICmd_get_hold_effect, // 0x48
- BattleAICmd_get_gender, // 0x49
- BattleAICmd_is_first_turn, // 0x4A
- BattleAICmd_get_stockpile_count, // 0x4B
- BattleAICmd_is_double_battle, // 0x4C
- BattleAICmd_get_used_held_item, // 0x4D
- BattleAICmd_get_move_type_from_result, // 0x4E
- BattleAICmd_get_move_power_from_result, // 0x4F
- BattleAICmd_get_move_effect_from_result, // 0x50
- BattleAICmd_get_protect_count, // 0x51
- BattleAICmd_nullsub_52, // 0x52
- BattleAICmd_nullsub_53, // 0x53
- BattleAICmd_nullsub_54, // 0x54
- BattleAICmd_nullsub_55, // 0x55
- BattleAICmd_nullsub_56, // 0x56
- BattleAICmd_nullsub_57, // 0x57
- BattleAICmd_call, // 0x58
- BattleAICmd_jump, // 0x59
- BattleAICmd_end, // 0x5A
- BattleAICmd_if_level_compare, // 0x5B
- BattleAICmd_if_taunted, // 0x5C
- BattleAICmd_if_not_taunted, // 0x5D
+ Cmd_if_random_less_than, // 0x0
+ Cmd_if_random_greater_than, // 0x1
+ Cmd_if_random_equal, // 0x2
+ Cmd_if_random_not_equal, // 0x3
+ Cmd_score, // 0x4
+ Cmd_if_hp_less_than, // 0x5
+ Cmd_if_hp_more_than, // 0x6
+ Cmd_if_hp_equal, // 0x7
+ Cmd_if_hp_not_equal, // 0x8
+ Cmd_if_status, // 0x9
+ Cmd_if_not_status, // 0xA
+ Cmd_if_status2, // 0xB
+ Cmd_if_not_status2, // 0xC
+ Cmd_if_status3, // 0xD
+ Cmd_if_not_status3, // 0xE
+ Cmd_if_side_affecting, // 0xF
+ Cmd_if_not_side_affecting, // 0x10
+ Cmd_if_less_than, // 0x11
+ Cmd_if_more_than, // 0x12
+ Cmd_if_equal, // 0x13
+ Cmd_if_not_equal, // 0x14
+ Cmd_if_less_than_ptr, // 0x15
+ Cmd_if_more_than_ptr, // 0x16
+ Cmd_if_equal_ptr, // 0x17
+ Cmd_if_not_equal_ptr, // 0x18
+ Cmd_if_move, // 0x19
+ Cmd_if_not_move, // 0x1A
+ Cmd_if_in_bytes, // 0x1B
+ Cmd_if_not_in_bytes, // 0x1C
+ Cmd_if_in_hwords, // 0x1D
+ Cmd_if_not_in_hwords, // 0x1E
+ Cmd_if_user_has_attacking_move, // 0x1F
+ Cmd_if_user_has_no_attacking_moves, // 0x20
+ Cmd_get_turn_count, // 0x21
+ Cmd_get_type, // 0x22
+ Cmd_get_considered_move_power, // 0x23
+ Cmd_get_how_powerful_move_is, // 0x24
+ Cmd_get_last_used_battler_move, // 0x25
+ Cmd_if_equal_, // 0x26
+ Cmd_if_not_equal_, // 0x27
+ Cmd_if_would_go_first, // 0x28
+ Cmd_if_would_not_go_first, // 0x29
+ Cmd_nullsub_2A, // 0x2A
+ Cmd_nullsub_2B, // 0x2B
+ Cmd_count_alive_pokemon, // 0x2C
+ Cmd_get_considered_move, // 0x2D
+ Cmd_get_considered_move_effect, // 0x2E
+ Cmd_get_ability, // 0x2F
+ Cmd_get_highest_type_effectiveness, // 0x30
+ Cmd_if_type_effectiveness, // 0x31
+ Cmd_nullsub_32, // 0x32
+ Cmd_nullsub_33, // 0x33
+ Cmd_if_status_in_party, // 0x34
+ Cmd_if_status_not_in_party, // 0x35
+ Cmd_get_weather, // 0x36
+ Cmd_if_effect, // 0x37
+ Cmd_if_not_effect, // 0x38
+ Cmd_if_stat_level_less_than, // 0x39
+ Cmd_if_stat_level_more_than, // 0x3A
+ Cmd_if_stat_level_equal, // 0x3B
+ Cmd_if_stat_level_not_equal, // 0x3C
+ Cmd_if_can_faint, // 0x3D
+ Cmd_if_cant_faint, // 0x3E
+ Cmd_if_has_move, // 0x3F
+ Cmd_if_doesnt_have_move, // 0x40
+ Cmd_if_has_move_with_effect, // 0x41
+ Cmd_if_doesnt_have_move_with_effect, // 0x42
+ Cmd_if_any_move_disabled_or_encored, // 0x43
+ Cmd_if_curr_move_disabled_or_encored, // 0x44
+ Cmd_flee, // 0x45
+ Cmd_if_random_safari_flee, // 0x46
+ Cmd_watch, // 0x47
+ Cmd_get_hold_effect, // 0x48
+ Cmd_get_gender, // 0x49
+ Cmd_is_first_turn_for, // 0x4A
+ Cmd_get_stockpile_count, // 0x4B
+ Cmd_is_double_battle, // 0x4C
+ Cmd_get_used_held_item, // 0x4D
+ Cmd_get_move_type_from_result, // 0x4E
+ Cmd_get_move_power_from_result, // 0x4F
+ Cmd_get_move_effect_from_result, // 0x50
+ Cmd_get_protect_count, // 0x51
+ Cmd_nullsub_52, // 0x52
+ Cmd_nullsub_53, // 0x53
+ Cmd_nullsub_54, // 0x54
+ Cmd_nullsub_55, // 0x55
+ Cmd_nullsub_56, // 0x56
+ Cmd_nullsub_57, // 0x57
+ Cmd_call, // 0x58
+ Cmd_goto, // 0x59
+ Cmd_end, // 0x5A
+ Cmd_if_level_compare, // 0x5B
+ Cmd_if_target_taunted, // 0x5C
+ Cmd_if_target_not_taunted, // 0x5D
};
static const u16 sDiscouragedPowerfulMoveEffects[] =
@@ -275,7 +275,7 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
&& !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_LINK))
)
{
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_TRAINER_ITEMS; i++)
{
if (gTrainers[gTrainerBattleOpponent_A].items[i] != 0)
{
@@ -298,13 +298,13 @@ void BattleAI_SetupAIData(void)
for (i = 0; i < sizeof(struct AI_ThinkingStruct); i++)
data[i] = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_MON_MOVES; i++)
AI_THINKING_STRUCT->score[i] = 100;
moveLimitations = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
// Ignore moves that aren't possible to use.
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBitTable[i] & moveLimitations)
AI_THINKING_STRUCT->score[i] = 0;
@@ -331,32 +331,32 @@ void BattleAI_SetupAIData(void)
// Choose proper trainer ai scripts.
// Fire Red, why all the returns?!?
- if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) // _080C6E84
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
{
AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_SAFARI;
return;
}
- else if (gBattleTypeFlags & BATTLE_TYPE_ROAMER) // _080C6EAC
+ else if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
{
AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_ROAMING;
return;
}
- else if (!(gBattleTypeFlags & (0x80900)) && (gTrainerBattleOpponent_A != 0x400)) // _080C6ECC
+ else if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)) && (gTrainerBattleOpponent_A != SECRET_BASE_OPPONENT))
{
- if (gBattleTypeFlags & (0x80 << 10))
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD_SCRIPTED)
{
- AI_THINKING_STRUCT->aiFlags = 1;
+ AI_THINKING_STRUCT->aiFlags = AI_SCRIPT_CHECK_BAD_MOVE;
return;
}
- else if (gBattleTypeFlags & (0x80 << 11))
+ else if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY_FRLG)
{
- AI_THINKING_STRUCT->aiFlags = 7;
+ AI_THINKING_STRUCT->aiFlags = (AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY);
return;
}
}
else
{
- AI_THINKING_STRUCT->aiFlags = 7;
+ AI_THINKING_STRUCT->aiFlags = (AI_SCRIPT_CHECK_BAD_MOVE | AI_SCRIPT_TRY_TO_FAINT | AI_SCRIPT_CHECK_VIABILITY);
return;
}
AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent_A].aiFlags;
@@ -383,10 +383,10 @@ u8 BattleAI_ChooseMoveOrAction(void)
}
// special flee or watch cases for safari.
- if (AI_THINKING_STRUCT->aiAction & (AI_ACTION_FLEE)) // flee
- return 4;
- if (AI_THINKING_STRUCT->aiAction & (AI_ACTION_WATCH)) // watch
- return 5;
+ if (AI_THINKING_STRUCT->aiAction & AI_ACTION_FLEE)
+ return AI_CHOICE_FLEE;
+ if (AI_THINKING_STRUCT->aiAction & AI_ACTION_WATCH)
+ return AI_CHOICE_WATCH;
numOfBestMoves = 1;
currentMoveArray[0] = AI_THINKING_STRUCT->score[0];
@@ -416,13 +416,14 @@ static void BattleAI_DoAIProcessing(void)
{
switch (AI_THINKING_STRUCT->aiState)
{
- case AIState_DoNotProcess: //Needed to match.
+ case AIState_DoNotProcess: // Needed to match.
break;
case AIState_SettingUp:
- sAIScriptPtr = gBattleAI_ScriptsTable[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr.
+ sAIScriptPtr = gBattleAI_ScriptsTable[AI_THINKING_STRUCT->aiLogicId];
+
if (gBattleMons[gBattlerAttacker].pp[AI_THINKING_STRUCT->movesetIndex] == 0)
{
- AI_THINKING_STRUCT->moveConsidered = 0; // don't consider a move you have 0 PP for, idiot.
+ AI_THINKING_STRUCT->moveConsidered = 0; // Don't consider moves with no PP
}
else
{
@@ -432,15 +433,18 @@ static void BattleAI_DoAIProcessing(void)
break;
case AIState_Processing:
if (AI_THINKING_STRUCT->moveConsidered != 0)
- sBattleAICmdTable[*sAIScriptPtr](); // run AI command.
+ {
+ sBattleAICmdTable[*sAIScriptPtr](); // Run AI command.
+ }
else
{
- AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0; // definitely do not consider any move that has 0 PP.
+ AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0;
AI_THINKING_STRUCT->aiAction |= AI_ACTION_DONE;
}
if (AI_THINKING_STRUCT->aiAction & AI_ACTION_DONE)
{
AI_THINKING_STRUCT->movesetIndex++;
+
if (AI_THINKING_STRUCT->movesetIndex < MAX_MON_MOVES && (AI_THINKING_STRUCT->aiAction & AI_ACTION_DO_NOT_ATTACK) == 0)
AI_THINKING_STRUCT->aiState = AIState_SettingUp; // as long as their are more moves to process, keep setting this to setup state.
else
@@ -479,16 +483,16 @@ static void ClearBattlerMoveHistory(u8 battlerId)
void RecordAbilityBattle(u8 battlerId, u8 abilityId)
{
if (GetBattlerSide(battlerId) == 0)
- BATTLE_HISTORY->abilities[GetBattlerPosition(battlerId) & 1] = abilityId;
+ BATTLE_HISTORY->abilities[GET_BATTLER_SIDE(battlerId)] = abilityId;
}
void RecordItemEffectBattle(u8 battlerId, u8 itemEffect)
{
if (GetBattlerSide(battlerId) == 0)
- BATTLE_HISTORY->itemEffects[GetBattlerPosition(battlerId) & 1] = itemEffect;
+ BATTLE_HISTORY->itemEffects[GET_BATTLER_SIDE(battlerId)] = itemEffect;
}
-static void BattleAICmd_if_random_less_than(void)
+static void Cmd_if_random_less_than(void)
{
if (Random() % 256 < sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -496,7 +500,7 @@ static void BattleAICmd_if_random_less_than(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_random_greater_than(void)
+static void Cmd_if_random_greater_than(void)
{
if (Random() % 256 > sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -504,7 +508,7 @@ static void BattleAICmd_if_random_greater_than(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_random_equal(void)
+static void Cmd_if_random_equal(void)
{
if (Random() % 256 == sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -512,7 +516,7 @@ static void BattleAICmd_if_random_equal(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_random_not_equal(void)
+static void Cmd_if_random_not_equal(void)
{
if (Random() % 256 != sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -520,7 +524,7 @@ static void BattleAICmd_if_random_not_equal(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_score(void)
+static void Cmd_score(void)
{
AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] += sAIScriptPtr[1]; // add the result to the array of the move consider's score.
@@ -530,218 +534,213 @@ static void BattleAICmd_score(void)
sAIScriptPtr += 2; // AI return.
}
-enum {
- TARGET,
- USER
-};
-
-static void BattleAICmd_if_hp_less_than(void)
+static void Cmd_if_hp_less_than(void)
{
- u16 index;
+ u16 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) < sAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[battlerId].hp / gBattleMons[battlerId].maxHP) < sAIScriptPtr[2])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
else
sAIScriptPtr += 7;
}
-static void BattleAICmd_if_hp_more_than(void)
+static void Cmd_if_hp_more_than(void)
{
- u16 index;
+ u16 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) > sAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[battlerId].hp / gBattleMons[battlerId].maxHP) > sAIScriptPtr[2])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
else
sAIScriptPtr += 7;
}
-static void BattleAICmd_if_hp_equal(void)
+static void Cmd_if_hp_equal(void)
{
- u16 index;
+ u16 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) == sAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[battlerId].hp / gBattleMons[battlerId].maxHP) == sAIScriptPtr[2])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
else
sAIScriptPtr += 7;
}
-static void BattleAICmd_if_hp_not_equal(void)
+static void Cmd_if_hp_not_equal(void)
{
- u16 index;
+ u16 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if ((u32)(100 * gBattleMons[index].hp / gBattleMons[index].maxHP) != sAIScriptPtr[2])
+ if ((u32)(100 * gBattleMons[battlerId].hp / gBattleMons[battlerId].maxHP) != sAIScriptPtr[2])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
else
sAIScriptPtr += 7;
}
-static void BattleAICmd_if_status(void)
+static void Cmd_if_status(void)
{
- u16 index;
- u32 arg;
+ u16 battlerId;
+ u32 status;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- arg = T1_READ_32(sAIScriptPtr + 2);
+ status = T1_READ_32(sAIScriptPtr + 2);
- if ((gBattleMons[index].status1 & arg) != 0)
+ if (gBattleMons[battlerId].status1 & status)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
else
sAIScriptPtr += 10;
}
-static void BattleAICmd_if_not_status(void)
+static void Cmd_if_not_status(void)
{
- u16 index;
- u32 arg;
+ u16 battlerId;
+ u32 status;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- arg = T1_READ_32(sAIScriptPtr + 2);
+ status = T1_READ_32(sAIScriptPtr + 2);
- if ((gBattleMons[index].status1 & arg) == 0)
+ if (!(gBattleMons[battlerId].status1 & status))
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
else
sAIScriptPtr += 10;
}
-static void BattleAICmd_if_status2(void)
+static void Cmd_if_status2(void)
{
- u16 index;
- u32 arg;
+ u16 battlerId;
+ u32 status;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- arg = T1_READ_32(sAIScriptPtr + 2);
+ status = T1_READ_32(sAIScriptPtr + 2);
- if ((gBattleMons[index].status2 & arg) != 0)
+ if ((gBattleMons[battlerId].status2 & status))
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
else
sAIScriptPtr += 10;
}
-static void BattleAICmd_if_not_status2(void)
+static void Cmd_if_not_status2(void)
{
- u16 index;
- u32 arg;
+ u16 battlerId;
+ u32 status;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- arg = T1_READ_32(sAIScriptPtr + 2);
+ status = T1_READ_32(sAIScriptPtr + 2);
- if ((gBattleMons[index].status2 & arg) == 0)
+ if (!(gBattleMons[battlerId].status2 & status))
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
else
sAIScriptPtr += 10;
}
-static void BattleAICmd_if_status3(void)
+static void Cmd_if_status3(void)
{
- u16 index;
- u32 arg;
+ u16 battlerId;
+ u32 status;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- arg = T1_READ_32(sAIScriptPtr + 2);
+ status = T1_READ_32(sAIScriptPtr + 2);
- if ((gStatuses3[index] & arg) != 0)
+ if (gStatuses3[battlerId] & status)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
else
sAIScriptPtr += 10;
}
-static void BattleAICmd_if_not_status3(void)
+static void Cmd_if_not_status3(void)
{
- u16 index;
- u32 arg;
+ u16 battlerId;
+ u32 status;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- arg = T1_READ_32(sAIScriptPtr + 2);
+ status = T1_READ_32(sAIScriptPtr + 2);
- if ((gStatuses3[index] & arg) == 0)
+ if (!(gStatuses3[battlerId] & status))
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
else
sAIScriptPtr += 10;
}
-static void BattleAICmd_if_status4(void)
+static void Cmd_if_side_affecting(void)
{
- u16 index;
- u32 arg1, arg2;
+ u16 battlerId;
+ u32 side, status;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- arg1 = GetBattlerPosition(index) & 1;
- arg2 = T1_READ_32(sAIScriptPtr + 2);
+ side = GET_BATTLER_SIDE(battlerId);
+ status = T1_READ_32(sAIScriptPtr + 2);
- if ((gSideStatuses[arg1] & arg2) != 0)
+ if (gSideStatuses[side] & status)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
else
sAIScriptPtr += 10;
}
-static void BattleAICmd_if_not_status4(void)
+static void Cmd_if_not_side_affecting(void)
{
- u16 index;
- u32 arg1, arg2;
+ u16 battlerId;
+ u32 side, status;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- arg1 = GetBattlerPosition(index) & 1;
- arg2 = T1_READ_32(sAIScriptPtr + 2);
+ side = GET_BATTLER_SIDE(battlerId);
+ status = T1_READ_32(sAIScriptPtr + 2);
- if ((gSideStatuses[arg1] & arg2) == 0)
+ if (!(gSideStatuses[side] & status))
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
else
sAIScriptPtr += 10;
}
-static void BattleAICmd_if_less_than(void)
+static void Cmd_if_less_than(void)
{
if (AI_THINKING_STRUCT->funcResult < sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -749,7 +748,7 @@ static void BattleAICmd_if_less_than(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_more_than(void)
+static void Cmd_if_more_than(void)
{
if (AI_THINKING_STRUCT->funcResult > sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -757,7 +756,7 @@ static void BattleAICmd_if_more_than(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_equal(void)
+static void Cmd_if_equal(void)
{
if (AI_THINKING_STRUCT->funcResult == sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -765,7 +764,7 @@ static void BattleAICmd_if_equal(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_not_equal(void)
+static void Cmd_if_not_equal(void)
{
if (AI_THINKING_STRUCT->funcResult != sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -773,47 +772,47 @@ static void BattleAICmd_if_not_equal(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_less_than_32(void)
+static void Cmd_if_less_than_ptr(void)
{
- u8 *temp = T1_READ_PTR(sAIScriptPtr + 1);
+ const u8 *value = T1_READ_PTR(sAIScriptPtr + 1);
- if (AI_THINKING_STRUCT->funcResult < *temp)
+ if (AI_THINKING_STRUCT->funcResult < *value)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 5);
else
sAIScriptPtr += 9;
}
-static void BattleAICmd_if_more_than_32(void)
+static void Cmd_if_more_than_ptr(void)
{
- u8 *temp = T1_READ_PTR(sAIScriptPtr + 1);
+ const u8 *value = T1_READ_PTR(sAIScriptPtr + 1);
- if (AI_THINKING_STRUCT->funcResult > *temp)
+ if (AI_THINKING_STRUCT->funcResult > *value)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 5);
else
sAIScriptPtr += 9;
}
-static void BattleAICmd_if_equal_32(void)
+static void Cmd_if_equal_ptr(void)
{
- u8 *temp = T1_READ_PTR(sAIScriptPtr + 1);
+ const u8 *value = T1_READ_PTR(sAIScriptPtr + 1);
- if (AI_THINKING_STRUCT->funcResult == *temp)
+ if (AI_THINKING_STRUCT->funcResult == *value)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 5);
else
sAIScriptPtr += 9;
}
-static void BattleAICmd_if_not_equal_32(void)
+static void Cmd_if_not_equal_ptr(void)
{
- u8 *temp = T1_READ_PTR(sAIScriptPtr + 1);
+ const u8 *value = T1_READ_PTR(sAIScriptPtr + 1);
- if (AI_THINKING_STRUCT->funcResult != *temp)
+ if (AI_THINKING_STRUCT->funcResult != *value)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 5);
else
sAIScriptPtr += 9;
}
-static void BattleAICmd_if_move(void)
+static void Cmd_if_move(void)
{
u16 move = T1_READ_16(sAIScriptPtr + 1);
@@ -823,7 +822,7 @@ static void BattleAICmd_if_move(void)
sAIScriptPtr += 7;
}
-static void BattleAICmd_if_not_move(void)
+static void Cmd_if_not_move(void)
{
u16 move = T1_READ_16(sAIScriptPtr + 1);
@@ -833,9 +832,9 @@ static void BattleAICmd_if_not_move(void)
sAIScriptPtr += 7;
}
-static void BattleAICmd_if_in_bytes(void)
+static void Cmd_if_in_bytes(void)
{
- u8 *ptr = T1_READ_PTR(sAIScriptPtr + 1);
+ const u8 *ptr = T1_READ_PTR(sAIScriptPtr + 1);
while (*ptr != 0xFF)
{
@@ -849,9 +848,9 @@ static void BattleAICmd_if_in_bytes(void)
sAIScriptPtr += 9;
}
-static void BattleAICmd_if_not_in_bytes(void)
+static void Cmd_if_not_in_bytes(void)
{
- u8 *ptr = T1_READ_PTR(sAIScriptPtr + 1);
+ const u8 *ptr = T1_READ_PTR(sAIScriptPtr + 1);
while (*ptr != 0xFF)
{
@@ -865,9 +864,9 @@ static void BattleAICmd_if_not_in_bytes(void)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 5);
}
-static void BattleAICmd_if_in_words(void)
+static void Cmd_if_in_hwords(void)
{
- u16 *ptr = (u16 *)T1_READ_PTR(sAIScriptPtr + 1);
+ const u16 *ptr = (const u16 *)T1_READ_PTR(sAIScriptPtr + 1);
while (*ptr != 0xFFFF)
{
@@ -881,9 +880,9 @@ static void BattleAICmd_if_in_words(void)
sAIScriptPtr += 9;
}
-static void BattleAICmd_if_not_in_words(void)
+static void Cmd_if_not_in_hwords(void)
{
- u16 *ptr = (u16 *)T1_READ_PTR(sAIScriptPtr + 1);
+ const u16 *ptr = (const u16 *)T1_READ_PTR(sAIScriptPtr + 1);
while (*ptr != 0xFFFF)
{
@@ -897,7 +896,7 @@ static void BattleAICmd_if_not_in_words(void)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 5);
}
-static void BattleAICmd_if_user_can_damage(void)
+static void Cmd_if_user_has_attacking_move(void)
{
s32 i;
@@ -907,13 +906,14 @@ static void BattleAICmd_if_user_can_damage(void)
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
break;
}
+
if (i == MAX_MON_MOVES)
sAIScriptPtr += 5;
else
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 1);
}
-static void BattleAICmd_if_user_cant_damage(void)
+static void Cmd_if_user_has_no_attacking_moves(void)
{
s32 i;
@@ -923,51 +923,52 @@ static void BattleAICmd_if_user_cant_damage(void)
&& gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].power != 0)
break;
}
+
if (i != MAX_MON_MOVES)
sAIScriptPtr += 5;
else
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 1);
}
-static void BattleAICmd_get_turn_count(void)
+static void Cmd_get_turn_count(void)
{
AI_THINKING_STRUCT->funcResult = gBattleResults.battleTurnCounter;
sAIScriptPtr += 1;
}
-static void BattleAICmd_get_type(void)
+static void Cmd_get_type(void)
{
switch (sAIScriptPtr[1])
{
- case 1: // player primary type
+ case AI_TYPE1_USER:
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerAttacker].type1;
break;
- case 0: // enemy primary type
+ case AI_TYPE1_TARGET:
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type1;
break;
- case 3: // player secondary type
+ case AI_TYPE2_USER:
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerAttacker].type2;
break;
- case 2: // enemy secondary type
+ case AI_TYPE2_TARGET:
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type2;
break;
- case 4: // type of move being pointed to
+ case AI_TYPE_MOVE:
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].type;
break;
}
sAIScriptPtr += 2;
}
-static void BattleAICmd_get_move_power(void)
+static void Cmd_get_considered_move_power(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power;
sAIScriptPtr += 1;
}
-static void BattleAICmd_is_most_powerful_move(void)
+static void Cmd_get_how_powerful_move_is(void)
{
s32 i, checkedMove;
- s32 moveDmgs[4];
+ s32 moveDmgs[MAX_MON_MOVES];
for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
{
@@ -1028,9 +1029,9 @@ static void BattleAICmd_is_most_powerful_move(void)
sAIScriptPtr++;
}
-static void BattleAICmd_get_move(void)
+static void Cmd_get_last_used_battler_move(void)
{
- if (sAIScriptPtr[1] == USER)
+ if (sAIScriptPtr[1] == AI_USER)
AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerAttacker];
else
AI_THINKING_STRUCT->funcResult = gLastMoves[gBattlerTarget];
@@ -1038,7 +1039,7 @@ static void BattleAICmd_get_move(void)
sAIScriptPtr += 2;
}
-static void BattleAICmd_if_arg_equal(void)
+static void Cmd_if_equal_(void) // Same as if_equal.
{
if (sAIScriptPtr[1] == AI_THINKING_STRUCT->funcResult)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -1046,7 +1047,7 @@ static void BattleAICmd_if_arg_equal(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_arg_not_equal(void)
+static void Cmd_if_not_equal_(void) // Same as if_not_equal.
{
if (sAIScriptPtr[1] != AI_THINKING_STRUCT->funcResult)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -1054,7 +1055,7 @@ static void BattleAICmd_if_arg_not_equal(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_would_go_first(void)
+static void Cmd_if_would_go_first(void)
{
if (GetWhoStrikesFirst(gBattlerAttacker, gBattlerTarget, TRUE) == sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -1062,7 +1063,7 @@ static void BattleAICmd_if_would_go_first(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_would_not_go_first(void)
+static void Cmd_if_would_not_go_first(void)
{
if (GetWhoStrikesFirst(gBattlerAttacker, gBattlerTarget, TRUE) != sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -1070,49 +1071,49 @@ static void BattleAICmd_if_would_not_go_first(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_nullsub_2A(void)
+static void Cmd_nullsub_2A(void)
{
}
-static void BattleAICmd_nullsub_2B(void)
+static void Cmd_nullsub_2B(void)
{
}
-static void BattleAICmd_count_alive_pokemon(void)
+static void Cmd_count_alive_pokemon(void)
{
+ u8 battlerId;
+ u8 battlerOnField1, battlerOnField2;
struct Pokemon *party;
- int i;
- u8 index;
- u8 var, var2;
+ s32 i;
AI_THINKING_STRUCT->funcResult = 0;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if (GetBattlerSide(index) == 0)
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- u32 status;
- var = gBattlerPartyIndexes[index];
- status = GetBattlerPosition(index) ^ 2;
- var2 = gBattlerPartyIndexes[GetBattlerAtPosition(status)];
+ u32 position;
+ battlerOnField1 = gBattlerPartyIndexes[battlerId];
+ position = GetBattlerPosition(battlerId) ^ BIT_FLANK;
+ battlerOnField2 = gBattlerPartyIndexes[GetBattlerAtPosition(position)];
}
- else
+ else // In singles there's only one battlerId by side.
{
- var = gBattlerPartyIndexes[index];
- var2 = gBattlerPartyIndexes[index];
+ battlerOnField1 = gBattlerPartyIndexes[battlerId];
+ battlerOnField2 = gBattlerPartyIndexes[battlerId];
}
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
- if (i != var && i != var2
+ if (i != battlerOnField1 && i != battlerOnField2
&& GetMonData(&party[i], MON_DATA_HP) != 0
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
&& GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
@@ -1124,30 +1125,30 @@ static void BattleAICmd_count_alive_pokemon(void)
sAIScriptPtr += 2;
}
-static void BattleAICmd_get_considered_move(void)
+static void Cmd_get_considered_move(void)
{
AI_THINKING_STRUCT->funcResult = AI_THINKING_STRUCT->moveConsidered;
sAIScriptPtr += 1;
}
-static void BattleAICmd_get_considered_move_effect(void)
+static void Cmd_get_considered_move_effect(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect;
sAIScriptPtr += 1;
}
-static void BattleAICmd_get_ability(void)
+static void Cmd_get_ability(void)
{
- u8 index;
+ u8 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if (GetBattlerSide(index) == TARGET)
+ if (GetBattlerSide(battlerId) == AI_TARGET)
{
- u16 side = GetBattlerPosition(index) & 1;
+ u16 side = GET_BATTLER_SIDE(battlerId);
if (BATTLE_HISTORY->abilities[side] != 0)
{
@@ -1157,48 +1158,46 @@ static void BattleAICmd_get_ability(void)
}
// abilities that prevent fleeing.
- if (gBattleMons[index].ability == ABILITY_SHADOW_TAG
- || gBattleMons[index].ability == ABILITY_MAGNET_PULL
- || gBattleMons[index].ability == ABILITY_ARENA_TRAP)
+ if (gBattleMons[battlerId].ability == ABILITY_SHADOW_TAG
+ || gBattleMons[battlerId].ability == ABILITY_MAGNET_PULL
+ || gBattleMons[battlerId].ability == ABILITY_ARENA_TRAP)
{
- AI_THINKING_STRUCT->funcResult = gBattleMons[index].ability;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[battlerId].ability;
sAIScriptPtr += 2;
return;
}
- if (gBaseStats[gBattleMons[index].species].abilities[0] != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[battlerId].species].abilities[0] != ABILITY_NONE)
{
- if (gBaseStats[gBattleMons[index].species].abilities[1] != ABILITY_NONE)
+ if (gBaseStats[gBattleMons[battlerId].species].abilities[1] != ABILITY_NONE)
{
// AI has no knowledge of opponent, so it guesses which ability.
if (Random() % 2)
- {
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].abilities[0];
- }
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].abilities[0];
else
- {
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].abilities[1];
- }
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].abilities[1];
}
else
{
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].abilities[0]; // it's definitely ability 1.
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].abilities[0];
}
}
else
{
- AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[index].species].abilities[1]; // AI cant actually reach this part since every mon has at least 1 ability.
+ // AI can't actually reach this part since no pokemon has ability 2 and no ability 1.
+ AI_THINKING_STRUCT->funcResult = gBaseStats[gBattleMons[battlerId].species].abilities[1];
}
}
else
{
// The AI knows its own ability.
- AI_THINKING_STRUCT->funcResult = gBattleMons[index].ability;
+ AI_THINKING_STRUCT->funcResult = gBattleMons[battlerId].ability;
}
+
sAIScriptPtr += 2;
}
-static void BattleAICmd_get_highest_possible_damage(void)
+static void Cmd_get_highest_type_effectiveness(void)
{
s32 i;
u8 *dynamicMoveType;
@@ -1211,12 +1210,12 @@ static void BattleAICmd_get_highest_possible_damage(void)
gCritMultiplier = 1;
AI_THINKING_STRUCT->funcResult = 0;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < MAX_MON_MOVES; i++)
{
gBattleMoveDamage = 40;
gCurrentMove = gBattleMons[gBattlerAttacker].moves[i];
- if (gCurrentMove != 0)
+ if (gCurrentMove != MOVE_NONE)
{
TypeCalc(gCurrentMove, gBattlerAttacker, gBattlerTarget);
@@ -1240,7 +1239,7 @@ static void BattleAICmd_get_highest_possible_damage(void)
sAIScriptPtr += 1;
}
-static void BattleAICmd_if_type_effectiveness(void)
+static void Cmd_if_type_effectiveness(void)
{
u8 damageVar;
@@ -1276,22 +1275,24 @@ static void BattleAICmd_if_type_effectiveness(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_nullsub_32(void)
+static void Cmd_nullsub_32(void)
{
}
-static void BattleAICmd_nullsub_33(void)
+static void Cmd_nullsub_33(void)
{
}
-static void BattleAICmd_if_status_in_party(void)
+static void Cmd_if_status_in_party(void)
{
struct Pokemon *party;
struct Pokemon *partyPtr;
int i;
u32 statusToCompareTo;
+ // u8 battlerId
- // for whatever reason, game freak put the party pointer into 2 variables instead of 1. it's possible at some point the switch encompassed the whole function and used each respective variable creating largely duplicate code.
+ // for whatever reason, game freak put the party pointer into 2 variables instead of 1
+ // it's possible at some point the switch encompassed the whole function and used each respective variable creating largely duplicate code.
switch (sAIScriptPtr[1])
{
case 1:
@@ -1302,9 +1303,23 @@ static void BattleAICmd_if_status_in_party(void)
break;
}
+ /* Emerald's fixed version below
+ switch (sAIScriptPtr[1])
+ {
+ case AI_USER:
+ battlerId = gBattlerAttacker;
+ break;
+ default:
+ battlerId = gBattlerTarget;
+ break;
+ }
+
+ party = (GetBattlerSide(battlerId) == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty;
+ */
+
statusToCompareTo = T1_READ_32(sAIScriptPtr + 2);
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u16 species = GetMonData(&party[i], MON_DATA_SPECIES);
u16 hp = GetMonData(&party[i], MON_DATA_HP);
@@ -1312,7 +1327,7 @@ static void BattleAICmd_if_status_in_party(void)
if (species != SPECIES_NONE && species != SPECIES_EGG && hp != 0 && status == statusToCompareTo)
{
- sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6); // WHAT. why is this being merged into the above switch
+ sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 6);
return;
}
}
@@ -1321,12 +1336,13 @@ static void BattleAICmd_if_status_in_party(void)
}
// bugged, doesnt return properly. also unused
-static void BattleAICmd_if_status_not_in_party(void)
+static void Cmd_if_status_not_in_party(void)
{
struct Pokemon *party;
struct Pokemon *partyPtr;
int i;
u32 statusToCompareTo;
+ //u8 battlerId
switch (sAIScriptPtr[1])
{
@@ -1340,7 +1356,7 @@ static void BattleAICmd_if_status_not_in_party(void)
statusToCompareTo = T1_READ_32(sAIScriptPtr + 2);
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u16 species = GetMonData(&party[i], MON_DATA_SPECIES);
u16 hp = GetMonData(&party[i], MON_DATA_HP);
@@ -1363,7 +1379,7 @@ enum
extern u16 gBattleWeather;
-static void BattleAICmd_get_weather(void)
+static void Cmd_get_weather(void)
{
if (gBattleWeather & WEATHER_RAIN_ANY)
AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_RAIN;
@@ -1377,7 +1393,7 @@ static void BattleAICmd_get_weather(void)
sAIScriptPtr += 1;
}
-static void BattleAICmd_if_effect(void)
+static void Cmd_if_effect(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -1385,7 +1401,7 @@ static void BattleAICmd_if_effect(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_not_effect(void)
+static void Cmd_if_not_effect(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect != sAIScriptPtr[1])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
@@ -1393,67 +1409,67 @@ static void BattleAICmd_if_not_effect(void)
sAIScriptPtr += 6;
}
-static void BattleAICmd_if_stat_level_less_than(void)
+static void Cmd_if_stat_level_less_than(void)
{
- u32 party;
+ u32 battlerId;
- if (sAIScriptPtr[1] == USER)
- party = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- party = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if (gBattleMons[party].statStages[sAIScriptPtr[2]] < sAIScriptPtr[3])
+ if (gBattleMons[battlerId].statStages[sAIScriptPtr[2]] < sAIScriptPtr[3])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 4);
else
sAIScriptPtr += 8;
}
-static void BattleAICmd_if_stat_level_more_than(void)
+static void Cmd_if_stat_level_more_than(void)
{
- u32 party;
+ u32 battlerId;
- if (sAIScriptPtr[1] == USER)
- party = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- party = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if (gBattleMons[party].statStages[sAIScriptPtr[2]] > sAIScriptPtr[3])
+ if (gBattleMons[battlerId].statStages[sAIScriptPtr[2]] > sAIScriptPtr[3])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 4);
else
sAIScriptPtr += 8;
}
-static void BattleAICmd_if_stat_level_equal(void)
+static void Cmd_if_stat_level_equal(void)
{
- u32 party;
+ u32 battlerId;
- if (sAIScriptPtr[1] == USER)
- party = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- party = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if (gBattleMons[party].statStages[sAIScriptPtr[2]] == sAIScriptPtr[3])
+ if (gBattleMons[battlerId].statStages[sAIScriptPtr[2]] == sAIScriptPtr[3])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 4);
else
sAIScriptPtr += 8;
}
-static void BattleAICmd_if_stat_level_not_equal(void)
+static void Cmd_if_stat_level_not_equal(void)
{
- u32 party;
+ u32 battlerId;
- if (sAIScriptPtr[1] == USER)
- party = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- party = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if (gBattleMons[party].statStages[sAIScriptPtr[2]] != sAIScriptPtr[3])
+ if (gBattleMons[battlerId].statStages[sAIScriptPtr[2]] != sAIScriptPtr[3])
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 4);
else
sAIScriptPtr += 8;
}
-static void BattleAICmd_if_can_faint(void)
+static void Cmd_if_can_faint(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
@@ -1482,7 +1498,7 @@ static void BattleAICmd_if_can_faint(void)
sAIScriptPtr += 5;
}
-static void BattleAICmd_if_cant_faint(void)
+static void Cmd_if_cant_faint(void)
{
if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power < 2)
{
@@ -1509,18 +1525,18 @@ static void BattleAICmd_if_cant_faint(void)
sAIScriptPtr += 5;
}
-static void BattleAICmd_if_has_move(void)
+static void Cmd_if_has_move(void)
{
int i;
- u16 *temp_ptr = (u16 *)(sAIScriptPtr + 2);
+ const u16 *movePtr = (u16 *)(sAIScriptPtr + 2);
switch (sAIScriptPtr[1])
{
- case 1:
- case 3:
+ case AI_USER:
+ case AI_USER_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (gBattleMons[gBattlerAttacker].moves[i] == *temp_ptr)
+ if (gBattleMons[gBattlerAttacker].moves[i] == *movePtr)
break;
}
if (i == MAX_MON_MOVES)
@@ -1528,33 +1544,33 @@ static void BattleAICmd_if_has_move(void)
else
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 4);
break;
- case 0:
- case 2:
+ case AI_TARGET:
+ case AI_TARGET_PARTNER:
for (i = 0; i < 8; i++)
{
- if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == *temp_ptr)
+ if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == *movePtr)
break;
}
if (i == 8)
sAIScriptPtr += 8;
- else
+ else
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 4);
break;
}
}
-static void BattleAICmd_if_dont_have_move(void)
+static void Cmd_if_doesnt_have_move(void)
{
int i;
- u16 *temp_ptr = (u16 *)(sAIScriptPtr + 2);
+ const u16 *movePtr = (u16 *)(sAIScriptPtr + 2);
switch (sAIScriptPtr[1])
{
- case 1:
- case 3:
+ case AI_USER:
+ case AI_USER_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (gBattleMons[gBattlerAttacker].moves[i] == *temp_ptr)
+ if (gBattleMons[gBattlerAttacker].moves[i] == *movePtr)
break;
}
if (i != MAX_MON_MOVES)
@@ -1562,11 +1578,11 @@ static void BattleAICmd_if_dont_have_move(void)
else
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 4);
break;
- case 0:
- case 2:
+ case AI_TARGET:
+ case AI_TARGET_PARTNER:
for (i = 0; i < 8; i++)
{
- if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == *temp_ptr)
+ if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] == *movePtr)
break;
}
if (i != 8)
@@ -1577,14 +1593,14 @@ static void BattleAICmd_if_dont_have_move(void)
}
}
-static void BattleAICmd_if_move_effect(void)
+static void Cmd_if_has_move_with_effect(void)
{
int i;
switch (sAIScriptPtr[1])
{
- case 1:
- case 3:
+ case AI_USER:
+ case AI_USER_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == sAIScriptPtr[2])
@@ -1595,8 +1611,8 @@ static void BattleAICmd_if_move_effect(void)
else
sAIScriptPtr += 7;
break;
- case 0:
- case 2:
+ case AI_TARGET:
+ case AI_TARGET_PARTNER:
for (i = 0; i < 8; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == sAIScriptPtr[2])
@@ -1606,14 +1622,14 @@ static void BattleAICmd_if_move_effect(void)
}
}
-static void BattleAICmd_if_not_move_effect(void)
+static void Cmd_if_doesnt_have_move_with_effect(void)
{
int i;
switch (sAIScriptPtr[1])
{
- case 1:
- case 3:
+ case AI_USER:
+ case AI_USER_PARTNER:
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gBattleMons[gBattlerAttacker].moves[i] != 0 && gBattleMoves[gBattleMons[gBattlerAttacker].moves[i]].effect == sAIScriptPtr[2])
@@ -1624,8 +1640,8 @@ static void BattleAICmd_if_not_move_effect(void)
else
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
break;
- case 0:
- case 2:
+ case AI_TARGET:
+ case AI_TARGET_PARTNER:
for (i = 0; i < 8; i++)
{
if (BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i] != 0 && gBattleMoves[BATTLE_HISTORY->usedMoves[gBattlerTarget >> 1][i]].effect == sAIScriptPtr[2])
@@ -1635,171 +1651,163 @@ static void BattleAICmd_if_not_move_effect(void)
}
}
-static void BattleAICmd_if_last_move_did_damage(void)
+static void Cmd_if_any_move_disabled_or_encored(void)
{
- u8 index;
+ u8 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
if (sAIScriptPtr[2] == 0)
{
- if (gDisableStructs[index].disabledMove == MOVE_NONE)
- {
+ if (gDisableStructs[battlerId].disabledMove == MOVE_NONE)
sAIScriptPtr += 7;
- return;
- }
- sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
- return;
+ else
+ sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
}
- else if (sAIScriptPtr[2] != 1) // ignore the macro if its not 0 or 1.
+ else if (sAIScriptPtr[2] != 1)
{
sAIScriptPtr += 7;
- return;
}
- else if (gDisableStructs[index].encoredMove != MOVE_NONE)
+ else
{
- sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
- return;
+ if (gDisableStructs[battlerId].encoredMove != MOVE_NONE)
+ sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 3);
+ else
+ sAIScriptPtr += 7;
}
- sAIScriptPtr += 7;
}
-static void BattleAICmd_if_encored(void)
+static void Cmd_if_curr_move_disabled_or_encored(void)
{
switch (sAIScriptPtr[1])
{
- case 0: // _08109348
+ case 0:
if (gDisableStructs[gActiveBattler].disabledMove == AI_THINKING_STRUCT->moveConsidered)
- {
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
- return;
- }
- sAIScriptPtr += 6;
- return;
- case 1: // _08109370
+ else
+ sAIScriptPtr += 6;
+ break;
+ case 1:
if (gDisableStructs[gActiveBattler].encoredMove == AI_THINKING_STRUCT->moveConsidered)
- {
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 2);
- return;
- }
- sAIScriptPtr += 6;
- return;
+ else
+ sAIScriptPtr += 6;
+ break;
default:
sAIScriptPtr += 6;
- return;
+ break;
}
}
-static void BattleAICmd_flee(void)
+static void Cmd_flee(void)
{
AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); // what matters is AI_ACTION_FLEE being enabled.
}
-// FRLG safari command
-static void BattleAICmd_frlg_safari(void)
+static void Cmd_if_random_safari_flee(void)
{
- u8 var;
+ u8 safariFleeRate;
if (gBattleStruct->safariGoNearCounter)
{
- var = gBattleStruct->safariEscapeFactor * 2;
- if (var > 20)
- var = 20;
+ safariFleeRate = gBattleStruct->safariEscapeFactor * 2;
+ if (safariFleeRate > 20)
+ safariFleeRate = 20;
}
- else if (gBattleStruct->safariPkblThrowCounter != 0) // _080C91DC
+ else if (gBattleStruct->safariPkblThrowCounter != 0)
{
- var = gBattleStruct->safariEscapeFactor / 4;
- if (var == 0)
- var = 1;
+ safariFleeRate = gBattleStruct->safariEscapeFactor / 4;
+ if (safariFleeRate == 0)
+ safariFleeRate = 1;
}
else
- var = gBattleStruct->safariEscapeFactor;
- var *= 5;
- if ((u8)(Random() % 100) < var)
+ safariFleeRate = gBattleStruct->safariEscapeFactor;
+ safariFleeRate *= 5;
+ if ((u8)(Random() % 100) < safariFleeRate)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 1);
else
sAIScriptPtr += 5;
}
-static void BattleAICmd_watch(void)
+static void Cmd_watch(void)
{
AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); // what matters is AI_ACTION_WATCH being enabled.
}
-static void BattleAICmd_get_hold_effect(void)
+static void Cmd_get_hold_effect(void)
{
- u8 index;
+ u8 battlerId;
u16 side;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- if (GetBattlerSide(index) == 0)
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
{
- side = (GetBattlerPosition(index) & 1);
+ side = GET_BATTLER_SIDE(battlerId);
AI_THINKING_STRUCT->funcResult = BATTLE_HISTORY->itemEffects[side];
}
else
- AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[index].item);
+ AI_THINKING_STRUCT->funcResult = ItemId_GetHoldEffect(gBattleMons[battlerId].item);
sAIScriptPtr += 2;
}
-static void BattleAICmd_get_gender(void)
+static void Cmd_get_gender(void)
{
- u8 index;
+ u8 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- AI_THINKING_STRUCT->funcResult = GetGenderFromSpeciesAndPersonality(gBattleMons[index].species, gBattleMons[index].personality);
+ AI_THINKING_STRUCT->funcResult = GetGenderFromSpeciesAndPersonality(gBattleMons[battlerId].species, gBattleMons[battlerId].personality);
sAIScriptPtr += 2;
}
-static void BattleAICmd_is_first_turn(void)
+static void Cmd_is_first_turn_for(void)
{
- u8 index;
+ u8 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].isFirstTurn;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[battlerId].isFirstTurn;
sAIScriptPtr += 2;
}
-static void BattleAICmd_get_stockpile_count(void)
+static void Cmd_get_stockpile_count(void)
{
- u8 index;
+ u8 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].stockpileCounter;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[battlerId].stockpileCounter;
sAIScriptPtr += 2;
}
-static void BattleAICmd_is_double_battle(void)
+static void Cmd_is_double_battle(void)
{
AI_THINKING_STRUCT->funcResult = gBattleTypeFlags & BATTLE_TYPE_DOUBLE;
sAIScriptPtr += 1;
}
-static void BattleAICmd_get_used_held_item(void)
+static void Cmd_get_used_held_item(void)
{
u8 battlerId;
@@ -1807,88 +1815,88 @@ static void BattleAICmd_get_used_held_item(void)
battlerId = gBattlerAttacker;
else
battlerId = gBattlerTarget;
- // This is likely a leftover from Ruby's code and its ugly ewram access.
+
AI_THINKING_STRUCT->funcResult = ((u8 *)gBattleStruct->usedHeldItems)[battlerId * 2];
sAIScriptPtr += 2;
}
-static void BattleAICmd_get_move_type_from_result(void)
+static void Cmd_get_move_type_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].type;
sAIScriptPtr += 1;
}
-static void BattleAICmd_get_move_power_from_result(void)
+static void Cmd_get_move_power_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].power;
sAIScriptPtr += 1;
}
-static void BattleAICmd_get_move_effect_from_result(void)
+static void Cmd_get_move_effect_from_result(void)
{
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->funcResult].effect;
sAIScriptPtr += 1;
}
-static void BattleAICmd_get_protect_count(void)
+static void Cmd_get_protect_count(void)
{
- u8 index;
+ u8 battlerId;
- if (sAIScriptPtr[1] == USER)
- index = gBattlerAttacker;
+ if (sAIScriptPtr[1] == AI_USER)
+ battlerId = gBattlerAttacker;
else
- index = gBattlerTarget;
+ battlerId = gBattlerTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].protectUses;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[battlerId].protectUses;
sAIScriptPtr += 2;
}
-static void BattleAICmd_nullsub_52(void)
+static void Cmd_nullsub_52(void)
{
}
-static void BattleAICmd_nullsub_53(void)
+static void Cmd_nullsub_53(void)
{
}
-static void BattleAICmd_nullsub_54(void)
+static void Cmd_nullsub_54(void)
{
}
-static void BattleAICmd_nullsub_55(void)
+static void Cmd_nullsub_55(void)
{
}
-static void BattleAICmd_nullsub_56(void)
+static void Cmd_nullsub_56(void)
{
}
-static void BattleAICmd_nullsub_57(void)
+static void Cmd_nullsub_57(void)
{
}
-static void BattleAICmd_call(void)
+static void Cmd_call(void)
{
AIStackPushVar(sAIScriptPtr + 5);
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 1);
}
-static void BattleAICmd_jump(void)
+static void Cmd_goto(void)
{
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 1);
}
-static void BattleAICmd_end(void)
+static void Cmd_end(void)
{
if (AIStackPop() == FALSE)
AI_THINKING_STRUCT->aiAction |= AI_ACTION_DONE;
}
-static void BattleAICmd_if_level_compare(void)
+static void Cmd_if_level_compare(void)
{
switch (sAIScriptPtr[1])
{
@@ -1919,7 +1927,7 @@ static void BattleAICmd_if_level_compare(void)
}
}
-static void BattleAICmd_if_taunted(void)
+static void Cmd_if_target_taunted(void)
{
if (gDisableStructs[gBattlerTarget].tauntTimer != 0)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 1);
@@ -1927,7 +1935,7 @@ static void BattleAICmd_if_taunted(void)
sAIScriptPtr += 5;
}
-static void BattleAICmd_if_not_taunted(void)
+static void Cmd_if_target_not_taunted(void)
{
if (gDisableStructs[gBattlerTarget].tauntTimer == 0)
sAIScriptPtr = T1_READ_PTR(sAIScriptPtr + 1);
diff --git a/src/battle_main.c b/src/battle_main.c
index 15c264369..fd8aeffbc 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -2559,9 +2559,9 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
{
- if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY))
+ if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_GHOST_UNVEILED))
{
- if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) != BATTLE_TYPE_GHOST)
+ if (!IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
else if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
@@ -2674,7 +2674,7 @@ static void BattleIntroPrintWildMonAttacked(void)
{
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
PrepareStringBattle(STRINGID_INTROMSG, 0);
- if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST))
+ if (IS_BATTLE_TYPE_GHOST_WITH_SCOPE(gBattleTypeFlags))
{
gBattleScripting.battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
BattleScriptExecute(BattleScript_SilphScopeUnveiled);
@@ -4183,7 +4183,7 @@ bool8 TryRunFromBattle(u8 battler)
gProtectStructs[battler].fleeFlag = 2;
++effect;
}
- else if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
+ else if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
{
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
++effect;
diff --git a/src/battle_message.c b/src/battle_message.c
index 5bc0f113f..4f95ae364 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -872,10 +872,10 @@ const u8 *const gBattleStringsTable[] = {
gUnknown_83FDDEB,
gUnknown_83FB484,
gUnknown_83FB4BE,
- Text_1A5CF1,
- Text_1A5D31,
- Text_1A5D6E,
- Text_1A5DB1,
+ Text_MonSentToBoxInSomeonesPC,
+ Text_MonSentToBoxInBillsPC,
+ Text_MonSentToBoxSomeonesBoxFull,
+ Text_MonSentToBoxBillsBoxFull,
sText_PokedudeUsedItem,
gUnknown_83FDA4D,
gUnknown_83FDA7A,
@@ -1516,7 +1516,7 @@ void BufferStringBattle(u16 stringId)
{
if (gBattleTypeFlags & BATTLE_TYPE_GHOST)
{
- if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
+ if (gBattleTypeFlags & BATTLE_TYPE_GHOST_UNVEILED)
stringPtr = gUnknown_83FD30D;
else
stringPtr = gUnknown_83FD2D9;
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 3b9270948..527e32bcc 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -7352,7 +7352,7 @@ static void atk95_setsandstorm(void)
static void atk96_weatherdamage(void)
{
- if (((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
+ if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)
&& (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT))
{
gBattleMoveDamage = 0;
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 06f65dae2..102a1b969 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -301,7 +301,7 @@ void BattleSetup_StartScriptedWildBattle(void)
{
ScriptContext2_Enable();
gMain.savedCallback = CB2_EndScriptedWildBattle;
- gBattleTypeFlags = BATTLE_TYPE_PALACE;
+ gBattleTypeFlags = BATTLE_TYPE_WILD_SCRIPTED;
CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
@@ -313,7 +313,7 @@ void ScrSpecial_StartMarowakBattle(void)
gMain.savedCallback = CB2_EndMarowakBattle;
if (CheckBagHasItem(ITEM_SILPH_SCOPE, 1))
{
- gBattleTypeFlags = BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY;
+ gBattleTypeFlags = BATTLE_TYPE_GHOST | BATTLE_TYPE_GHOST_UNVEILED;
CreateMonWithGenderNatureLetter(gEnemyParty, SPECIES_MAROWAK, 30, 31, MON_FEMALE, NATURE_SERIOUS, 0);
}
else
@@ -342,7 +342,7 @@ void Special_StartLegendaryBattle(void)
ScriptContext2_Enable();
gMain.savedCallback = CB2_EndScriptedWildBattle;
- gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_ARENA;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_LEGENDARY_FRLG;
species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES);
switch (species)
{
diff --git a/src/battle_util.c b/src/battle_util.c
index b415f6550..d28e524a8 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1382,7 +1382,7 @@ u8 AtkCanceller_UnableToUseMove(void)
++gBattleStruct->atkCancellerTracker;
break;
case CANCELLER_GHOST: // GHOST in pokemon tower
- if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST)
+ if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
{
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
gBattlescriptCurrInstr = BattleScript_TooScaredToMove;
@@ -1616,7 +1616,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (!moveArg)
moveArg = gCurrentMove;
GET_MOVE_TYPE(moveArg, moveType);
- if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST
+ if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)
&& (gLastUsedAbility == ABILITY_INTIMIDATE || gLastUsedAbility == ABILITY_TRACE))
return effect;
switch (caseID)
diff --git a/src/credits.c b/src/credits.c
index a0138e57a..ceb2028f9 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -920,7 +920,7 @@ static s32 RollCredits(void)
case CREDITSSCRCMD_MON:
sCreditsMgr->mainseqno = CREDITSSCENE_MON_DESTROY_ASSETS;
sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param;
- fade_screen(1, 0);
+ FadeScreen(1, 0);
break;
case CREDITSSCRCMD_THEENDGFX:
sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_DESTROY_ASSETS;
@@ -1342,7 +1342,7 @@ static s32 RollCredits(void)
"\tstrb r0, [r2, 0x9]\n"
"\tmovs r0, 0x1\n"
"\tmovs r1, 0\n"
- "\tbl fade_screen\n"
+ "\tbl FadeScreen\n"
"\tb _080F3E94\n"
"\t.align 2, 0\n"
"_080F3E50: .4byte sCreditsMgr\n"
diff --git a/src/event_object_lock.c b/src/event_object_lock.c
index ea4fa00b9..e91642aa2 100644
--- a/src/event_object_lock.c
+++ b/src/event_object_lock.c
@@ -9,7 +9,7 @@
bool8 walkrun_is_standing_still(void)
{
- if (gPlayerAvatar.running1 == 1)
+ if (gPlayerAvatar.tileTransitionState == 1)
return FALSE;
else
return TRUE;
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index dbc5f23b5..0af5f462c 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -56,12 +56,12 @@ void pal_fill_for_maplights(void)
{
case 0:
palette_bg_faded_fill_black();
- fade_screen(0, 0);
+ FadeScreen(0, 0);
palette_bg_faded_fill_black();
break;
case 1:
palette_bg_faded_fill_white();
- fade_screen(2, 0);
+ FadeScreen(2, 0);
palette_bg_faded_fill_white();
break;
}
@@ -73,12 +73,12 @@ static void sub_807DBAC(void)
{
case 0:
palette_bg_faded_fill_black();
- fade_screen(0, 3);
+ FadeScreen(0, 3);
palette_bg_faded_fill_black();
break;
case 1:
palette_bg_faded_fill_white();
- fade_screen(2, 3);
+ FadeScreen(2, 3);
palette_bg_faded_fill_white();
break;
}
@@ -87,7 +87,7 @@ static void sub_807DBAC(void)
void sub_807DC00(void)
{
palette_bg_faded_fill_black();
- fade_screen(0, 0);
+ FadeScreen(0, 0);
palette_bg_faded_fill_black();
}
@@ -95,16 +95,16 @@ void sub_807DC18(void)
{
const struct MapHeader *header = warp1_get_mapheader();
if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE))
- fade_screen(1, 0);
+ FadeScreen(1, 0);
else
{
switch (sub_80C9D7C(GetCurrentMapType(), header->mapType))
{
case 0:
- fade_screen(1, 0);
+ FadeScreen(1, 0);
break;
case 1:
- fade_screen(3, 0);
+ FadeScreen(3, 0);
break;
}
}
@@ -115,10 +115,10 @@ static void sub_807DC70(void)
switch (sub_80C9D7C(GetCurrentMapType(), warp1_get_mapheader()->mapType))
{
case 0:
- fade_screen(1, 3);
+ FadeScreen(1, 3);
break;
case 1:
- fade_screen(3, 3);
+ FadeScreen(3, 3);
break;
}
}
@@ -654,7 +654,7 @@ static void sub_807E678(u8 taskId)
{
case 0:
ClearLinkCallback_2();
- fade_screen(1, 0);
+ FadeScreen(1, 0);
sub_8055F88();
PlaySE(SE_KAIDAN);
data[0]++;
diff --git a/src/graphics.c b/src/graphics.c
deleted file mode 100644
index e69de29bb..000000000
--- a/src/graphics.c
+++ /dev/null
diff --git a/src/item_use.c b/src/item_use.c
index fc5703a75..57771754a 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -458,7 +458,7 @@ void FieldUseFunc_TmCase(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = Task_InitTMCaseFromField;
}
}
@@ -489,7 +489,7 @@ void FieldUseFunc_BerryPouch(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = Task_InitBerryPouchFromField;
}
}
@@ -532,7 +532,7 @@ void FieldUseFunc_TeachyTv(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = Task_InitTeachyTvFromField;
}
}
@@ -662,7 +662,7 @@ void FieldUseFunc_TownMap(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = sub_80A1CC0;
}
}
@@ -694,7 +694,7 @@ void FieldUseFunc_FameChecker(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = sub_80A1D68;
}
}
diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c
index 41fe72e20..17f604ee8 100644
--- a/src/link_rfu_2.c
+++ b/src/link_rfu_2.c
@@ -1917,7 +1917,7 @@ void ClearAndInitHostRFUtgtGname(void)
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, 0, 0, 0);
}
-void sub_80FAF58(u8 a0, u32 a1, u32 a2)
+void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2)
{
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, a0, a2, a1);
}
@@ -1944,7 +1944,7 @@ void sub_80FAFE0(u8 a0)
void sub_80FB008(u8 a0, u32 a1, u32 a2)
{
if (a0)
- sub_80FAF58(a0, a1, a2);
+ SetHostRFUtgtGname(a0, a1, a2);
rfu_REQ_configGameData(0, 2, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c
index 87197f57f..31ea0830b 100644
--- a/src/link_rfu_3.c
+++ b/src/link_rfu_3.c
@@ -603,7 +603,7 @@ static u8 GetConnectedChildStrength(u8 maxFlags)
}
#endif
-void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3)
+void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3)
{
s32 i;
@@ -617,7 +617,7 @@ void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3)
r3 >>= 8;
}
data->playerGender = gSaveBlock2Ptr->playerGender;
- data->unk_0a_0 = r9;
+ data->unk_0a_0 = activity;
data->unk_0a_7 = r2;
data->unk_00.unk_00_0 = GAME_LANGUAGE;
data->unk_00.unk_01_2 = GAME_VERSION;
@@ -681,7 +681,7 @@ bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx)
return retVal;
}
-void sub_80FCD50(struct GFtgtGname *gname, u8 *uname)
+void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname)
{
memcpy(gname, &gHostRFUtgtGnameBuffer, RFU_GAME_NAME_LENGTH);
memcpy(uname, gHostRFUtgtUnameBuffer, RFU_USER_NAME_LENGTH);
@@ -929,7 +929,7 @@ void RecordMixTrainerNames(void)
}
}
-bool32 sub_80FD338(u16 id, u8 *name)
+bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name)
{
s32 i;
diff --git a/src/mevent.c b/src/mevent.c
index b22d02cbc..afad326b5 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -652,7 +652,7 @@ void BlankMEventBuffer2(void)
gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.crc = 0;
}
-u16 sub_81440E8(void)
+u16 GetWonderCardFlagId(void)
{
if (ValidateReceivedWonderCard())
return gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.unk_00;
@@ -674,7 +674,7 @@ bool32 sub_8144124(u16 a0)
bool32 CheckReceivedGiftFromWonderCard(void)
{
- u16 value = sub_81440E8();
+ u16 value = GetWonderCardFlagId();
if (!sub_8144124(value))
return FALSE;
if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE)
diff --git a/src/party_menu.c b/src/party_menu.c
index b6ec995ff..df0e70b37 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -5818,7 +5818,7 @@ static void Task_ContinueChoosingHalfParty(u8 taskId)
}
}
-void sub_81277F4(u8 menuType, MainCallback callback)
+void ChooseMonForTradingBoard(u8 menuType, MainCallback callback)
{
InitPartyMenu(menuType,
PARTY_LAYOUT_SINGLE,
diff --git a/src/player_pc.c b/src/player_pc.c
index 63870c86a..928676844 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -331,7 +331,7 @@ static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId)
static void Task_PlayerPcDepositItem(u8 taskId)
{
gTasks[taskId].func = Task_DepositItem_WaitFadeAndGoToBag;
- fade_screen(1, 0);
+ FadeScreen(1, 0);
}
static void Task_ReturnToItemStorageSubmenu(u8 taskId)
@@ -394,7 +394,7 @@ static void Task_WithdrawItemBeginFade(u8 taskId)
{
gTasks[taskId].func = Task_WithdrawItem_WaitFadeAndGoToItemStorage;
ItemPc_SetInitializedFlag(0);
- fade_screen(1, 0);
+ FadeScreen(1, 0);
}
static void Task_PlayerPcCancel(u8 taskId)
@@ -556,7 +556,7 @@ static void Task_MailSubmenuHandleInput(u8 taskId)
static void Task_PlayerPcReadMail(u8 taskId)
{
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = Task_WaitFadeAndReadSelectedMail;
}
@@ -663,7 +663,7 @@ static void Task_PlayerPcGiveMailToMon(u8 taskId)
}
else
{
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = Task_WaitFadeAndGoToPartyMenu;
}
}
diff --git a/src/pokemon.c b/src/pokemon.c
index 5b715133b..d1305861a 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -3982,49 +3982,49 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_ATK] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_ATK] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_ATK] = 12;
retVal = FALSE;
}
break;
// in-battle stat boosting effects?
case 1:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ if (gBattleMons[gActiveBattler].statStages[STAT_DEF] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_DEF] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_SPEED] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_SPEED] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_SPEED] = 12;
retVal = FALSE;
}
break;
// more stat boosting effects?
case 2:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
+ if (gBattleMons[gActiveBattler].statStages[STAT_ACC] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_ACC] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
{
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF;
- if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] > 12)
- gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] = 12;
+ gBattleMons[gActiveBattler].statStages[STAT_SPATK] += itemEffect[cmdIndex] & 0xF;
+ if (gBattleMons[gActiveBattler].statStages[STAT_SPATK] > 12)
+ gBattleMons[gActiveBattler].statStages[STAT_SPATK] = 12;
retVal = FALSE;
}
break;
@@ -4496,25 +4496,25 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
retVal = FALSE;
break;
// in-battle stat boosting effects?
case 1:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
retVal = FALSE;
break;
// more stat boosting effects?
case 2:
if ((itemEffect[cmdIndex] & 0xF0)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
- && gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
+ && gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
retVal = FALSE;
break;
case 3:
diff --git a/src/quest_log.c b/src/quest_log.c
index 38b3733ea..0cda4eb77 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -1049,7 +1049,7 @@ static void sub_811175C(u8 sceneNum, struct UnkStruct_203AE98 * a1)
static void sub_81118F4(s8 a0)
{
- fade_screen(1, a0);
+ FadeScreen(1, a0);
sQuestLogCB = QuestLog_AdvancePlayhead;
}
@@ -1309,7 +1309,7 @@ static void QuestLog_CloseTextWindow(void)
static void QuestLog_SkipToEndOfPlayback(s8 a0)
{
- fade_screen(1, a0);
+ FadeScreen(1, a0);
sQuestLogCB = QuestLog_WaitFadeAndCancelPlayback;
}
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 5ab38e461..ebfd18493 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -202,7 +202,7 @@ static bool8 LoadBattlerSpriteGfx(u8 battler)
{
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
- if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
+ if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
@@ -228,7 +228,7 @@ static void CreateBattlerSprite(u8 battler)
{
u8 posY;
- if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
+ if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
posY = GetGhostSpriteDefault_Y(battler);
else if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
posY = GetSubstituteSpriteDefault_Y(battler);
diff --git a/src/rfu_union_tool.c b/src/rfu_union_tool.c
new file mode 100644
index 000000000..20b29de9b
--- /dev/null
+++ b/src/rfu_union_tool.c
@@ -0,0 +1,663 @@
+#include "global.h"
+#include "event_data.h"
+#include "event_object_movement.h"
+#include "event_object_80688E4.h"
+#include "event_object_8097404.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "rfu_union_tool.h"
+#include "script.h"
+#include "task.h"
+#include "constants/flags.h"
+#include "constants/event_object_movement.h"
+#include "constants/object_events.h"
+
+static EWRAM_DATA struct UnionObj * UnionObjWork = NULL;
+static EWRAM_DATA u32 sUnionObjRefreshTimer = 0;
+
+static u8 StartUnionObjAnimTask(void);
+static u32 sub_811BBC8(u32 playerIdx, u32 arg1);
+static void sub_811C008(s32 arg0, s32 arg1, u8 arg2);
+
+static const u8 sUnionObjectEventGfxIds[][10] = {
+ [MALE] = {
+ OBJECT_EVENT_GFX_COOLTRAINER_M,
+ OBJECT_EVENT_GFX_BLACKBELT,
+ OBJECT_EVENT_GFX_CAMPER,
+ OBJECT_EVENT_GFX_YOUNGSTER,
+ OBJECT_EVENT_GFX_BOY,
+ OBJECT_EVENT_GFX_BUG_CATCHER,
+ OBJECT_EVENT_GFX_MAN,
+ OBJECT_EVENT_GFX_ROCKER
+ },
+ [FEMALE] = {
+ OBJECT_EVENT_GFX_COOLTRAINER_F,
+ OBJECT_EVENT_GFX_CHANNELER,
+ OBJECT_EVENT_GFX_PICNICKER,
+ OBJECT_EVENT_GFX_LASS,
+ OBJECT_EVENT_GFX_WOMAN_1,
+ OBJECT_EVENT_GFX_BATTLE_GIRL,
+ OBJECT_EVENT_GFX_WOMAN_2,
+ OBJECT_EVENT_GFX_BEAUTY
+ }
+};
+
+static const s16 sUnionPartnerCoords[][2] = {
+ { 4, 6},
+ {13, 8},
+ {10, 6},
+ { 1, 8},
+ {13, 4},
+ { 7, 4},
+ { 1, 4},
+ { 7, 8}
+};
+
+static const s8 sFacingDirectionOffsets[][2] = {
+ [DIR_NONE] = { 0, 0},
+ [DIR_SOUTH] = { 1, 0},
+ [DIR_NORTH] = { 0, -1},
+ [DIR_WEST] = {-1, 0},
+ [DIR_EAST] = { 0, 1}
+};
+
+static const u8 sOppositeFacingDirection[] = {
+ [DIR_NONE] = DIR_NONE,
+ [DIR_SOUTH] = DIR_NORTH,
+ [DIR_NORTH] = DIR_SOUTH,
+ [DIR_WEST] = DIR_EAST,
+ [DIR_EAST] = DIR_WEST
+};
+
+static const u8 gUnknown_845711B[] = {
+ 1,
+ 3,
+ 1,
+ 4,
+ 2
+};
+
+static const u8 sUnionRoomLocalIds[] = {
+ 9,
+ 8,
+ 7,
+ 2,
+ 6,
+ 5,
+ 4,
+ 3
+};
+
+static const u16 sUnref_8457128[] = {
+ 0x63,
+ 0x64,
+ 0x65,
+ 0x66,
+ 0x67,
+ 0x68,
+ 0x69,
+ 0x6A
+};
+
+static bool32 is_walking_or_running(void)
+{
+ if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static u8 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id)
+{
+ return sUnionObjectEventGfxIds[gender][id % 8];
+}
+
+static void GetUnionRoomPlayerFacingCoords(u32 id, u32 dirn, s32 * xp, s32 * yp)
+{
+ *xp = sUnionPartnerCoords[id][0] + sFacingDirectionOffsets[dirn][0] + 7;
+ *yp = sUnionPartnerCoords[id][1] + sFacingDirectionOffsets[dirn][1] + 7;
+}
+
+static bool32 sub_811B58C(u32 id, u32 dirn, s32 x, s32 y)
+{
+ if (sUnionPartnerCoords[id][0] + sFacingDirectionOffsets[dirn][0] + 7 != x)
+ {
+ return FALSE;
+ }
+ else if (sUnionPartnerCoords[id][1] + sFacingDirectionOffsets[dirn][1] + 7 != y)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+static bool32 IsUnionRoomPlayerHidden(u32 player_idx)
+{
+ return FlagGet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
+}
+
+static void HideUnionRoomPlayer(u32 player_idx)
+{
+ FlagSet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
+}
+
+static void ShowUnionRoomPlayer(u32 player_idx)
+{
+ FlagClear(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
+}
+
+static void SetUnionRoomPlayerGfx(u32 playerIdx, u32 gfxId)
+{
+ VarSet(VAR_OBJ_GFX_ID_0 + playerIdx, gfxId);
+}
+
+static void CreateUnionRoomPlayerObjectEvent(u32 playerIdx)
+{
+ TrySpawnObjectEvent(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+}
+
+static void RemoveUnionRoomPlayerObjectEvent(u32 playerIdx)
+{
+ RemoveObjectEventByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+}
+
+static bool32 SetUnionRoomPlayerEnterExitMovement(u32 playerIdx, const u8 * movement)
+{
+ u8 objectId;
+ struct ObjectEvent * object;
+ if (TryGetObjectEventIdByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
+ {
+ return FALSE;
+ }
+ object = &gObjectEvents[objectId];
+ if (ObjectEventIsMovementOverridden(object))
+ {
+ return FALSE;
+ }
+ if (ObjectEventSetHeldMovement(object, *movement))
+ {
+ AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 387);
+ return FALSE;
+ }
+ return TRUE;
+}
+static bool32 TryReleaseUnionRoomPlayerObjectEvent(u32 playerIdx)
+{
+ u8 objectId;
+ struct ObjectEvent * object;
+ if (TryGetObjectEventIdByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
+ {
+ return TRUE;
+ }
+ object = &gObjectEvents[objectId];
+ if (!ObjectEventClearHeldMovementIfFinished(object))
+ {
+ return FALSE;
+ }
+ if (!ScriptContext2_IsEnabled())
+ {
+ UnfreezeObjectEvent(object);
+ }
+ else
+ {
+ FreezeObjectEvent(object);
+ }
+ return TRUE;
+}
+
+u8 ZeroUnionObjWork(struct UnionObj * ptr)
+{
+ s32 i;
+
+ sUnionObjRefreshTimer = 0;
+ UnionObjWork = ptr;
+ AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 442)
+ for (i = 0; i < 8; i++)
+ {
+ ptr[i].state = 0;
+ ptr[i].gfxId = 0;
+ ptr[i].animState = 0;
+ ptr[i].schedAnim = 0;
+ }
+ return StartUnionObjAnimTask();
+}
+
+static const u8 sMovement_UnionPlayerExit[2] = {
+ MOVEMENT_ACTION_FLY_UP,
+ MOVEMENT_ACTION_STEP_END
+};
+
+static bool32 AnimateUnionRoomPlayerDespawn(s8 * a0, u32 playerIdx, struct UnionObj * ptr)
+{
+ switch (*a0)
+ {
+ case 0:
+ if (SetUnionRoomPlayerEnterExitMovement(playerIdx, sMovement_UnionPlayerExit) == TRUE)
+ {
+ HideUnionRoomPlayer(playerIdx);
+ (*a0)++;
+ }
+ break;
+ case 1:
+ if (TryReleaseUnionRoomPlayerObjectEvent(playerIdx))
+ {
+ RemoveUnionRoomPlayerObjectEvent(playerIdx);
+ HideUnionRoomPlayer(playerIdx);
+ *a0 = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static const u8 sMovement_UnionPlayerEnter[2] = {
+ MOVEMENT_ACTION_FLY_DOWN,
+ MOVEMENT_ACTION_STEP_END
+};
+
+static bool32 AnimateUnionRoomPlayerSpawn(s8 * a0, u32 playerIdx, struct UnionObj * ptr)
+{
+ s16 x, y;
+
+ switch (*a0)
+ {
+ case 0:
+ if (!is_walking_or_running())
+ {
+ break;
+ }
+ PlayerGetDestCoords(&x, &y);
+ if (sub_811B58C(playerIdx, 0, x, y) == TRUE)
+ {
+ break;
+ }
+ player_get_pos_including_state_based_drift(&x, &y);
+ if (sub_811B58C(playerIdx, 0, x, y) == TRUE)
+ {
+ break;
+ }
+ SetUnionRoomPlayerGfx(playerIdx, ptr->gfxId);
+ CreateUnionRoomPlayerObjectEvent(playerIdx);
+ ShowUnionRoomPlayer(playerIdx);
+ (*a0)++;
+ // fallthrough
+ case 3: // incorrect?
+ if (SetUnionRoomPlayerEnterExitMovement(playerIdx, sMovement_UnionPlayerEnter) == 1)
+ {
+ (*a0)++;
+ }
+ break;
+ case 2:
+ if (TryReleaseUnionRoomPlayerObjectEvent(playerIdx))
+ {
+ *a0 = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static bool32 sub_811B8BC(u32 playerIdx, u32 a1, u32 a2)
+{
+ struct UnionObj * ptr = &UnionObjWork[playerIdx];
+ AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 561)
+ ptr->schedAnim = 1;
+ ptr->gfxId = GetUnionRoomPlayerGraphicsId(a1, a2);
+ if (ptr->state == 0)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static bool32 sub_811B90C(u32 playerIdx)
+{
+ struct UnionObj * ptr = &UnionObjWork[playerIdx];
+ AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 577)
+ ptr->schedAnim = 2;
+ if (ptr->state == 1)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void AnimateUnionObj(u32 playerIdx, struct UnionObj * ptr)
+{
+ switch (ptr->state)
+ {
+ case 0:
+ if (ptr->schedAnim == 1)
+ {
+ ptr->state = 2;
+ ptr->animState = 0;
+ }
+ else
+ {
+ break;
+ }
+ // fallthrough
+ case 2:
+ if (!sub_811BBC8(playerIdx, 0) && ptr->schedAnim == 2)
+ {
+ ptr->state = 0;
+ ptr->animState = 0;
+ RemoveUnionRoomPlayerObjectEvent(playerIdx);
+ HideUnionRoomPlayer(playerIdx);
+ }
+ else if (AnimateUnionRoomPlayerSpawn(&ptr->animState, playerIdx, ptr) == TRUE)
+ {
+ ptr->state = 1;
+ }
+ break;
+ case 1:
+ if (ptr->schedAnim == 2)
+ {
+ ptr->state = 3;
+ ptr->animState = 0;
+ }
+ else
+ {
+ break;
+ }
+ // fallthrough
+ case 3:
+ if (AnimateUnionRoomPlayerDespawn(&ptr->animState, playerIdx, ptr) == TRUE)
+ {
+ ptr->state = 0;
+ }
+ break;
+ }
+ ptr->schedAnim = 0;
+}
+
+static void Task_AnimateUnionObjs(u8 taskId)
+{
+ s32 i;
+ AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 643)
+ for (i = 0; i < 8; i++)
+ {
+ AnimateUnionObj(i, &UnionObjWork[i]);
+ }
+}
+
+static u8 StartUnionObjAnimTask(void)
+{
+ if (FuncIsActiveTask(Task_AnimateUnionObjs) == TRUE)
+ {
+ AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 655)
+ return NUM_TASKS;
+ }
+ else
+ {
+ return CreateTask(Task_AnimateUnionObjs, 5);
+ }
+}
+
+static void sub_811BA5C(void)
+{
+ u8 taskId = FindTaskIdByFunc(Task_AnimateUnionObjs);
+ if (taskId < NUM_TASKS)
+ {
+ DestroyTask(taskId);
+ }
+}
+
+void sub_811BA78(void)
+{
+ s32 i;
+ for (i = 0; i < 8; i++)
+ {
+ if (!IsUnionRoomPlayerHidden(i))
+ {
+ RemoveUnionRoomPlayerObjectEvent(i);
+ HideUnionRoomPlayer(i);
+ }
+ }
+ UnionObjWork = NULL;
+ sub_811BA5C();
+}
+
+void sub_811BAAC(u8 * sp8, s32 r9)
+{
+ s32 r7;
+
+ for (r7 = 0; r7 < 5; r7++)
+ {
+ s32 r5 = 5 * r9 + r7;
+ sp8[r5] = sprite_new(OBJECT_EVENT_GFX_MAN, r5 - 0x38, sUnionPartnerCoords[r9][0] + sFacingDirectionOffsets[r7][0], sUnionPartnerCoords[r9][1] + sFacingDirectionOffsets[r7][1], 3, 1);
+ sub_8069124(r5 - 0x38, TRUE);
+ }
+}
+
+void sub_811BB40(u8 * r5)
+{
+ s32 i;
+ for (i = 0; i < 40; i++)
+ {
+ DestroySprite(&gSprites[r5[i]]);
+ }
+}
+
+void sub_811BB68(void)
+{
+ s32 i, j, x, y;
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ GetUnionRoomPlayerFacingCoords(i, j, &x, &y);
+ sub_8059024(x, y, 0);
+ }
+ }
+}
+
+static u8 sub_811BBA0(u32 r1, u32 unused, struct GFtgtGname * r2)
+{
+ if (r1 != 0)
+ {
+ return gUnknown_845711B[r1];
+ }
+ else if (r2->unk_0a_0 == 0x45)
+ {
+ return 1;
+ }
+ else
+ {
+ return 4;
+ }
+}
+
+static u32 sub_811BBC8(u32 a0, u32 a1)
+{
+ return sub_806916C(5 * a0 + a1 - 0x38);
+}
+
+static void sub_811BBE0(u32 r5, u32 r6, u8 r8, struct GFtgtGname * r9)
+{
+ s32 x, y;
+ s32 r7 = 5 * r5 + r6;
+ if (sub_811BBC8(r5, r6) == 1)
+ {
+ sub_8069124(r7 - 0x38, FALSE);
+ sub_80691A4(r7 - 0x38, 1);
+ }
+ sub_8069094(r7 - 0x38, r8);
+ sub_811C008(r6, r5, sub_811BBA0(r6, r5, r9));
+ GetUnionRoomPlayerFacingCoords(r5, r6, &x, &y);
+ sub_8059024(x, y, 1);
+}
+
+static void sub_811BC68(u32 a0, u32 a1)
+{
+ s32 x, y;
+ sub_80691A4(5 * a0 + a1 - 0x38, 2);
+ GetUnionRoomPlayerFacingCoords(a0, a1, &x, &y);
+ sub_8059024(x, y, 0);
+}
+
+static void sub_811BCA0(u32 r7, struct GFtgtGname * r8)
+{
+ s16 x, y, x2, y2;
+ s32 i;
+
+ PlayerGetDestCoords(&x, &y);
+ player_get_pos_including_state_based_drift(&x2, &y2);
+ if (sub_806916C(5 * r7 - 0x38) == 1)
+ {
+ if (sub_811B58C(r7, 0, x, y) == TRUE || sub_811B58C(r7, 0, x2, y2) == TRUE)
+ {
+ return;
+ }
+ sub_811BBE0(r7, 0, GetUnionRoomPlayerGraphicsId(r8->playerGender, r8->unk_00.playerTrainerId[0]), r8);
+ }
+ for (i = 1; i < 5; i++)
+ {
+ if (r8->unk_04[i - 1] == 0)
+ {
+ sub_811BC68(r7, i);
+ }
+ else if (sub_811B58C(r7, i, x, y) == FALSE && sub_811B58C(r7, i, x2, y2) == FALSE)
+ {
+ sub_811BBE0(r7, i, GetUnionRoomPlayerGraphicsId((r8->unk_04[i - 1] >> 3) & 1, r8->unk_04[i - 1] & 7), r8);
+ }
+ }
+}
+
+static void sub_811BDA8(u32 r5, struct GFtgtGname * r4)
+{
+ u32 i;
+ switch (r4->unk_0a_0)
+ {
+ case 0x40:
+ case 0x54:
+ sub_811B8BC(r5, r4->playerGender, r4->unk_00.playerTrainerId[0]);
+ for (i = 0; i < 5; i++)
+ {
+ sub_811BC68(r5, i);
+ }
+ break;
+ case 0x41:
+ case 0x44:
+ case 0x45:
+ case 0x48:
+ case 0x51:
+ case 0x52:
+ case 0x53:
+ sub_811B90C(r5);
+ sub_811BCA0(r5, r4);
+ break;
+ default:
+ AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 979)
+ }
+}
+
+static void sub_811BE6C(u32 r5, struct GFtgtGname * unused)
+{
+ s32 i;
+ sub_811B90C(r5);
+ for (i = 0; i < 5; i++)
+ {
+ sub_811BC68(r5, i);
+ }
+}
+
+static void UpdateUnionRoomPlayerSprites(struct UnkStruct_URoom *r0)
+{
+ s32 i;
+ struct UnkStruct_x20 * r4;
+ sUnionObjRefreshTimer = 0;
+ for (i = 0, r4 = r0->field_0->arr; i < 8; i++)
+ {
+ if (r4[i].field_1A_0 == 1)
+ {
+ sub_811BDA8(i, &r4[i].unk.gname);
+ }
+ else if (r4[i].field_1A_0 == 2)
+ {
+ sub_811BE6C(i, &r4[i].unk.gname);
+ }
+ }
+}
+
+void sub_811BECC(struct UnkStruct_URoom *unused)
+{
+ sUnionObjRefreshTimer = 300;
+}
+
+void sub_811BEDC(struct UnkStruct_URoom *r2)
+{
+ if (++sUnionObjRefreshTimer > 300)
+ {
+ UpdateUnionRoomPlayerSprites(r2);
+ }
+}
+
+bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
+{
+ s16 x, y;
+ s32 i, j;
+ struct UnkStruct_x20 * r4;
+ if (!is_walking_or_running())
+ {
+ return FALSE;
+ }
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ for (i = 0, r4 = arg0->arr; i < 8; i++)
+ {
+ for (j = 0; j < 5; j++)
+ {
+ s32 r3 = 5 * i + j;
+ if (x != sUnionPartnerCoords[i][0] + sFacingDirectionOffsets[j][0] + 7)
+ {
+ continue;
+ }
+ if (y != sUnionPartnerCoords[i][1] + sFacingDirectionOffsets[j][1] + 7)
+ {
+ continue;
+ }
+ if (sub_806916C(r3 - 0x38) != 0)
+ {
+ continue;
+ }
+ if (sub_8069294(r3 - 0x38) != 0)
+ {
+ continue;
+ }
+ if (r4[i].field_1A_0 != 1)
+ {
+ continue;
+ }
+ sub_811C008(j, i, sOppositeFacingDirection[GetPlayerFacingDirection()]);
+ *arg1 = j;
+ *arg2 = i;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_811C008(s32 arg0, s32 arg1, u8 arg2)
+{
+ sub_8069058(5 * arg1 - 0x38 + arg0, arg2);
+}
+
+void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
+{
+ return sub_811C008(arg0, arg1, sub_811BBA0(arg0, arg1, &arg2->arr[arg1].unk.gname));
+}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 51e7d2c35..c2c422a0a 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -630,7 +630,7 @@ static bool8 IsPaletteNotActive(void)
bool8 ScrCmd_fadescreen(struct ScriptContext *ctx)
{
- fade_screen(ScriptReadByte(ctx), 0);
+ FadeScreen(ScriptReadByte(ctx), 0);
SetupNativeScript(ctx, IsPaletteNotActive);
return TRUE;
}
@@ -640,7 +640,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx)
u8 mode = ScriptReadByte(ctx);
u8 speed = ScriptReadByte(ctx);
- fade_screen(mode, speed);
+ FadeScreen(mode, speed);
SetupNativeScript(ctx, IsPaletteNotActive);
return TRUE;
}
@@ -1064,7 +1064,7 @@ bool8 ScrCmd_addobject(struct ScriptContext *ctx)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
- show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ TrySpawnObjectEvent(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
@@ -1074,7 +1074,7 @@ bool8 ScrCmd_addobject_at(struct ScriptContext *ctx)
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
- show_sprite(objectId, mapNum, mapGroup);
+ TrySpawnObjectEvent(objectId, mapNum, mapGroup);
return FALSE;
}
diff --git a/src/shop.c b/src/shop.c
index 865688928..97061f8c0 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -294,14 +294,14 @@ static void Task_ShopMenu(u8 taskId)
static void Task_HandleShopMenuBuy(u8 taskId)
{
SetWordTaskArg(taskId, 0xE, (u32)CB2_InitBuyMenu);
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = Task_GoToBuyOrSellMenu;
}
static void Task_HandleShopMenuSell(u8 taskId)
{
SetWordTaskArg(taskId, 0xE, (u32)CB2_GoToSellMenu);
- fade_screen(1, 0);
+ FadeScreen(1, 0);
gTasks[taskId].func = Task_GoToBuyOrSellMenu;
}
diff --git a/src/start_menu.c b/src/start_menu.c
index 59bfb8643..b159f0375 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -446,7 +446,7 @@ static void StartMenu_FadeScreenIfLeavingOverworld(void)
&& sStartMenuCallback != StartMenuSafariZoneRetireCallback)
{
StopPokemonLeagueLightingEffectTask();
- fade_screen(1, 0);
+ FadeScreen(1, 0);
}
}
@@ -554,7 +554,7 @@ static bool8 StartMenuLinkPlayerCallback(void)
{
PlayRainStoppingSoundEffect();
CleanupOverworldWindowsAndTilemaps();
- ShowTrainerCardInLink(gUnknown_300502C, CB2_ReturnToFieldWithOpenMenu);
+ ShowTrainerCardInLink(gLocalLinkPlayerId, CB2_ReturnToFieldWithOpenMenu);
return TRUE;
}
return FALSE;
diff --git a/src/union_room.c b/src/union_room.c
new file mode 100644
index 000000000..4e3428cc6
--- /dev/null
+++ b/src/union_room.c
@@ -0,0 +1,4607 @@
+#include "global.h"
+#include "gflib.h"
+#include "battle.h"
+#include "berry_crush.h"
+#include "cable_club.h"
+#include "data.h"
+#include "decompress.h"
+#include "dodrio_berry_picking.h"
+#include "dynamic_placeholder_text_util.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "event_object_lock.h"
+#include "field_control_avatar.h"
+#include "field_fadetransition.h"
+#include "field_player_avatar.h"
+#include "field_weather.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "list_menu.h"
+#include "load_save.h"
+#include "menu.h"
+#include "mevent.h"
+#include "mystery_gift_menu.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "party_menu.h"
+#include "pokemon_jump.h"
+#include "quest_log.h"
+#include "random.h"
+#include "save_location.h"
+#include "script.h"
+#include "script_pokemon_util.h"
+#include "start_menu.h"
+#include "strings.h"
+#include "task.h"
+#include "trade.h"
+#include "trade_scene.h"
+#include "trainer_card.h"
+#include "union_room.h"
+#include "union_room_chat.h"
+#include "rfu_union_tool.h"
+#include "union_room_message.h"
+#include "constants/songs.h"
+#include "constants/maps.h"
+#include "constants/cable_club.h"
+#include "constants/field_weather.h"
+#include "constants/species.h"
+
+static EWRAM_DATA u8 sUnionRoomPlayerName[12] = {};
+static EWRAM_DATA u8 gUnknown_203B058 = 0;
+static EWRAM_DATA u8 gUnknown_203B059 = 0;
+static EWRAM_DATA union UnkUnion_Main sUnionRoomMain = {};
+static EWRAM_DATA u32 sUnref_203B060 = 0;
+EWRAM_DATA struct GFtgtGnameSub gUnknown_203B064 = {};
+EWRAM_DATA u16 gUnionRoomOfferedSpecies = SPECIES_NONE;
+EWRAM_DATA u8 gUnionRoomRequestedMonType = TYPE_NORMAL;
+static EWRAM_DATA struct UnionRoomTrade sUnionRoomTrade = {};
+
+static struct UnkStruct_Leader * sLeader;
+static struct UnkStruct_Group * sGroup;
+static struct UnkStruct_URoom * sURoom;
+
+static void sub_8115A68(u8 taskId);
+static void sub_81161E4(struct UnkStruct_Leader * leader);
+static bool8 sub_8116444(struct UnkStruct_Leader * leader, u32 a1, u32 a2);
+static void sub_81164C8(u8 windowId, s32 itemId, u8 y);
+static u8 sub_8116524(struct UnkStruct_Main0 * a0);
+static u8 sub_81165E8(struct UnkStruct_Main0 * a0);
+static void sub_8116738(u8 taskId);
+static u32 sub_8116D10(struct UnkStruct_Group * group, s32 id);
+static void sub_8116D60(struct UnkStruct_Group * group, s32 id);
+static void sub_8116E1C(u8 taskId);
+static void sub_8116F94(u8 windowId, s32 itemId, u8 y);
+static u8 sub_8116FE4(void);
+static void sub_8117990(void);
+static void sub_81179A4(void);
+static void sub_8117A0C(u8 taskId);
+static void sub_8117F20(u8 taskId);
+static void sub_81182DC(u8 taskId);
+static void sub_81186E0(u8 taskId);
+static u16 ReadAsU16(const u8 *data);
+static void sub_8119904(struct UnkStruct_URoom * uRoom);
+static bool32 sub_8119944(struct UnkStruct_URoom * uRoom);
+static void sub_81199FC(u8 taskId);
+static u8 sub_8119B94(void);
+static u8 sub_8119E84(struct UnkStruct_Main4 * arg0, struct UnkStruct_Main4 * arg1, u32 arg2);
+static bool32 sub_8119FB0(struct GFtgtGname * arg0, s16 arg1);
+static u8 sub_811A054(struct UnkStruct_Main4 * arg0, u32 arg1);
+static u8 sub_811A084(struct UnkStruct_Main4 * arg0, u32 arg1);
+static bool32 sub_811A0B4(const u8 * str);
+static bool32 sub_811A0E0(void);
+static bool8 PrintOnTextbox(u8 *textState, const u8 *str);
+static s8 sub_811A14C(u8 *dest, bool32 arg1);
+static s32 sub_811A218(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate);
+static s32 sub_811A2EC(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate, struct UnkStruct_Main0 * arg6);
+static void sub_811A3F8(void);
+static void sub_811A41C(void);
+static void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
+static void sub_811A5E4(struct UnkStruct_x20 * arg0, u8 count);
+static void sub_811A650(struct UnkStruct_x1C * arg0, u8 count);
+static bool8 sub_811A694(struct UnkStruct_Shared * arg0, const struct UnkStruct_Shared * arg1);
+static bool32 sub_811A6DC(struct UnkStruct_Shared * arg0, struct UnkStruct_Shared * arg1);
+static u32 sub_811A748(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1);
+static u8 sub_811A798(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1, u8 arg2);
+static void sub_811A81C(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * arg3, u8 arg4, u8 id);
+static void sub_811A910(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 * arg3, u8 arg4, u8 id);
+static bool32 sub_811A9B8(void);
+static u32 sub_811A9FC(s32 a0);
+static u32 sub_811AA24(struct UnkStruct_x20 * unkX20);
+static s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender);
+static void nullsub_92(u8 windowId, s32 itemId, u8 y);
+static void sub_811ACA4(u8 windowId, s32 itemId, u8 y);
+static s32 sub_811AD7C(struct UnkStruct_x20 * arg, s32 arg1);
+static s32 GetUnionRoomPlayerGender(s32 a0, struct UnkStruct_Main0 * a1);
+static s32 sub_811ADD0(u32 type, u32 species);
+static void sub_811AE68(u8 *dst, s32 arg1, u32 playerGender);
+static void sub_811AECC(u8 *dst, u8 arg1);
+static s32 sub_811AF6C(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom * arg3);
+static bool32 sub_811B0A4(struct UnkStruct_URoom * arg0);
+static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void);
+static void ResetUnionRoomTrade(struct UnionRoomTrade * trade);
+static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade * trade);
+static void RegisterTradeMon(u32 monId, struct UnionRoomTrade * trade);
+static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 mpId);
+static void sub_811B258(bool32 a0);
+static void sub_811B298(void);
+static u8 sub_811B2A8(s32 a0);
+static u8 sub_811B2D8(struct UnkStruct_URoom * arg0);
+static void sub_811B31C(u8 *dest, struct UnkStruct_URoom * uRoom, bool8 gender);
+
+#define _8456CD8(a, b) ((a) | ((b) << 8))
+
+static const u8 *const gUnknown_8456C74[] = {
+ gUnknown_84571AC,
+ gUnknown_8459394,
+ gUnknown_84593A4,
+ gUnknown_84593B4,
+ gUnknown_84593C4,
+ gUnknown_84593D4,
+ gUnknown_84593E4,
+ gUnknown_84593F4,
+ gUnknown_84593DC,
+ gUnknown_8459400,
+ gUnknown_8459410,
+ gUnknown_845941C,
+ gUnknown_845942C,
+ gUnknown_8459434,
+ gUnknown_8459440,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84571AC,
+ gUnknown_84593E4,
+ gUnknown_84593F4
+};
+
+static const struct WindowTemplate gUnknown_8456CD0 = {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 30,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x008
+};
+
+static const u32 gUnknown_8456CD8[] = {
+ _8456CD8( 1, 2),
+ _8456CD8( 2, 2),
+ _8456CD8( 3, 4),
+ _8456CD8( 4, 2),
+ _8456CD8( 9, 37),
+ _8456CD8(10, 37),
+ _8456CD8(11, 53),
+ _8456CD8(13, 53),
+ _8456CD8(14, 53)
+};
+
+static const struct WindowTemplate gUnknown_8456CFC = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 13,
+ .height = 10,
+ .paletteNum = 15,
+ .baseBlock = 0x044
+};
+
+static const struct WindowTemplate gUnknown_8456D04 = {
+ .bg = 0,
+ .tilemapLeft = 16,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x0C6
+};
+
+const struct ListMenuItem gUnknown_8456D0C[] = {
+ {gUnknown_84571AC, 0},
+ {gUnknown_84571AC, 1},
+ {gUnknown_84571AC, 2},
+ {gUnknown_84571AC, 3},
+ {gUnknown_84571AC, 4}
+};
+
+static const struct ListMenuTemplate gUnknown_8456D34 = {
+ .items = gUnknown_8456D0C,
+ .moveCursorFunc = NULL,
+ .itemPrintFunc = sub_81164C8,
+ .totalItems = 5,
+ .maxShowed = 5,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 1,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 2,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 1
+};
+
+static const struct WindowTemplate gUnknown_8456D4C = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 17,
+ .height = 10,
+ .paletteNum = 15,
+ .baseBlock = 0x044
+};
+
+static const struct WindowTemplate gUnknown_8456D54 = {
+ .bg = 0,
+ .tilemapLeft = 20,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x0EE
+};
+
+static const struct ListMenuItem gUnknown_8456D5C[] = {
+ {gUnknown_84571AC, 0},
+ {gUnknown_84571AC, 1},
+ {gUnknown_84571AC, 2},
+ {gUnknown_84571AC, 3},
+ {gUnknown_84571AC, 4},
+ {gUnknown_84571AC, 5},
+ {gUnknown_84571AC, 6},
+ {gUnknown_84571AC, 7},
+ {gUnknown_84571AC, 8},
+ {gUnknown_84571AC, 9},
+ {gUnknown_84571AC, 10},
+ {gUnknown_84571AC, 11},
+ {gUnknown_84571AC, 12},
+ {gUnknown_84571AC, 13},
+ {gUnknown_84571AC, 14},
+ {gUnknown_84571AC, 15}
+};
+
+static const struct ListMenuTemplate gUnknown_8456DDC = {
+ .items = gUnknown_8456D5C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = sub_8116F94,
+ .totalItems = 16,
+ .maxShowed = 5,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 0,
+ .itemVerticalPadding = 2,
+ .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456DF4 = {
+ .bg = 0,
+ .tilemapLeft = 20,
+ .tilemapTop = 6,
+ .width = 8,
+ .height = 7,
+ .paletteNum = 15,
+ .baseBlock = 0x001
+};
+
+static const struct ListMenuItem gUnknown_8456DFC[] = {
+ {gUnknown_8459354, _8456CD8( 8, 2)},
+ {gUnknown_8459344, _8456CD8(65, 2)},
+ {gUnknown_845934C, _8456CD8(69, 2)},
+ {gUnknown_8459360, _8456CD8(64, 0)}
+};
+
+static const struct ListMenuTemplate gUnknown_8456E1C = {
+ .items = gUnknown_8456DFC,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 4,
+ .maxShowed = 4,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456E34 = {
+ .bg = 0,
+ .tilemapLeft = 18,
+ .tilemapTop = 8,
+ .width = 11,
+ .height = 5,
+ .paletteNum = 15,
+ .baseBlock = 0x001
+};
+
+static const struct ListMenuItem gUnknown_8456E3C[] = {
+ {gText_Register, 1},
+ {gUnknown_8459370, 2},
+ {gUnknown_8459360, 3}
+};
+
+static const struct ListMenuTemplate gUnknown_8456E54 = {
+ .items = gUnknown_8456E3C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = 3,
+ .maxShowed = 3,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456E6C = {
+ .bg = 0,
+ .tilemapLeft = 20,
+ .tilemapTop = 2,
+ .width = 9,
+ .height = 11,
+ .paletteNum = 15,
+ .baseBlock = 0x001
+};
+
+static const struct ListMenuItem gUnknown_8456E74[] = {
+ {gTypeNames[TYPE_NORMAL], TYPE_NORMAL},
+ {gTypeNames[TYPE_FIRE], TYPE_FIRE},
+ {gTypeNames[TYPE_WATER], TYPE_WATER},
+ {gTypeNames[TYPE_ELECTRIC], TYPE_ELECTRIC},
+ {gTypeNames[TYPE_GRASS], TYPE_GRASS},
+ {gTypeNames[TYPE_ICE], TYPE_ICE},
+ {gTypeNames[TYPE_GROUND], TYPE_GROUND},
+ {gTypeNames[TYPE_ROCK], TYPE_ROCK},
+ {gTypeNames[TYPE_FLYING], TYPE_FLYING},
+ {gTypeNames[TYPE_PSYCHIC], TYPE_PSYCHIC},
+ {gTypeNames[TYPE_FIGHTING], TYPE_FIGHTING},
+ {gTypeNames[TYPE_POISON], TYPE_POISON},
+ {gTypeNames[TYPE_BUG], TYPE_BUG},
+ {gTypeNames[TYPE_GHOST], TYPE_GHOST},
+ {gTypeNames[TYPE_DRAGON], TYPE_DRAGON},
+ {gTypeNames[TYPE_STEEL], TYPE_STEEL},
+ {gTypeNames[TYPE_DARK], TYPE_DARK},
+ {gUnknown_8459360, NUMBER_OF_MON_TYPES}
+};
+
+static const struct ListMenuTemplate gUnknown_8456F04 = {
+ .items = gUnknown_8456E74,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = NULL,
+ .totalItems = NUMBER_OF_MON_TYPES,
+ .maxShowed = 6,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 0,
+ .upText_Y = 2,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456F1C = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 28,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x001
+};
+
+static const struct WindowTemplate gUnknown_8456F24 = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 28,
+ .height = 10,
+ .paletteNum = 13,
+ .baseBlock = 0x039
+};
+
+static const struct ListMenuItem gUnknown_8456F2C[] = {
+ {gUnknown_84571AC, -3},
+ {gUnknown_84571AC, 0},
+ {gUnknown_84571AC, 1},
+ {gUnknown_84571AC, 2},
+ {gUnknown_84571AC, 3},
+ {gUnknown_84571AC, 4},
+ {gUnknown_84571AC, 5},
+ {gUnknown_84571AC, 6},
+ {gUnknown_84571AC, 7},
+ {gUnknown_8459368, 8}
+};
+
+static const struct ListMenuTemplate gUnknown_8456F7C = {
+ .items = gUnknown_8456F2C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = sub_811ACA4,
+ .totalItems = 10,
+ .maxShowed = 5,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 12,
+ .cursor_X = 0,
+ .upText_Y = 2,
+ .cursorPal = 14,
+ .fillValue = 15,
+ .cursorShadowPal = 13,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 1,
+ .scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct WindowTemplate gUnknown_8456F94 = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 5,
+ .width = 28,
+ .height = 10,
+ .paletteNum = 13,
+ .baseBlock = 0x039
+};
+
+static const struct ListMenuItem gUnknown_8456F9C[] = {
+ {gUnknown_84571AC, 0},
+ {gUnknown_84571AC, 1},
+ {gUnknown_84571AC, 2},
+ {gUnknown_84571AC, 3},
+ {gUnknown_84571AC, 4},
+ {gUnknown_84571AC, 5},
+ {gUnknown_84571AC, 6},
+ {gUnknown_84571AC, 7},
+ {gUnknown_84571AC, 8},
+ {gUnknown_84571AC, 9},
+ {gUnknown_84571AC, 10},
+ {gUnknown_84571AC, 11},
+ {gUnknown_84571AC, 12},
+ {gUnknown_84571AC, 13},
+ {gUnknown_84571AC, 14},
+ {gUnknown_84571AC, 15}
+};
+
+static const struct ListMenuTemplate gUnknown_845701C = {
+ .items = gUnknown_8456F9C,
+ .moveCursorFunc = ListMenuDefaultCursorMoveFunc,
+ .itemPrintFunc = nullsub_92,
+ .totalItems = 16,
+ .maxShowed = 4,
+ .windowId = 0,
+ .header_X = 0,
+ .item_X = 8,
+ .cursor_X = 1,
+ .upText_Y = 0,
+ .cursorPal = 2,
+ .fillValue = 1,
+ .cursorShadowPal = 3,
+ .lettersSpacing = 1,
+ .itemVerticalPadding = 0,
+ .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
+ .fontId = 2,
+ .cursorKind = 0
+};
+
+static const struct UnkStruct_Shared gUnknown_8457034 = {};
+
+// starts at gUnknown_082F0474 in pokeemerald, union link groups
+
+ALIGNED(4) static const u8 gUnknown_845704C[] = {0x01, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457050[] = {0x02, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457054[] = {0x03, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457058[] = {0x04, 0xFF};
+ALIGNED(4) static const u8 gUnknown_845705C[] = {0x09, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457060[] = {0x0A, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457064[] = {0x0B, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457068[] = {0x15, 0xFF};
+ALIGNED(4) static const u8 gUnknown_845706C[] = {0x16, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457070[] = {0x40, 0x41, 0x44, 0x45, 0x48, 0x51, 0x52, 0x53, 0x54, 0xFF};
+ALIGNED(4) static const u8 gUnknown_845707C[] = {0x0C, 0xFF};
+ALIGNED(4) static const u8 gUnknown_8457080[] = {0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0x0D, 0xFF};
+ALIGNED(4) static const u8 gUnknown_845708C[] = {0x01, 0x02, 0x03, 0x04, 0x0A, 0xFF};
+
+static const u8 *const gUnknown_8457094[] = {
+ gUnknown_845704C,
+ gUnknown_8457050,
+ gUnknown_8457054,
+ gUnknown_8457058,
+ gUnknown_845705C,
+ gUnknown_8457060,
+ gUnknown_8457064,
+ gUnknown_8457068,
+ gUnknown_845706C,
+ gUnknown_8457070,
+ gUnknown_845707C,
+ gUnknown_8457080,
+ gUnknown_845708C
+};
+
+static const u8 gUnknown_84570C8[] = {0x01, 0x02, 0x03, 0x04, 0x09, 0x0A, 0x0B, 0x15, 0x16, 0xF7, 0x00, 0xAF, 0xF7, 0x01, 0xFF, 0x00};
+
+#undef _8456CD8
+
+// These are functions in Emerald but inlined in FireRed
+
+#define IntlConvPartnerUname7(dest, arg1) ({ \
+ StringCopy7(dest, (arg1).unk.playerName); \
+ ConvertInternationalString(dest, (arg1).unk.gname.unk_00.unk_00_0); \
+})
+
+#define IntlConvPartnerUname(dest, arg1) ({ \
+ StringCopy(dest, (arg1).unk.playerName); \
+ ConvertInternationalString(dest, (arg1).unk.gname.unk_00.unk_00_0); \
+})
+
+#define CopyTrainerCardData(dest, src, _version) ({ \
+ (dest) = *((struct TrainerCard * )(src)); \
+ (dest).version = _version; \
+})
+
+#define GetStringRightAlignXOffset(_fontId, _string, _maxWidth) ({ \
+ u16 strWidth = GetStringWidth(_fontId, _string, 0); \
+ _maxWidth - strWidth; \
+})
+
+static void sub_811586C(u8 windowId, u8 arg1, u8 stringId)
+{
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ switch (arg1 << 8)
+ {
+ case 0x200:
+ sub_811A444(windowId, 2, gUnknown_845742C[0][stringId - 1], 0, 2, 0);
+ break;
+ case 0x400:
+ sub_811A444(windowId, 2, gUnknown_845742C[1][stringId - 1], 0, 2, 0);
+ break;
+ case 0x2500:
+ sub_811A444(windowId, 2, gUnknown_845742C[2][stringId - 1], 0, 2, 0);
+ break;
+ case 0x3500:
+ sub_811A444(windowId, 2, gUnknown_845742C[3][stringId - 1], 0, 2, 0);
+ break;
+ }
+
+ CopyWindowToVram(windowId, 2);
+}
+
+static void sub_8115924(u8 windowId)
+{
+ u8 text[12];
+ u8 text2[12];
+
+ sub_811A444(windowId, 2, gSaveBlock2Ptr->playerName, 0, 2, 0);
+ StringCopy(text2, gUnknown_84571B4);
+ ConvertIntToDecimalStringN(text, ReadAsU16(gSaveBlock2Ptr->playerTrainerId), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringAppend(text2, text);
+ sub_811A444(windowId, 0, text2, 0, 0x10, 0);
+}
+
+static void sub_811599C(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1 ... 4:
+ case 9 ... 11:
+ case 21 ... 22:
+ // UB: argument *dst isn't used, instead it always prints to gStringVar4
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457234);
+ break;
+ }
+}
+
+void TryBecomeLinkLeader(void)
+{
+ u8 taskId;
+ struct UnkStruct_Leader * dataPtr;
+
+ taskId = CreateTask(sub_8115A68, 0);
+ sUnionRoomMain.leader = dataPtr = (void*)(gTasks[taskId].data);
+ sLeader = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_8115A68(u8 taskId)
+{
+ u32 id, val;
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+
+ switch (data->state)
+ {
+ case 0:
+ gUnknown_203B058 = gUnknown_8456CD8[gSpecialVar_0x8004];
+ gUnknown_203B059 = gUnknown_8456CD8[gSpecialVar_0x8004] >> 8;
+ SetHostRFUtgtGname(gUnknown_203B058, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBB8C(gUnknown_203B059 & 0xF);
+ data->state = 3;
+ break;
+ case 3:
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
+ data->field_8 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 5);
+ LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].unk.gname, data->field_0->arr[0].unk.playerName);
+ data->field_0->arr[0].field_18 = 0;
+ data->field_0->arr[0].field_1A_0 = 1;
+ data->field_0->arr[0].field_1A_1 = 0;
+ data->field_0->arr[0].field_1B = 0;
+ data->field_17 = sub_811A054(data->field_4, 0xFF);
+ data->field_10 = AddWindow(&gUnknown_8456CD0);
+ data->listWindowId = AddWindow(&gUnknown_8456CFC);
+ data->field_11 = AddWindow(&gUnknown_8456D04);
+
+ FillWindowPixelBuffer(data->field_10, PIXEL_FILL(2));
+ sub_811A444(data->field_10, 0, gUnknown_845747C, 8, 2, 4);
+ PutWindowTilemap(data->field_10);
+ CopyWindowToVram(data->field_10, 2);
+
+ DrawStdWindowFrame(data->listWindowId, FALSE);
+ gMultiuseListMenuTemplate = gUnknown_8456D34;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ DrawStdWindowFrame(data->field_11, FALSE);
+ PutWindowTilemap(data->field_11);
+ CopyWindowToVram(data->field_11, 2);
+
+ CopyBgTilemapBufferToVram(0);
+ data->field_13 = 1;
+ data->state = 4;
+ break;
+ case 4:
+ StringCopy(gStringVar1, gUnknown_8456C74[gUnknown_203B058]);
+ if ((gUnknown_203B059 >> 4) != 0)
+ {
+ if (data->field_13 > (gUnknown_203B059 >> 4) - 1 && (gUnknown_203B059 & 0xF) != 0)
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457264);
+ else
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457234);
+ }
+ else
+ {
+ sub_811599C(gStringVar4, gUnknown_203B058);
+ }
+
+ sub_811586C(data->field_11, gUnknown_203B059, data->field_13);
+ data->state = 5;
+ break;
+ case 5:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ data->state = 6;
+ break;
+ case 6:
+ sub_8116444(data, 7, 10);
+ if (JOY_NEW(B_BUTTON))
+ {
+ if (data->field_13 == 1)
+ data->state = 23;
+ else if ((gUnknown_203B059 & 0xF0) != 0)
+ data->state = 30;
+ else
+ data->state = 19;
+ }
+ if ((gUnknown_203B059 >> 4) != 0
+ && data->field_13 > (gUnknown_203B059 >> 4) - 1
+ && (gUnknown_203B059 & 0xF) != 0
+ && sub_80FC1CC()
+ && JOY_NEW(START_BUTTON))
+ {
+ data->state = 15;
+ sub_80F8F5C();
+ }
+ if (data->state == 6 && sub_80FA5D4())
+ {
+ data->state = 9;
+ }
+ break;
+ case 9:
+ if (!sub_80FA5D4())
+ {
+ data->state = 6;
+ data->field_13 = sub_81165E8(data->field_0);
+ }
+ break;
+ case 10:
+ id = ((gUnknown_203B058 & 0xF) == 2) ? 1 : 0;
+ if (PrintOnTextbox(&data->textState, gUnknown_845767C[id]))
+ {
+ data->field_13 = sub_81165E8(data->field_0);
+ RedrawListMenu(data->listTaskId);
+ data->state = 4;
+ }
+ break;
+ case 29:
+ id = ((gUnknown_203B059 & 0xF) == 2) ? 0 : 1;
+ if (PrintOnTextbox(&data->textState, gUnknown_845767C[id]))
+ {
+ data->state = 21;
+ }
+ break;
+ case 7:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ data->state = 11;
+ }
+ break;
+ case 11:
+ switch (sub_811A14C(&data->textState, sub_80FA634(ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName)))
+ {
+ case 0:
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ data->field_19 = 5;
+ sub_80FA670(5, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ data->state = 12;
+ break;
+ case 1:
+ case -1:
+ data->field_19 = 6;
+ sub_80FA670(6, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ data->state = 12;
+ break;
+ case -3:
+ data->state = 9;
+ break;
+ }
+ break;
+ case 12:
+ val = sub_80FA6FC(ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ if (val == 1)
+ {
+ if (data->field_19 == 5)
+ {
+ data->field_0->arr[data->field_13].field_1B = 0;
+ RedrawListMenu(data->listTaskId);
+ data->field_13++;
+ if (data->field_13 == (gUnknown_203B059 & 0xF))
+ {
+ if ((gUnknown_203B059 & 0xF0) != 0 || data->field_13 == 4)
+ {
+ data->state = 15;
+ }
+ else
+ {
+ IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_13 - 1]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457554);
+ data->state = 13;
+ }
+
+ sub_80F8F5C();
+ sub_811586C(data->field_11, gUnknown_203B059, data->field_13);
+ }
+ else
+ {
+ data->state = 4;
+ }
+ }
+ else
+ {
+ sub_80FBD4C(data->field_0->arr[data->field_13].unk.playerName, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId));
+ data->field_0->arr[data->field_13].field_1A_0 = 0;
+ sub_81165E8(data->field_0);
+ RedrawListMenu(data->listTaskId);
+ data->state = 4;
+ }
+
+ data->field_19 = 0;
+ }
+ else if (val == 2)
+ {
+ sub_80FB9E4(0, 0);
+ data->state = 4;
+ }
+ break;
+ case 13:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ data->state = 14;
+ break;
+ case 14:
+ if (++data->field_E > 120)
+ data->state = 17;
+ break;
+ case 15:
+ if (PrintOnTextbox(&data->textState, gUnknown_8457514))
+ data->state = 16;
+ break;
+ case 16:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->state = 17;
+ break;
+ case 1:
+ case -1:
+ if ((gUnknown_203B059 & 0xF0) != 0)
+ data->state = 30;
+ else
+ data->state = 19;
+ break;
+ }
+ break;
+ case 19:
+ if (PrintOnTextbox(&data->textState, gUnknown_8457530))
+ data->state = 20;
+ break;
+ case 20:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->state = 23;
+ break;
+ case 1:
+ case -1:
+ if ((gUnknown_203B059 & 0xF0) != 0)
+ data->state = 15;
+ else if (data->field_13 == (gUnknown_203B059 & 0xF))
+ data->state = 15;
+ else
+ data->state = 4;
+ break;
+ }
+ break;
+ case 17:
+ if (!sub_8116444(data, 7, 23))
+ data->state = 18;
+ break;
+ case 18:
+ if (sub_80F8F40())
+ {
+ if (sub_80F8F7C(FALSE))
+ {
+ data->state = 26;
+ }
+ }
+ else
+ {
+ data->state = 29;
+ data->textState = 0;
+ }
+ break;
+ case 30:
+ if (PrintOnTextbox(&data->textState, gUnknown_8457610))
+ data->state = 23;
+ break;
+ case 21:
+ case 23:
+ DestroyWirelessStatusIndicatorSprite();
+ sub_80F8DC0();
+ sub_81161E4(data);
+ data->state++;
+ break;
+ case 24:
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ gSpecialVar_Result = 5;
+ break;
+ case 22:
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ gSpecialVar_Result = 8;
+ break;
+ case 26:
+ if (sub_80FBA00())
+ {
+ data->state = 29;
+ }
+ else
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_80FAFE0(1);
+ sub_8117990();
+ sub_81161E4(data);
+ DestroyTask(taskId);
+ }
+ }
+ break;
+ }
+}
+
+static void sub_81161E4(struct UnkStruct_Leader * data)
+{
+ ClearWindowTilemap(data->field_11);
+ ClearStdWindowAndFrame(data->field_11, FALSE);
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ ClearWindowTilemap(data->field_10);
+ ClearStdWindowAndFrame(data->listWindowId, FALSE);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->field_11);
+ RemoveWindow(data->listWindowId);
+ RemoveWindow(data->field_10);
+ DestroyTask(data->field_17);
+
+ Free(data->field_8);
+ Free(data->field_0);
+ Free(data->field_4);
+}
+
+static void sub_8116244(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1:
+ case 2:
+ case 4:
+ StringExpandPlaceholders(dst, gUnknown_84574A0);
+ break;
+ case 21:
+ case 22:
+ StringExpandPlaceholders(dst, gUnknown_84574C4);
+ break;
+ case 3:
+ case 9:
+ case 10:
+ case 11:
+ StringExpandPlaceholders(dst, gUnknown_84574EC);
+ break;
+ }
+}
+
+static void sub_81162E0(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 65:
+ case 68:
+ StringExpandPlaceholders(dst, gUnknown_8457E28);
+ break;
+ case 69:
+ case 72:
+ StringExpandPlaceholders(dst, gUnknown_8457E44);
+ break;
+ }
+}
+
+static void sub_811631C(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1:
+ case 2:
+ case 4:
+ case 21:
+ case 22:
+ StringExpandPlaceholders(dst, gUnknown_8459238);
+ break;
+ case 3:
+ case 9:
+ case 10:
+ case 11:
+ StringExpandPlaceholders(dst, gUnknown_8459250);
+ break;
+ }
+}
+
+static void sub_81163B0(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1:
+ case 2:
+ case 4:
+ case 21:
+ case 22:
+ StringExpandPlaceholders(dst, gUnknown_84576AC);
+ break;
+ case 3:
+ case 9:
+ case 10:
+ case 11:
+ StringExpandPlaceholders(dst, gUnknown_84576C4);
+ break;
+ }
+}
+
+static bool8 sub_8116444(struct UnkStruct_Leader * data, u32 arg1, u32 arg2)
+{
+ switch (sub_8116524(data->field_0))
+ {
+ case 1:
+ PlaySE(SE_PC_LOGIN);
+ RedrawListMenu(data->listTaskId);
+ IntlConvPartnerUname7(gStringVar2, data->field_0->arr[data->field_13]);
+ sub_8116244(gStringVar4, gUnknown_203B058);
+ data->state = arg1;
+ break;
+ case 2:
+ sub_80FB9E4(0, 0);
+ RedrawListMenu(data->listTaskId);
+ data->state = arg2;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_81164C8(u8 windowId, s32 itemId, u8 y)
+{
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+ u8 var = 0;
+
+ switch (data->field_0->arr[itemId].field_1A_0)
+ {
+ case 1:
+ if (data->field_0->arr[itemId].field_1B != 0)
+ var = 2;
+ break;
+ case 2:
+ var = 1;
+ break;
+ }
+
+ sub_811A910(windowId, 0, y, &data->field_0->arr[itemId], var, itemId);
+}
+
+static u8 sub_8116524(struct UnkStruct_Main0 * arg0)
+{
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+ u8 ret = 0;
+ u8 i;
+ s32 id;
+
+ for (i = 1; i < 5; i++)
+ {
+ u16 var = data->field_0->arr[i].field_1A_0;
+ if (var == 1)
+ {
+ id = sub_811A748(&data->field_0->arr[i], data->field_4->arr);
+ if (id != 0xFF)
+ {
+ data->field_0->arr[i].unk = data->field_4->arr[id].unk0;
+ data->field_0->arr[i].field_18 = var;
+ }
+ else
+ {
+ data->field_0->arr[i].field_1A_0 = 2;
+ ret = 2;
+ }
+ }
+ }
+
+ for (id = 0; id < 4; id++)
+ sub_811A798(data->field_0->arr, &data->field_4->arr[id], 5);
+
+ if (ret != 2)
+ {
+ for (id = 0; id < 5; id++)
+ {
+ if (data->field_0->arr[id].field_1B != 0)
+ ret = 1;
+ }
+ }
+
+ return ret;
+}
+
+static u8 sub_81165E8(struct UnkStruct_Main0 * arg0)
+{
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+ u8 copiedCount;
+ s32 i;
+ u8 ret;
+
+ for (i = 0; i < 5; i++)
+ data->field_8->arr[i] = data->field_0->arr[i];
+
+ copiedCount = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (data->field_8->arr[i].field_1A_0 == 1)
+ {
+ data->field_0->arr[copiedCount] = data->field_8->arr[i];
+ copiedCount++;
+ }
+ }
+
+ ret = copiedCount;
+ for (; copiedCount < 5; copiedCount++)
+ {
+ data->field_0->arr[copiedCount].unk = gUnknown_8457034;
+ data->field_0->arr[copiedCount].field_18 = 0;
+ data->field_0->arr[copiedCount].field_1A_0 = 0;
+ data->field_0->arr[copiedCount].field_1A_1 = 0;
+ data->field_0->arr[copiedCount].field_1B = 0;
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ if (data->field_0->arr[i].field_1A_0 != 1)
+ continue;
+ if (data->field_0->arr[i].field_1B != 0x40)
+ continue;
+
+ ret = i;
+ break;
+ }
+
+ return ret;
+}
+
+void TryJoinLinkGroup(void)
+{
+ u8 taskId;
+ struct UnkStruct_Group * dataPtr;
+
+ taskId = CreateTask(sub_8116738, 0);
+ sUnionRoomMain.group = dataPtr = (void*)(gTasks[taskId].data);
+ sGroup = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_8116738(u8 taskId)
+{
+ s32 id;
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+
+ switch (data->state)
+ {
+ case 0:
+ SetHostRFUtgtGname(gUnknown_84570C8[gSpecialVar_0x8004], 0, 0);
+ gUnknown_203B058 = gUnknown_84570C8[gSpecialVar_0x8004];
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
+ data->state = 1;
+ break;
+ case 1:
+ if (PrintOnTextbox(&data->textState, gUnknown_84591B8[gSpecialVar_0x8004]))
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 16);
+ data->field_11 = sub_811A054(data->field_4, gSpecialVar_0x8004);
+ data->field_C = AddWindow(&gUnknown_8456CD0);
+ data->listWindowId = AddWindow(&gUnknown_8456D4C);
+ data->field_D = AddWindow(&gUnknown_8456D54);
+
+ FillWindowPixelBuffer(data->field_C, PIXEL_FILL(2));
+ sub_811A444(data->field_C, 0, gUnknown_8458FC8, 8, 2, 4);
+ PutWindowTilemap(data->field_C);
+ CopyWindowToVram(data->field_C, 2);
+
+ DrawStdWindowFrame(data->listWindowId, FALSE);
+ gMultiuseListMenuTemplate = gUnknown_8456DDC;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ DrawStdWindowFrame(data->field_D, FALSE);
+ PutWindowTilemap(data->field_D);
+ sub_8115924(data->field_D);
+ CopyWindowToVram(data->field_D, 2);
+
+ CopyBgTilemapBufferToVram(0);
+ data->field_F = 0;
+ data->state = 3;
+ break;
+ case 3:
+ id = sub_8116FE4();
+ switch (id)
+ {
+ case 1:
+ PlaySE(SE_PC_LOGIN);
+ RedrawListMenu(data->listTaskId);
+ break;
+ case 0:
+ id = ListMenu_ProcessInput(data->listTaskId);
+ if (JOY_NEW(A_BUTTON) && id != -1)
+ {
+ // this unused variable along with the assignment is needed to match
+ u32 unusedVar;
+ unusedVar = data->field_0->arr[id].unk.gname.unk_0a_0;
+
+ if (data->field_0->arr[id].field_1A_0 == 1 && !data->field_0->arr[id].unk.gname.unk_0a_7)
+ {
+ u32 var = sub_8116D10(data, id);
+ if (var == 0)
+ {
+ sub_8116D60(data, id);
+ data->state = 5;
+ PlaySE(SE_PN_ON);
+ }
+ else
+ {
+ StringCopy(gStringVar4, gUnknown_8457608[var - 1]);
+ data->state = 18;
+ PlaySE(SE_PN_ON);
+ }
+ }
+ else
+ {
+ PlaySE(SE_WALL_HIT);
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ data->state = 10;
+ }
+ break;
+ default:
+ RedrawListMenu(data->listTaskId);
+ break;
+ }
+ break;
+ case 5:
+ sub_811631C(gStringVar4, gUnknown_203B058);
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_F]);
+ data->state = 6;
+ }
+ break;
+ case 6:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ gUnknown_203B058 = data->field_0->arr[data->field_F].unk.gname.unk_0a_0;
+ sub_80FB9E4(0, 0);
+ switch (gUnknown_203B058)
+ {
+ case 1 ... 5:
+ case 9 ... 11:
+ case 13 ... 14:
+ case 21 ... 22:
+ data->state = 20;
+ break;
+ }
+ }
+
+ switch (sub_80FB9F4())
+ {
+ case 1:
+ data->state = 12;
+ break;
+ case 2:
+ case 6:
+ case 9:
+ data->state = 14;
+ break;
+ case 5:
+ sub_81163B0(gStringVar4, gUnknown_203B058);
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ sub_80FB9E4(7, 0);
+ StringCopy(gStringVar1, gUnknown_8456C74[gUnknown_203B058]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457700);
+ }
+ break;
+ case 7:
+ if (data->field_15 > 0xF0)
+ {
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ sub_80FB9E4(12, 0);
+ data->field_15 = 0;
+ }
+ }
+ else
+ {
+ data->field_15++;
+ }
+ break;
+ }
+
+ if (!sub_80FB9F4() && JOY_NEW(B_BUTTON))
+ data->state = 7;
+ break;
+ case 7:
+ if (PrintOnTextbox(&data->textState, gUnknown_845771C))
+ data->state = 8;
+ break;
+ case 8:
+ switch (sub_811A14C(&data->textState, sub_80FB9F4()))
+ {
+ case 0:
+ sub_80FA6BC();
+ data->state = 9;
+ RedrawListMenu(data->listTaskId);
+ break;
+ case 1:
+ case -1:
+ data->state = 5;
+ RedrawListMenu(data->listTaskId);
+ break;
+ case -3:
+ data->state = 6;
+ RedrawListMenu(data->listTaskId);
+ break;
+ }
+ break;
+ case 9:
+ if (sub_80FB9F4())
+ data->state = 6;
+ break;
+ case 10:
+ case 12:
+ case 14:
+ case 18:
+ case 20:
+ ClearWindowTilemap(data->field_D);
+ ClearStdWindowAndFrame(data->field_D, FALSE);
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ ClearWindowTilemap(data->field_C);
+ ClearStdWindowAndFrame(data->listWindowId, FALSE);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->field_D);
+ RemoveWindow(data->listWindowId);
+ RemoveWindow(data->field_C);
+ DestroyTask(data->field_11);
+ Free(data->field_0);
+ Free(data->field_4);
+ data->state++;
+ break;
+ case 13:
+ DestroyWirelessStatusIndicatorSprite();
+ if (PrintOnTextbox(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
+ {
+ gSpecialVar_Result = 6;
+ data->state = 23;
+ }
+ break;
+ case 11:
+ DestroyWirelessStatusIndicatorSprite();
+ gSpecialVar_Result = 5;
+ data->state = 23;
+ break;
+ case 15:
+ DestroyWirelessStatusIndicatorSprite();
+ if (PrintOnTextbox(&data->textState, gUnknown_8457754[sub_80FB9F4()]))
+ {
+ gSpecialVar_Result = 8;
+ data->state = 23;
+ }
+ break;
+ case 19:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ gSpecialVar_Result = 8;
+ data->state = 23;
+ }
+ break;
+ case 23:
+ DestroyTask(taskId);
+ sub_811A41C();
+ sub_80F8DC0();
+ break;
+ case 21:
+ sub_8117990();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static u32 sub_8116D10(struct UnkStruct_Group * arg0, s32 id)
+{
+ struct UnkStruct_x20 * structPtr = &arg0->field_0->arr[id];
+
+ if (gUnknown_203B058 == 4 && structPtr->unk.gname.unk_00.unk_01_2 != VERSION_FIRE_RED && structPtr->unk.gname.unk_00.unk_01_2 != VERSION_LEAF_GREEN)
+ {
+ if (!(gSaveBlock2Ptr->specialSaveWarpFlags & CHAMPION_SAVEWARP))
+ return 1;
+ else if (structPtr->unk.gname.unk_00.isChampion)
+ return 0;
+ }
+ else
+ {
+ return 0;
+ }
+
+ return 2;
+}
+
+static void sub_8116D60(struct UnkStruct_Group * data, s32 id)
+{
+ data->field_F = id;
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ RedrawListMenu(data->listTaskId);
+ IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_F]);
+ sub_80FB008(gUnknown_84570C8[gSpecialVar_0x8004], 0, 1);
+ sub_80FBF54(data->field_0->arr[data->field_F].unk.playerName, ReadAsU16(data->field_0->arr[data->field_F].unk.gname.unk_00.playerTrainerId));
+}
+
+u8 sub_8116DE0(void)
+{
+ u8 taskId;
+ struct UnkStruct_Group * dataPtr;
+
+ taskId = CreateTask(sub_8116E1C, 0);
+ sUnionRoomMain.group = dataPtr = (void*)(gTasks[taskId].data);
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+
+ sGroup = dataPtr;
+
+ return taskId;
+}
+
+static void sub_8116E1C(u8 taskId)
+{
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+
+ switch (data->state)
+ {
+ case 0:
+ SetHostRFUtgtGname(0, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ sub_80FB128(TRUE);
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 16);
+ data->field_11 = sub_811A054(data->field_4, 0xFF);
+ data->field_F = 0;
+ data->state = 3;
+ break;
+ case 3:
+ if (sub_8116FE4() == 1)
+ PlaySE(SE_PC_LOGIN);
+ if (gTasks[taskId].data[15] == 0xFF)
+ data->state = 10;
+ break;
+ case 10:
+ DestroyTask(data->field_11);
+ Free(data->field_0);
+ Free(data->field_4);
+ sub_80F8DC0();
+ data->state++;
+ break;
+ case 11:
+ sub_80F8DC0();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static bool32 sub_8116F28(u32 arg0, u32 id)
+{
+ if (id == 0xFF)
+ return TRUE;
+
+ if (id <= NELEMS(gUnknown_8457094)) // UB: <= may access data outside the array
+ {
+ const u8 *bytes = gUnknown_8457094[id];
+
+ while ((*(bytes) != 0xFF))
+ {
+ if ((*bytes) == arg0)
+ return TRUE;
+ bytes++;
+ }
+ }
+
+ return FALSE;
+}
+
+static u8 sub_8116F5C(struct UnkStruct_Group * data, u32 id)
+{
+ if (data->field_0->arr[id].field_1A_0 == 1)
+ {
+ if (data->field_0->arr[id].unk.gname.unk_0a_7)
+ return 3;
+ else if (data->field_0->arr[id].field_1A_1 != 0)
+ return 1;
+ else if (data->field_0->arr[id].field_1B != 0)
+ return 2;
+ }
+
+ return 0;
+}
+
+static void sub_8116F94(u8 windowId, s32 itemId, u8 y)
+{
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+ u8 var = sub_8116F5C(data, itemId);
+
+ sub_811A81C(windowId, 8, y, &data->field_0->arr[itemId], var, itemId);
+}
+
+static u8 sub_8116FE4(void)
+{
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+ u8 ret = 0;
+ u8 i;
+ s32 id;
+
+ for (i = 0; i < 16; i++)
+ {
+ if (data->field_0->arr[i].field_1A_0 != 0)
+ {
+ id = sub_811A748(&data->field_0->arr[i], data->field_4->arr);
+ if (id != 0xFF)
+ {
+ if (data->field_0->arr[i].field_1A_0 == 1)
+ {
+ if (sub_811A6DC(&data->field_0->arr[i].unk, &data->field_4->arr[id].unk0))
+ {
+ data->field_0->arr[i].unk = data->field_4->arr[id].unk0;
+ data->field_0->arr[i].field_1B = 0x40;
+ ret = 1;
+ }
+ else
+ {
+ if (data->field_0->arr[i].field_1B != 0)
+ {
+ data->field_0->arr[i].field_1B--;
+ if (data->field_0->arr[i].field_1B == 0)
+ ret = 2;
+ }
+ }
+ }
+ else
+ {
+ data->field_0->arr[i].field_1A_0 = 1;
+ data->field_0->arr[i].field_1B = 0x40;
+ ret = 1;
+ }
+
+ data->field_0->arr[i].field_18 = 0;
+ }
+ else
+ {
+ if (data->field_0->arr[i].field_1A_0 != 2)
+ {
+ data->field_0->arr[i].field_18++;
+ if (data->field_0->arr[i].field_18 >= 300)
+ {
+ data->field_0->arr[i].field_1A_0 = 2;
+ ret = 2;
+ }
+ }
+ }
+ }
+ }
+
+ for (id = 0; id < 4; id++)
+ {
+ if (sub_811A798(data->field_0->arr, &data->field_4->arr[id], 16) != 0xFF)
+ ret = 1;
+ }
+
+ return ret;
+}
+
+static void sub_8117100(u8 taskId)
+{
+ CB2_ReturnFromLinkTrade();
+ DestroyTask(taskId);
+}
+
+u8 sub_8117118(void)
+{
+ u8 taskId = CreateTask(sub_8117100, 0);
+
+ return taskId;
+}
+
+static void sub_8117130(u8 taskId)
+{
+ u32 monId = GetPartyPositionOfRegisteredMon(&sUnionRoomTrade, GetMultiplayerId());
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ gTasks[taskId].data[0]++;
+ SendBlock(0, &gPlayerParty[monId], sizeof(struct Pokemon));
+ break;
+ case 1:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ gEnemyParty[0] = *(struct Pokemon*)(gBlockRecvBuffer[GetMultiplayerId() ^ 1]);
+ IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES);
+ ResetBlockReceivedFlags();
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, sizeof(struct MailStruct) * PARTY_SIZE + 4);
+ if (SendBlock(0, gBlockSendBuffer, sizeof(struct MailStruct) * PARTY_SIZE + 4))
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ memcpy(gLinkPartnerMail, gBlockRecvBuffer[GetMultiplayerId() ^ 1], sizeof(struct MailStruct) * PARTY_SIZE);
+ ResetBlockReceivedFlags();
+ gSelectedTradeMonPositions[TRADE_PLAYER] = monId;
+ gSelectedTradeMonPositions[TRADE_PARTNER] = PARTY_SIZE;
+ gMain.savedCallback = CB2_ReturnToField;
+ SetMainCallback2(CB2_InitTradeAnim_LinkTrade);
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_8117280(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (GetMultiplayerId() == 0)
+ sub_800A474(2);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (GetBlockReceivedStatus() == sub_800A8D4())
+ {
+ s32 i;
+ u16 *recvBuff;
+
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ recvBuff = gBlockRecvBuffer[i];
+ CopyTrainerCardData(gTrainerCards[i], recvBuff, gLinkPlayers[i].version);
+ }
+
+ if (GetLinkPlayerCount() == 2)
+ {
+ recvBuff = gBlockRecvBuffer[GetMultiplayerId() ^ 1];
+ sub_81446D0(recvBuff[48]);
+ }
+ else
+ {
+ sub_81446C4();
+ }
+
+ ResetBlockReceivedFlags();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_8117354(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ CreateTask(sub_8117280, 5);
+ gMain.state++;
+ break;
+ case 1:
+ if (!FuncIsActiveTask(sub_8117280))
+ ShowTrainerCardInLink(GetMultiplayerId() ^ 1, CB2_ReturnToField);
+ break;
+ }
+
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+void sub_81173C0(u16 battleFlags)
+{
+ HealPlayerParty();
+ SavePlayerParty();
+ LoadPlayerBag();
+ gLinkPlayers[0].linkType = LINKTYPE_BATTLE;
+ gLinkPlayers[GetMultiplayerId()].id = GetMultiplayerId();
+ gLinkPlayers[GetMultiplayerId() ^ 1].id = GetMultiplayerId() ^ 1;
+ gMain.savedCallback = sub_8081668;
+ gBattleTypeFlags = battleFlags;
+ PlayBattleBGM();
+}
+
+static void sub_8117440(u16 linkService, u16 x, u16 y)
+{
+ VarSet(VAR_CABLE_CLUB_STATE, linkService);
+ SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
+ SetDynamicWarpWithCoords(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y);
+ WarpIntoMap();
+}
+
+static void sub_81174B4(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 linkService)
+{
+ gSpecialVar_0x8004 = linkService;
+ VarSet(VAR_CABLE_CLUB_STATE, linkService);
+ gFieldLinkPlayerCount = GetLinkPlayerCount();
+ gLocalLinkPlayerId = GetMultiplayerId();
+ SetCableClubWarp();
+ SetWarpDestination(mapGroup, mapNum, -1, x, y);
+ WarpIntoMap();
+}
+
+static void sub_8117534(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ CreateTask(sub_8117280, 5);
+ gMain.state++;
+ break;
+ case 1:
+ if (!FuncIsActiveTask(sub_8117280))
+ SetMainCallback2(sub_8056788);
+ break;
+ }
+
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+static void sub_8117594(void *arg0, bool32 arg1)
+{
+ TrainerCard_GenerateCardForLinkPlayer((struct TrainerCard * )arg0);
+ if (arg1)
+ *((u16 *)(arg0 + sizeof(struct TrainerCard))) = GetWonderCardFlagId();
+ else
+ *((u16 *)(arg0 + sizeof(struct TrainerCard))) = 0;
+}
+
+static void sub_81175BC(u8 taskId)
+{
+ sub_81446C4();
+ switch (gUnknown_203B058)
+ {
+ case 1 ... 4:
+ case 9 ... 11:
+ case 13:
+ case 14:
+ RecordMixTrainerNames();
+ break;
+ }
+
+ switch (gUnknown_203B058)
+ {
+ case 65:
+ case 81:
+ CleanupOverworldWindowsAndTilemaps();
+ gMain.savedCallback = sub_811C1C8;
+ InitChooseHalfPartyForBattle(2);
+ break;
+ case 1:
+ CleanupOverworldWindowsAndTilemaps();
+ sub_8117594(gBlockSendBuffer, TRUE);
+ HealPlayerParty();
+ SavePlayerParty();
+ LoadPlayerBag();
+ sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_SINGLE_BATTLE);
+ SetMainCallback2(sub_8117534);
+ break;
+ case 2:
+ CleanupOverworldWindowsAndTilemaps();
+ HealPlayerParty();
+ SavePlayerParty();
+ LoadPlayerBag();
+ sub_8117594(gBlockSendBuffer, TRUE);
+ sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_2P), MAP_NUM(BATTLE_COLOSSEUM_2P), 6, 8, USING_DOUBLE_BATTLE);
+ SetMainCallback2(sub_8117534);
+ break;
+ case 3:
+ CleanupOverworldWindowsAndTilemaps();
+ HealPlayerParty();
+ SavePlayerParty();
+ LoadPlayerBag();
+ sub_8117594(gBlockSendBuffer, TRUE);
+ sub_81174B4(MAP_GROUP(BATTLE_COLOSSEUM_4P), MAP_NUM(BATTLE_COLOSSEUM_4P), 5, 8, USING_MULTI_BATTLE);
+ SetMainCallback2(sub_8117534);
+ break;
+ case 4:
+ sub_8117594(gBlockSendBuffer, TRUE);
+ CleanupOverworldWindowsAndTilemaps();
+ sub_81174B4(MAP_GROUP(TRADE_CENTER), MAP_NUM(TRADE_CENTER), 5, 8, USING_TRADE_CENTER);
+ SetMainCallback2(sub_8117534);
+ break;
+ case 68:
+ CreateTask(sub_8117130, 0);
+ break;
+ case 5:
+ case 69:
+ if (GetMultiplayerId() == 0)
+ {
+ sub_80F8CFC();
+ }
+ else
+ {
+ sub_80F8D14();
+ SetHostRFUtgtGname(69, 0, 1);
+ }
+ sub_8128420();
+ break;
+ case 8:
+ case 72:
+ sub_8117594(gBlockSendBuffer, FALSE);
+ SetMainCallback2(sub_8117354);
+ break;
+ case 9:
+ sub_8117440(USING_MINIGAME, 5, 1);
+ sub_8147AA8(GetCursorSelectionMonId(), CB2_LoadMap);
+ break;
+ case 10:
+ sub_8117440(USING_BERRY_CRUSH, 9, 1);
+ sub_814B754(CB2_LoadMap);
+ break;
+ case 11:
+ sub_8117440(USING_MINIGAME, 5, 1);
+ sub_81507FC(GetCursorSelectionMonId(), CB2_LoadMap);
+ break;
+ }
+
+ DestroyTask(taskId);
+ gSpecialVar_Result = 1;
+ ScriptContext2_Disable();
+}
+
+static void sub_8117900(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 *sendBuff = (u16*)(gBlockSendBuffer);
+
+ switch (data[0])
+ {
+ case 0:
+ gSpecialVar_Result = 1;
+ EnableBothScriptContexts();
+ data[0]++;
+ break;
+ case 1:
+ if (!ScriptContext1_IsScriptSetUp())
+ {
+ FadeScreen(FADE_TO_BLACK, 0);
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ sub_800AB9C();
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (IsLinkTaskFinished())
+ {
+ DestroyTask(taskId);
+ sub_81179A4();
+ }
+ break;
+ }
+}
+
+static void sub_8117990(void)
+{
+ CreateTask(sub_8117900, 0);
+}
+
+static void sub_81179A4(void)
+{
+ u8 taskId = CreateTask(sub_81175BC, 0);
+ gTasks[taskId].data[0] = 0;
+}
+
+void MEvent_CreateTask_Leader(u32 arg0)
+{
+ u8 taskId;
+ struct UnkStruct_Leader * dataPtr;
+
+ taskId = CreateTask(sub_8117A0C, 0);
+ sUnionRoomMain.leader = dataPtr = (void*)(gTasks[taskId].data);
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ dataPtr->field_18 = arg0;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_8117A0C(u8 taskId)
+{
+ struct UnkStruct_Leader * data = sUnionRoomMain.leader;
+ struct WindowTemplate winTemplate;
+ s32 val;
+
+ switch (data->state)
+ {
+ case 0:
+ gUnknown_203B058 = data->field_18;
+ gUnknown_203B059 = 2;
+ SetHostRFUtgtGname(data->field_18, 0, 0);
+ sub_80FAF74(FALSE, FALSE);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBB8C(2);
+ data->state = 1;
+ break;
+ case 1:
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
+ data->field_8 = AllocZeroed(5 * sizeof(struct UnkStruct_x20));
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 5);
+ LinkRfu3_SetGnameUnameFromStaticBuffers(&data->field_0->arr[0].unk.gname, data->field_0->arr[0].unk.playerName);
+ data->field_0->arr[0].field_18 = 0;
+ data->field_0->arr[0].field_1A_0 = 1;
+ data->field_0->arr[0].field_1A_1 = 0;
+ data->field_0->arr[0].field_1B = 0;
+ data->field_17 = sub_811A054(data->field_4, 0xFF);
+
+ winTemplate = gUnknown_8456CFC;
+ winTemplate.baseBlock = GetMysteryGiftBaseBlock();
+ data->listWindowId = AddWindow(&winTemplate);
+ MG_DrawTextBorder(data->listWindowId);
+ gMultiuseListMenuTemplate = gUnknown_8456D34;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ CopyBgTilemapBufferToVram(0);
+ data->field_13 = 1;
+ data->state = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar1, gUnknown_8456C74[gUnknown_203B058]);
+ sub_811599C(gStringVar4, gUnknown_203B058);
+ data->state = 3;
+ break;
+ case 3:
+ AddTextPrinterToWindow1(gStringVar4);
+ data->state = 4;
+ break;
+ case 4:
+ sub_8116444(data, 5, 6);
+ if (JOY_NEW(B_BUTTON))
+ {
+ data->state = 13;
+ DestroyWirelessStatusIndicatorSprite();
+ }
+ break;
+ case 6:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84577F8))
+ {
+ data->field_13 = sub_81165E8(data->field_0);
+ RedrawListMenu(data->listTaskId);
+ data->state = 2;
+ }
+ break;
+ case 5:
+ data->state = 7;
+ break;
+ case 7:
+ switch (mevent_message_print_and_prompt_yes_no(&data->textState, (u16 *)&data->field_14, FALSE, gStringVar4))
+ {
+ case 0:
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ data->field_0->arr[data->field_13].field_1B = 0;
+ RedrawListMenu(data->listTaskId);
+ data->field_19 = 5;
+ sub_80FA670(5, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ data->state = 8;
+ break;
+ case 1:
+ case -1:
+ data->field_19 = 6;
+ sub_80FA670(6, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ data->state = 8;
+ break;
+ }
+ break;
+ case 8:
+ val = sub_80FA6FC(ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId), data->field_0->arr[data->field_13].unk.playerName);
+ if (val == 1)
+ {
+ if (data->field_19 == 5)
+ {
+ data->field_0->arr[data->field_13].field_1B = 0;
+ RedrawListMenu(data->listTaskId);
+ data->field_13++;
+ IntlConvPartnerUname7(gStringVar1, data->field_0->arr[data->field_13 - 1]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457554);
+ data->state = 9;
+ sub_80F8F5C();
+ }
+ else
+ {
+ sub_80FBD4C(data->field_0->arr[data->field_13].unk.playerName, ReadAsU16(data->field_0->arr[data->field_13].unk.gname.unk_00.playerTrainerId));
+ data->field_0->arr[data->field_13].field_1A_0 = 0;
+ sub_81165E8(data->field_0);
+ RedrawListMenu(data->listTaskId);
+ data->state = 2;
+ }
+
+ data->field_19 = 0;
+ }
+ else if (val == 2)
+ {
+ sub_80FB9E4(0, 0);
+ data->state = 2;
+ }
+ break;
+ case 9:
+ AddTextPrinterToWindow1(gStringVar4);
+ data->state = 10;
+ break;
+ case 10:
+ if (++data->field_E > 120)
+ data->state = 11;
+ break;
+ case 11:
+ if (!sub_8116444(data, 5, 6))
+ data->state = 12;
+ break;
+ case 12:
+ if (sub_80F8F40())
+ {
+ sub_80F8F7C(FALSE);
+ data->state = 15;
+ }
+ else
+ {
+ data->state = 6;
+ }
+ break;
+ case 13:
+ DestroyWirelessStatusIndicatorSprite();
+ sub_80F8DC0();
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->listWindowId);
+ DestroyTask(data->field_17);
+ Free(data->field_8);
+ Free(data->field_0);
+ Free(data->field_4);
+ data->state++;
+ break;
+ case 14:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84571B8))
+ {
+ DestroyTask(taskId);
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 15:
+ if (sub_80FB9F4() == 1 || sub_80FB9F4() == 2)
+ {
+ data->state = 13;
+ }
+ else if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_80FAFE0(1);
+ data->state++;
+ }
+ break;
+ case 16:
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->listWindowId);
+ DestroyTask(data->field_17);
+ Free(data->field_8);
+ Free(data->field_0);
+ Free(data->field_4);
+ sub_800AB9C();
+ data->state++;
+ break;
+ case 17:
+ if (IsLinkTaskFinished())
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0)
+{
+ u8 taskId;
+ struct UnkStruct_Group * dataPtr;
+
+ taskId = CreateTask(sub_8117F20, 0);
+ sUnionRoomMain.group = dataPtr = (void*)(gTasks[taskId].data);
+ sGroup = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ dataPtr->field_12 = arg0 - 21;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_8117F20(u8 taskId)
+{
+ s32 id;
+ struct WindowTemplate winTemplate1, winTemplate2;
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+
+ switch (data->state)
+ {
+ case 0:
+ SetHostRFUtgtGname(data->field_12 + 21, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
+ data->state = 1;
+ break;
+ case 1:
+ AddTextPrinterToWindow1(gUnknown_8458FE4);
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 16);
+ data->field_11 = sub_811A054(data->field_4, data->field_12 + 7);
+
+ winTemplate1 = gUnknown_8456D4C;
+ winTemplate1.baseBlock = GetMysteryGiftBaseBlock();
+ data->listWindowId = AddWindow(&winTemplate1);
+
+ data->field_D = AddWindow(&gUnknown_8456D54);
+
+ MG_DrawTextBorder(data->listWindowId);
+ gMultiuseListMenuTemplate = gUnknown_8456DDC;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ MG_DrawTextBorder(data->field_D);
+ FillWindowPixelBuffer(data->field_D, PIXEL_FILL(1));
+ PutWindowTilemap(data->field_D);
+ sub_8115924(data->field_D);
+ CopyWindowToVram(data->field_D, 2);
+
+ CopyBgTilemapBufferToVram(0);
+ data->field_F = 0;
+ data->state = 3;
+ break;
+ case 3:
+ id = sub_8116FE4();
+ switch (id)
+ {
+ case 1:
+ PlaySE(SE_PC_LOGIN);
+ default:
+ RedrawListMenu(data->listTaskId);
+ break;
+ case 0:
+ id = ListMenu_ProcessInput(data->listTaskId);
+ if (JOY_NEW(A_BUTTON) && id != -1)
+ {
+ // this unused variable along with the assignment is needed to match
+ u32 unusedVar;
+ unusedVar = data->field_0->arr[id].unk.gname.unk_0a_0;
+
+ if (data->field_0->arr[id].field_1A_0 == 1 && !data->field_0->arr[id].unk.gname.unk_0a_7)
+ {
+ data->field_F = id;
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ RedrawListMenu(data->listTaskId);
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]);
+ sub_80FBF54(data->field_0->arr[data->field_F].unk.playerName, ReadAsU16(data->field_0->arr[data->field_F].unk.gname.unk_00.playerTrainerId));
+ PlaySE(SE_PN_ON);
+ data->state = 4;
+ }
+ else
+ {
+ PlaySE(SE_WALL_HIT);
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ data->state = 6;
+ }
+ break;
+ }
+ break;
+ case 4:
+ AddTextPrinterToWindow1(gUnknown_8459238);
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]);
+ data->state = 5;
+ break;
+ case 5:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ gUnknown_203B058 = data->field_0->arr[data->field_F].unk.gname.unk_0a_0;
+ data->state = 10;
+ }
+
+ switch (sub_80FB9F4())
+ {
+ case 1:
+ case 2:
+ case 6:
+ data->state = 8;
+ break;
+ case 5:
+ AddTextPrinterToWindow1(gUnknown_84576AC);
+ sub_80FB9E4(0, 0);
+ break;
+ }
+ break;
+ case 6:
+ case 8:
+ case 10:
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->field_D);
+ RemoveWindow(data->listWindowId);
+ DestroyTask(data->field_11);
+ Free(data->field_0);
+ Free(data->field_4);
+ data->state++;
+ break;
+ case 9:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_8457838[sub_80FB9F4()]))
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 7:
+ DestroyWirelessStatusIndicatorSprite();
+ AddTextPrinterToWindow1(gUnknown_84571B8);
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ break;
+ case 11:
+ data->state++;
+ sub_800AB9C();
+ break;
+ case 12:
+ if (IsLinkTaskFinished())
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0)
+{
+ u8 taskId;
+ struct UnkStruct_Group * dataPtr;
+
+ taskId = CreateTask(sub_81182DC, 0);
+ sUnionRoomMain.group = dataPtr = (void*)(gTasks[taskId].data);
+ sGroup = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ dataPtr->field_12 = arg0 - 21;
+ gSpecialVar_Result = 0;
+}
+
+static void sub_81182DC(u8 taskId)
+{
+ s32 id;
+ struct WindowTemplate winTemplate;
+ struct UnkStruct_Group * data = sUnionRoomMain.group;
+
+ switch (data->state)
+ {
+ case 0:
+ SetHostRFUtgtGname(0, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBBD8();
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(16 * sizeof(struct UnkStruct_x20));
+ data->state = 1;
+ break;
+ case 1:
+ AddTextPrinterToWindow1(gUnknown_84591DC);
+ data->state = 2;
+ break;
+ case 2:
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A5E4(data->field_0->arr, 16);
+ data->field_11 = sub_811A084(data->field_4, data->field_12 + 7);
+
+ if (data->field_13 != 0)
+ {
+ winTemplate = gUnknown_8456D4C;
+ winTemplate.baseBlock = GetMysteryGiftBaseBlock();
+ data->listWindowId = AddWindow(&winTemplate);
+
+ MG_DrawTextBorder(data->listWindowId);
+ gMultiuseListMenuTemplate = gUnknown_8456DDC;
+ gMultiuseListMenuTemplate.windowId = data->listWindowId;
+ data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+
+ CopyBgTilemapBufferToVram(0);
+ }
+
+ data->field_F = 0;
+ data->state = 3;
+ break;
+ case 3:
+ id = sub_8116FE4();
+ switch (id)
+ {
+ case 1:
+ PlaySE(SE_PC_LOGIN);
+ default:
+ if (data->field_13 != 0)
+ RedrawListMenu(data->listTaskId);
+ break;
+ case 0:
+ if (data->field_13 != 0)
+ id = ListMenu_ProcessInput(data->listTaskId);
+ if (data->field_14 > 120)
+ {
+ if (data->field_0->arr[0].field_1A_0 == 1 && !data->field_0->arr[0].unk.gname.unk_0a_7)
+ {
+ if (sub_8119FB0(&data->field_0->arr[0].unk.gname, data->field_12 + 7))
+ {
+ data->field_F = 0;
+ data->field_14 = 0;
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ sub_80FBF54(data->field_0->arr[0].unk.playerName, ReadAsU16(data->field_0->arr[0].unk.gname.unk_00.playerTrainerId));
+ PlaySE(SE_PN_ON);
+ data->state = 4;
+ }
+ else
+ {
+ PlaySE(SE_BOO);
+ data->state = 10;
+ }
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ data->state = 6;
+ data->field_14 = 0;
+ }
+ data->field_14++;
+ break;
+ }
+ break;
+ case 4:
+ AddTextPrinterToWindow1(gUnknown_845928C);
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[data->field_F]);
+ data->state = 5;
+ break;
+ case 5:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ gUnknown_203B058 = data->field_0->arr[data->field_F].unk.gname.unk_0a_0;
+ data->state = 12;
+ }
+
+ switch (sub_80FB9F4())
+ {
+ case 1:
+ case 2:
+ case 6:
+ data->state = 8;
+ break;
+ case 5:
+ AddTextPrinterToWindow1(gUnknown_845777C);
+ sub_80FB9E4(0, 0);
+ break;
+ }
+ break;
+ case 6:
+ case 8:
+ case 10:
+ case 12:
+ if (data->field_13 != 0)
+ {
+ DestroyListMenuTask(data->listTaskId, 0, 0);
+ CopyBgTilemapBufferToVram(0);
+ RemoveWindow(data->listWindowId);
+ }
+ DestroyTask(data->field_11);
+ Free(data->field_0);
+ Free(data->field_4);
+ data->state++;
+ break;
+ case 9:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84577BC))
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 7:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_84571E0))
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 11:
+ if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_845933C[data->field_12]))
+ {
+ DestroyWirelessStatusIndicatorSprite();
+ DestroyTask(taskId);
+ sub_80F8DC0();
+ gSpecialVar_Result = 5;
+ }
+ break;
+ case 13:
+ data->state++;
+ sub_800AB9C();
+ break;
+ case 14:
+ if (IsLinkTaskFinished())
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void UnionRoomSpecial(void)
+{
+ struct UnkStruct_URoom * dataPtr;
+
+ ClearAndInitHostRFUtgtGname();
+ CreateTask(sub_81186E0, 10);
+
+ // dumb line needed to match
+ sUnionRoomMain.uRoom = sUnionRoomMain.uRoom;
+
+ dataPtr = AllocZeroed(sizeof(*sUnionRoomMain.uRoom));
+ sUnionRoomMain.uRoom = dataPtr;
+ sURoom = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ dataPtr->field_10 = 0;
+ dataPtr->field_12 = 0;
+
+ gSpecialVar_Result = 0;
+ sub_8107D38(0xD0, 1);
+}
+
+static u16 ReadAsU16(const u8 *ptr)
+{
+ return (ptr[1] << 8) | (ptr[0]);
+}
+
+static void sub_8118664(u32 nextState, const u8 *src)
+{
+ struct UnkStruct_URoom * data = sUnionRoomMain.uRoom;
+
+ data->state = 8;
+ data->stateAfterPrint = nextState;
+ if (src != gStringVar4)
+ StringExpandPlaceholders(gStringVar4, src);
+}
+
+static void sub_811868C(const u8 *src)
+{
+ struct UnkStruct_URoom * data = sUnionRoomMain.uRoom;
+
+ data->state = 26;
+ if (src != gStringVar4)
+ StringExpandPlaceholders(gStringVar4, src);
+}
+
+static void sub_81186B0(struct UnkStruct_URoom * data)
+{
+ memcpy(&gDecompressionBuffer[0x3F00], data->field_0, 8 * sizeof(struct UnkStruct_x20));
+}
+
+static void sub_81186C8(struct UnkStruct_URoom * data)
+{
+ memcpy(data->field_0, &gDecompressionBuffer[0x3F00], 8 * sizeof(struct UnkStruct_x20));
+}
+
+static void sub_81186E0(u8 taskId)
+{
+ u32 id = 0;
+ s32 var5 = 0;
+ s32 playerGender = MALE;
+ struct UnkStruct_URoom * data = sUnionRoomMain.uRoom;
+ s16 *taskData = gTasks[taskId].data;
+
+ switch (data->state)
+ {
+ case 0:
+ data->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_C = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ data->field_0 = AllocZeroed(8 * sizeof(struct UnkStruct_x20));
+ data->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
+ sub_811A5E4(data->field_0->arr, 8);
+ gUnknown_203B058 = 0x40;
+ data->field_20 = sub_8119E84(data->field_C, data->field_4, 9);
+ ZeroUnionObjWork(data->unionObjs);
+ sub_811BB68();
+ data->state = 1;
+ break;
+ case 1:
+ sub_811BAAC(data->spriteIds, taskData[0]);
+ if (++taskData[0] == 8)
+ data->state = 2;
+ break;
+ case 2:
+ SetHostRFUtgtGname(0x40, 0, 0);
+ sub_80FAFA0(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBC00();
+ sub_811A5E4(&data->field_8->arr[0], 1);
+ sub_811A650(data->field_4->arr, 4);
+ sub_811A650(data->field_C->arr, 4);
+ gSpecialVar_Result = 0;
+ data->state = 3;
+ break;
+ case 3:
+ if ((GetPartyMenuType() == PARTY_MENU_TYPE_UNION_ROOM_REGISTER
+ || GetPartyMenuType() == PARTY_MENU_TYPE_UNION_ROOM_TRADE)
+ && sUnionRoomTrade.field_0 != 0)
+ {
+ id = GetCursorSelectionMonId();
+ switch (sUnionRoomTrade.field_0)
+ {
+ case 1:
+ sub_80FB008(0x54, 0, 1);
+ if (id >= PARTY_SIZE)
+ {
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+ sub_80FAFA0(0, 0, 0);
+ sub_811868C(gUnknown_8458D54);
+ }
+ else if (!RegisterTradeMonAndGetIsEgg(GetCursorSelectionMonId(), &sUnionRoomTrade))
+ {
+ sub_8118664(0x34, gUnknown_8458CD4);
+ }
+ else
+ {
+ data->state = 55;
+ }
+ break;
+ case 2:
+ sub_81186C8(data);
+ taskData[1] = sUnionRoomTrade.field_8;
+ if (id >= PARTY_SIZE)
+ {
+ sub_811868C(gUnknown_8458D9C);
+ }
+ else
+ {
+ sub_80FB008(0x54, 0, 1);
+ gUnknown_203B058 = 0x44;
+ RegisterTradeMon(GetCursorSelectionMonId(), &sUnionRoomTrade);
+ data->state = 51;
+ }
+ break;
+ }
+ sUnionRoomTrade.field_0 = 0;
+ }
+ else
+ {
+ data->state = 4;
+ }
+ break;
+ case 4:
+ if (gSpecialVar_Result != 0)
+ {
+ if (gSpecialVar_Result == 9)
+ {
+ sub_80FB008(0x54, 0, 1);
+ PlaySE(SE_PC_LOGIN);
+ StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
+ data->state = 42;
+ gSpecialVar_Result = 0;
+ }
+ else if (gSpecialVar_Result == 11)
+ {
+ sub_80FB008(0x54, 0, 1);
+ data->state = 23;
+ gSpecialVar_Result = 0;
+ }
+ else
+ {
+ taskData[0] = 0;
+ taskData[1] = gSpecialVar_Result - 1;
+ data->state = 24;
+ gSpecialVar_Result = 0;
+ }
+ }
+ else if (ScriptContext2_IsEnabled() != TRUE)
+ {
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (sub_811BF00(data->field_0, &taskData[0], &taskData[1], data->spriteIds))
+ {
+ PlaySE(SE_SELECT);
+ sub_811B298();
+ data->state = 24;
+ break;
+ }
+ else if (sub_811A9B8())
+ {
+ sub_80FB008(0x54, 0, 1);
+ PlaySE(SE_PC_LOGIN);
+ sub_811B298();
+ StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
+ data->state = 45;
+ break;
+ }
+ }
+
+ switch (sub_8119B94())
+ {
+ case 1:
+ PlaySE(SE_TOY_C);
+ case 2:
+ sub_811BECC(data);
+ break;
+ case 4:
+ data->state = 11;
+ sub_811B298();
+ sub_80FAFA0(0, 0, 0);
+ sub_80FB008(0x53, sub_811B2D8(data), 0);
+ break;
+ }
+ sub_811BEDC(data);
+ }
+ break;
+ case 23:
+ if (!FuncIsActiveTask(Task_StartMenuHandleInput))
+ {
+ sub_80FB008(0x40, 0, 0);
+ data->state = 4;
+ }
+ break;
+ case 24:
+ sub_811A0E0();
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_80FB008(0x54, 0, 1);
+ switch (sub_811AA5C(data->field_0, taskData[0], taskData[1], playerGender))
+ {
+ case 0:
+ data->state = 26;
+ break;
+ case 1:
+ sub_80FC114(data->field_0->arr[taskData[1]].unk.playerName, &data->field_0->arr[taskData[1]].unk.gname, gUnknown_203B058);
+ data->field_12 = id; // Should be just 0, but won't match any other way.
+ data->state = 25;
+ break;
+ case 2:
+ sub_8118664(0x13, gStringVar4);
+ break;
+ }
+ break;
+ case 25:
+ sub_811A0E0();
+ switch (sub_80FB9F4())
+ {
+ case 4:
+ sub_811B258(TRUE);
+ data->state = 4;
+ break;
+ case 1:
+ case 2:
+ if (sub_80FBB0C() == TRUE)
+ sub_811868C(gUnknown_8457F90);
+ else
+ sub_8118664(30, gUnknown_8457F90);
+
+ gUnknown_203B058 = 0x40;
+ break;
+ }
+
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_8117594(gBlockSendBuffer, TRUE);
+ CreateTask(sub_8117280, 5);
+ data->state = 38;
+ }
+ break;
+ case 38:
+ if (!FuncIsActiveTask(sub_8117280))
+ {
+ if (gUnknown_203B058 == 0x44)
+ sub_8118664(31, gUnknown_84578BC);
+ else
+ data->state = 5;
+ }
+ break;
+ case 30:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ sub_811B258(FALSE);
+ sub_811C028(taskData[0], taskData[1], data->field_0);
+ data->state = 2;
+ }
+ break;
+ case 5:
+ id = sub_811AA24(&data->field_0->arr[taskData[1]]);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_8118664(6, gUnknown_8457B04[id][playerGender]);
+ break;
+ case 6:
+ var5 = sub_811A218(&data->textState, &data->field_1B, &data->field_1C, &gUnknown_8456DF4, &gUnknown_8456E1C);
+ if (var5 != -1)
+ {
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ data->state = 28;
+ }
+ else
+ {
+ data->field_98 = 0;
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ if (var5 == -2 || var5 == 0x40)
+ {
+ data->field_4C[0] = 0x40;
+ sub_80F9E2C(data->field_4C);
+ StringCopy(gStringVar4, gUnknown_845842C[gLinkPlayers[0].gender]);
+ data->state = 32;
+ }
+ else
+ {
+ gUnknown_203B058 = var5;
+ gUnknown_203B059 = (u32)(var5) >> 8;
+ if (gUnknown_203B058 == 0x41 && !HasAtLeastTwoMonsOfLevel30OrLower())
+ {
+ sub_8118664(5, gUnknown_845847C);
+ }
+ else
+ {
+ data->field_4C[0] = gUnknown_203B058 | 0x40;
+ sub_80F9E2C(data->field_4C);
+ data->state = 27;
+ }
+ }
+ }
+ }
+ break;
+ case 28:
+ StringCopy(gStringVar4, gUnknown_8458434);
+ data->state = 36;
+ break;
+ case 27:
+ sub_811B0A4(data);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ id = sub_811A9FC(data->field_4C[0] & 0x3F);
+ if (PrintOnTextbox(&data->textState, gUnknown_84580F4[playerGender][id]))
+ {
+ taskData[3] = 0;
+ data->state = 29;
+ }
+ break;
+ case 32:
+ sub_800AAC0();
+ data->state = 36;
+ break;
+ case 31:
+ data->field_4C[0] = 0x44;
+ data->field_4C[1] = sUnionRoomTrade.species;
+ data->field_4C[2] = sUnionRoomTrade.level;
+ sub_80F9E2C(data->field_4C);
+ data->state = 29;
+ break;
+ case 29:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ StringCopy(gStringVar4, gUnknown_8458434);
+ data->state = 28;
+ }
+ else
+ {
+ sub_811B0A4(data);
+ if (data->field_98 == 0x51)
+ {
+ if (gUnknown_203B058 == 8)
+ {
+ sub_811B31C(gStringVar4, data, FALSE);
+ data->state = 40;
+ }
+ else
+ {
+ data->state = 13;
+ }
+ }
+ else if (data->field_98 == 0x52)
+ {
+ data->state = 32;
+ sub_811AE68(gStringVar4, gUnknown_203B058 | 0x40, gLinkPlayers[0].gender);
+ gUnknown_203B058 = 0;
+ }
+ }
+ break;
+
+ case 7:
+ id = sub_811AA24(&data->field_0->arr[taskData[1]]);
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_8118664(6, gUnknown_8457B04[id][playerGender]);
+ break;
+ case 40:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ data->state = 41;
+ sub_800AB9C();
+ data->field_98 = 0;
+ data->field_9A[0] = 0;
+ }
+ break;
+ case 41:
+ if (IsLinkTaskFinished())
+ {
+ if (GetMultiplayerId() == 0)
+ {
+ StringCopy(gStringVar1, gLinkPlayers[GetMultiplayerId() ^ 1].name);
+ id = PlayerHasMetTrainerBefore(gLinkPlayers[1].trainerId, gLinkPlayers[1].name);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457C20[id]);
+ data->state = 33;
+ }
+ else
+ {
+ data->state = 7;
+ }
+ }
+ break;
+ case 19:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203B058 = 0x45;
+ sub_80FB008(0x45, 0, 1);
+ sub_80FC114(data->field_0->arr[taskData[1]].unk.playerName, &data->field_0->arr[taskData[1]].unk.gname, gUnknown_203B058);
+ data->field_12 = taskData[1];
+ data->state = 20;
+ taskData[3] = 0;
+ break;
+ case 1:
+ case -1:
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_811868C(gUnknown_8458548[playerGender]);
+ break;
+ }
+ break;
+ case 20:
+ if (++taskData[2] > 60)
+ {
+ data->state = 21;
+ taskData[2] = 0;
+ }
+ break;
+ case 21:
+ switch (sub_80FB9F4())
+ {
+ case 4:
+ sub_811B258(TRUE);
+ data->state = 4;
+ break;
+ case 1:
+ case 2:
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_80FB008(0x54, 0, 1);
+ if (sub_80FBB0C() == TRUE)
+ sub_811868C(gUnknown_84585E8[playerGender]);
+ else
+ sub_8118664(30, gUnknown_84585E8[playerGender]);
+ break;
+ case 3:
+ data->state = 22;
+ break;
+ }
+ taskData[3]++;
+ break;
+ case 22:
+ if (sub_80FBA00())
+ {
+ playerGender = GetUnionRoomPlayerGender(taskData[1], data->field_0);
+ sub_80FB008(0x54, 0, 1);
+ if (sub_80FBB0C() == TRUE)
+ sub_811868C(gUnknown_84585E8[playerGender]);
+ else
+ sub_8118664(30, gUnknown_84585E8[playerGender]);
+ }
+ if (gReceivedRemoteLinkPlayers != 0)
+ data->state = 16;
+ break;
+ case 11:
+ PlaySE(SE_PINPON);
+ sub_80F8FA0();
+ data->state = 12;
+ data->field_9A[0] = 0;
+ break;
+ case 12:
+ if (sub_80FBA00())
+ {
+ sub_811B258(FALSE);
+ data->state = 2;
+ }
+ else if (gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_8117594(gBlockSendBuffer, TRUE);
+ CreateTask(sub_8117280, 5);
+ data->state = 39;
+ }
+ break;
+ case 39:
+ sub_8119904(data);
+ if (!FuncIsActiveTask(sub_8117280))
+ {
+ data->state = 33;
+ StringCopy(gStringVar1, gLinkPlayers[1].name);
+ id = PlayerHasMetTrainerBefore(gLinkPlayers[1].trainerId, gLinkPlayers[1].name);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457BCC[id]);
+ }
+ break;
+ case 33:
+ sub_8119904(data);
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ data->state = 34;
+ break;
+ case 34:
+ sub_8119904(data);
+ if (sub_8119944(data) && JOY_NEW(B_BUTTON))
+ {
+ sub_80FBD6C(1);
+ StringCopy(gStringVar4, gUnknown_8457E60);
+ data->state = 36;
+ }
+ break;
+ case 35:
+ sub_8118664(9, gStringVar4);
+ break;
+ case 9:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->field_4C[0] = 0x51;
+ if (gUnknown_203B058 == 0x45)
+ sub_80FB008(gUnknown_203B058 | 0x40, sub_811B2A8(1), 0);
+ else
+ sub_80FB008(gUnknown_203B058 | 0x40, sub_811B2A8(1), 1);
+
+ data->field_8->arr[0].field_1B = 0;
+ taskData[3] = 0;
+ if (gUnknown_203B058 == 0x41)
+ {
+ if (!HasAtLeastTwoMonsOfLevel30OrLower())
+ {
+ data->field_4C[0] = 0x52;
+ sub_80F9E2C(data->field_4C);
+ data->state = 10;
+ StringCopy(gStringVar4, gUnknown_84584C0);
+ }
+ else
+ {
+ sub_80F9E2C(data->field_4C);
+ data->state = 13;
+ }
+ }
+ else if (gUnknown_203B058 == 0x48)
+ {
+ sub_80F9E2C(data->field_4C);
+ sub_811B31C(gStringVar4, data, 1);
+ data->state = 40;
+ }
+ else
+ {
+ sub_80F9E2C(data->field_4C);
+ data->state = 13;
+ }
+ break;
+ case 1:
+ case -1:
+ data->field_4C[0] = 0x52;
+ sub_80F9E2C(data->field_4C);
+ data->state = 10;
+ sub_81162E0(gStringVar4, gUnknown_203B058);
+ break;
+ }
+ break;
+ case 10:
+ sub_800AAC0();
+ data->state = 36;
+ break;
+ case 36:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gUnknown_203B058 = 0x40;
+ sub_8118664(0x25, gStringVar4);
+ memset(data->field_4C, 0, sizeof(data->field_4C));
+ data->field_9A[0] = 0;
+ data->field_98 = 0;
+ }
+ break;
+ case 37:
+ data->state = 2;
+ sub_811B258(FALSE);
+ break;
+ case 13:
+ sub_811AECC(gStringVar4, gUnknown_203B058 | 0x40);
+ sub_8118664(14, gStringVar4);
+ break;
+ case 14:
+ sub_800AB9C();
+ data->state = 15;
+ break;
+ case 15:
+ if (IsLinkTaskFinished())
+ data->state = 16;
+ break;
+ case 16:
+ Free(data->field_8);
+ Free(data->field_0);
+ Free(data->field_C);
+ Free(data->field_4);
+ DestroyTask(data->field_20);
+ sub_811BB40(data->spriteIds);
+ data->state = 17;
+ break;
+ case 17:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ data->state = 18;
+ break;
+ case 18:
+ if (!UpdatePaletteFade())
+ {
+ sub_811BA78();
+ DestroyTask(taskId);
+ Free(sUnionRoomMain.uRoom);
+ sub_81179A4();
+ }
+ break;
+ case 42:
+ if (sub_80F9800()->species == SPECIES_NONE)
+ {
+ data->state = 43;
+ }
+ else
+ {
+ if (sub_80F9800()->species == SPECIES_EGG)
+ {
+ StringCopy(gStringVar4, gUnknown_8458DE8);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gSpeciesNames[sub_80F9800()->species]);
+ ConvertIntToDecimalStringN(gStringVar2, sub_80F9800()->level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8458DBC);
+ }
+ sub_8118664(44, gStringVar4);
+ }
+ break;
+ case 43:
+ if (PrintOnTextbox(&data->textState, gUnknown_8458AB8))
+ data->state = 47;
+ break;
+ case 47:
+ var5 = sub_811A218(&data->textState, &data->field_1D, &data->field_1E, &gUnknown_8456E34, &gUnknown_8456E54);
+ if (var5 != -1)
+ {
+ if (var5 == -2 || var5 == 3)
+ {
+ data->state = 4;
+ sub_811B258(TRUE);
+ }
+ else
+ {
+ switch (var5)
+ {
+ case 1: // REGISTER
+ sub_8118664(53, gUnknown_8458D1C);
+ break;
+ case 2: // INFO
+ sub_8118664(47, gUnknown_8458B44);
+ break;
+ }
+ }
+ DestroyHelpMessageWindow_();
+ }
+ break;
+ case 53:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, RGB_BLACK);
+ data->state = 54;
+ break;
+ case 54:
+ if (!gPaletteFade.active)
+ {
+ sUnionRoomTrade.field_0 = 1;
+ gFieldCallback = sub_807DCE4;
+ ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_REGISTER, CB2_ReturnToField);
+ }
+ break;
+ case 52:
+ var5 = sub_811A218(&data->textState, &data->field_1D, &data->field_1E, &gUnknown_8456E6C, &gUnknown_8456F04);
+ if (var5 != -1)
+ {
+ switch (var5)
+ {
+ case -2:
+ case 18:
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+ sub_80FAFA0(0, 0, 0);
+ sub_811868C(gUnknown_8458D54);
+ break;
+ default:
+ sUnionRoomTrade.type = var5;
+ data->state = 55;
+ break;
+ }
+ }
+ break;
+ case 55:
+ sub_80FAFA0(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
+ sub_811868C(gUnknown_8458D78);
+ break;
+ case 44:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->state = 56;
+ break;
+ case 1:
+ case -1:
+ sub_811B258(TRUE);
+ data->state = 4;
+ break;
+ }
+ break;
+ case 56:
+ if (PrintOnTextbox(&data->textState, gUnknown_8458E10))
+ {
+ sub_80FAFA0(0, 0, 0);
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+ sub_811B258(TRUE);
+ data->state = 4;
+ }
+ break;
+ case 45:
+ if (PrintOnTextbox(&data->textState, gUnknown_8458A98))
+ data->state = 46;
+ break;
+ case 46:
+ sub_811A3F8();
+ data->state = 48;
+ break;
+ case 48:
+ var5 = sub_811A2EC(&data->textState, &data->field_1D, &data->field_4A, &data->field_1E, &gUnknown_8456F24, &gUnknown_8456F7C, data->field_0);
+ if (var5 != -1)
+ {
+ switch (var5)
+ {
+ case -2:
+ case 8:
+ sub_811B258(TRUE);
+ DestroyHelpMessageWindow_();
+ data->state = 4;
+ break;
+ default:
+ switch (sub_811ADD0(data->field_0->arr[var5].unk.gname.type, data->field_0->arr[var5].unk.gname.species))
+ {
+ case 0:
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]);
+ sub_8118664(49, gUnknown_8458E70);
+ taskData[1] = var5;
+ break;
+ case 1:
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]);
+ StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].unk.gname.type]);
+ sub_8118664(46, gUnknown_8458ED0);
+ break;
+ case 2:
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[var5]);
+ StringCopy(gStringVar2, gTypeNames[data->field_0->arr[var5].unk.gname.type]);
+ sub_8118664(46, gUnknown_8458F04);
+ break;
+ }
+ break;
+ }
+ }
+ break;
+ case 49:
+ switch (sub_811A14C(&data->textState, FALSE))
+ {
+ case 0:
+ data->state = 50;
+ break;
+ case -1:
+ case 1:
+ sub_811B258(TRUE);
+ data->state = 4;
+ break;
+ }
+ break;
+ case 50:
+ if (PrintOnTextbox(&data->textState, gUnknown_8458D1C))
+ {
+ sUnionRoomTrade.field_0 = 2;
+ memcpy(&gUnknown_203B064, &data->field_0->arr[taskData[1]].unk.gname.unk_00, sizeof(gUnknown_203B064));
+ gUnionRoomRequestedMonType = data->field_0->arr[taskData[1]].unk.gname.type;
+ gUnionRoomOfferedSpecies = data->field_0->arr[taskData[1]].unk.gname.species;
+ gFieldCallback = sub_807DCE4;
+ ChooseMonForTradingBoard(PARTY_MENU_TYPE_UNION_ROOM_TRADE, CB2_ReturnToField);
+ sub_81186B0(data);
+ sUnionRoomTrade.field_8 = taskData[1];
+ }
+ break;
+ case 51:
+ gUnknown_203B058 = 0x44;
+ sub_80FC114(data->field_0->arr[taskData[1]].unk.playerName, &data->field_0->arr[taskData[1]].unk.gname, 0x44);
+ IntlConvPartnerUname(gStringVar1, data->field_0->arr[taskData[1]]);
+ sub_811A0B4(gUnknown_8457A34[2]);
+ data->state = 25;
+ break;
+ case 26:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ {
+ sub_811B258(TRUE);
+ sub_811C028(taskData[0], taskData[1], data->field_0);
+ data->state = 4;
+ }
+ break;
+ case 8:
+ if (PrintOnTextbox(&data->textState, gStringVar4))
+ data->state = data->stateAfterPrint;
+ break;
+ }
+}
+
+void var_800D_set_xB(void)
+{
+ if (InUnionRoom() == TRUE)
+ gSpecialVar_Result = 11;
+}
+
+static void sub_8119904(struct UnkStruct_URoom * arg0)
+{
+ if (gRecvCmds[1][1] != 0 && (gRecvCmds[1][0] & 0xFF00) == 0x2F00)
+ {
+ arg0->field_9A[0] = gRecvCmds[1][1];
+ if (gRecvCmds[1][1] == 0x44)
+ {
+ arg0->field_9A[1] = gRecvCmds[1][2];
+ arg0->field_9A[2] = gRecvCmds[1][3];
+ }
+ }
+}
+
+static bool32 sub_8119944(struct UnkStruct_URoom * arg0)
+{
+ if (arg0->field_9A[0] != 0)
+ {
+ s32 var = sub_811AF6C(gStringVar4, gLinkPlayers[1].gender, &arg0->field_9A[0], arg0);
+ if (var == 0)
+ {
+ return TRUE;
+ }
+ else if (var == 1)
+ {
+ arg0->state = 35;
+ gUnknown_203B058 = arg0->field_9A[0];
+ return FALSE;
+ }
+ else if (var == 2)
+ {
+ arg0->state = 36;
+ sub_800AAC0();
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+void InitUnionRoom(void)
+{
+ struct UnkStruct_URoom * ptr;
+
+ sUnionRoomPlayerName[0] = EOS;
+ if (gQuestLogState == 2 || gQuestLogState == 3)
+ return;
+ CreateTask(sub_81199FC, 0);
+ sUnionRoomMain.uRoom = sUnionRoomMain.uRoom; // Needed to match.
+ sUnionRoomMain.uRoom = ptr = AllocZeroed(sizeof(struct UnkStruct_URoom));
+ sURoom = sUnionRoomMain.uRoom;
+ ptr->state = 0;
+ ptr->textState = 0;
+ ptr->field_10 = 0;
+ ptr->field_12 = 0;
+ sUnionRoomPlayerName[0] = EOS;
+}
+
+static void sub_81199FC(u8 taskId)
+{
+ s32 i;
+ u8 text[32];
+ struct UnkStruct_URoom * structPtr = sUnionRoomMain.uRoom;
+
+ switch (structPtr->state)
+ {
+ case 0:
+ structPtr->state = 1;
+ break;
+ case 1:
+ SetHostRFUtgtGname(0xC, 0, 0);
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBC00();
+ sub_80FB128(1);
+ structPtr->state = 2;
+ break;
+ case 2:
+ structPtr->field_4 = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ sub_811A650(structPtr->field_4->arr, 4);
+ structPtr->field_C = AllocZeroed(4 * sizeof(struct UnkStruct_x1C));
+ sub_811A650(structPtr->field_C->arr, 4);
+ structPtr->field_0 = AllocZeroed(8 * sizeof(struct UnkStruct_x20));
+ sub_811A5E4(structPtr->field_0->arr, 8);
+ structPtr->field_8 = AllocZeroed(sizeof(struct UnkStruct_x20));
+ sub_811A5E4(&structPtr->field_8->arr[0], 1);
+ structPtr->field_20 = sub_8119E84(structPtr->field_C, structPtr->field_4, 10);
+ structPtr->state = 3;
+ break;
+ case 3:
+ switch (sub_8119B94())
+ {
+ case 1:
+ case 2:
+ if (sUnionRoomPlayerName[0] == EOS)
+ {
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ {
+ if (structPtr->field_0->arr[i].field_1A_0 == 1)
+ {
+ IntlConvPartnerUname(text, structPtr->field_0->arr[i]);
+ if (PlayerHasMetTrainerBefore(ReadAsU16(structPtr->field_0->arr[i].unk.gname.unk_00.playerTrainerId), text))
+ {
+ StringCopy(sUnionRoomPlayerName, text);
+ break;
+ }
+ }
+ }
+ }
+ break;
+ case 3:
+ break;
+ }
+ break;
+ case 4:
+ Free(structPtr->field_8);
+ Free(structPtr->field_0);
+ Free(structPtr->field_C);
+ Free(structPtr->field_4);
+ DestroyTask(structPtr->field_20);
+ Free(sUnionRoomMain.uRoom);
+ sub_80F8DC0();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+bool16 BufferUnionRoomPlayerName(void)
+{
+ if (sUnionRoomPlayerName[0] != EOS)
+ {
+ StringCopy(gStringVar1, sUnionRoomPlayerName);
+ sUnionRoomPlayerName[0] = EOS;
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static u8 sub_8119B94(void)
+{
+ s32 i;
+ u8 j;
+ struct UnkStruct_URoom * structPtr = sUnionRoomMain.uRoom;
+ s32 r7 = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_811A694(&structPtr->field_C->arr[i].unk0, &gUnknown_8457034) == TRUE)
+ {
+ structPtr->field_8->arr[0].unk = structPtr->field_C->arr[i].unk0;
+ structPtr->field_8->arr[0].field_18 = 0;
+ structPtr->field_8->arr[0].field_1A_0 = 1;
+ structPtr->field_8->arr[0].field_1B = 1;
+ return 4;
+ }
+ }
+ for (j = 0; j < 8; j++)
+ {
+ if (structPtr->field_0->arr[j].field_1A_0 != 0)
+ {
+ i = sub_811A748(&structPtr->field_0->arr[j], &structPtr->field_4->arr[0]);
+ if (i != 0xFF)
+ {
+ if (structPtr->field_0->arr[j].field_1A_0 == 1)
+ {
+ if (sub_811A6DC(&structPtr->field_0->arr[j].unk, &structPtr->field_4->arr[i].unk0))
+ {
+ structPtr->field_0->arr[j].unk = structPtr->field_4->arr[i].unk0;
+ structPtr->field_0->arr[j].field_1B = 0x40;
+ r7 = 1;
+ }
+ else if (structPtr->field_0->arr[j].field_1B != 0)
+ {
+ structPtr->field_0->arr[j].field_1B--;
+ if (structPtr->field_0->arr[j].field_1B == 0)
+ r7 = 2;
+ }
+ }
+ else
+ {
+ structPtr->field_0->arr[j].field_1A_0 = 1;
+ structPtr->field_0->arr[j].field_1B = 0;
+ r7 = 2;
+ }
+ structPtr->field_0->arr[j].field_18 = 0;
+ }
+ else if (structPtr->field_0->arr[j].field_1A_0 != 2)
+ {
+ structPtr->field_0->arr[j].field_18++;
+ if (structPtr->field_0->arr[j].field_18 >= 600)
+ {
+ structPtr->field_0->arr[j].field_1A_0 = 2;
+ r7 = 2;
+ }
+ }
+ else if (structPtr->field_0->arr[j].field_1A_0 == 2)
+ {
+ structPtr->field_0->arr[j].field_18++;
+ if (structPtr->field_0->arr[j].field_18 >= 900)
+ {
+ sub_811A5E4(&structPtr->field_0->arr[j], 1);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_811A798(&structPtr->field_0->arr[0], &structPtr->field_4->arr[i], 8) != 0xFF)
+ r7 = 1;
+ }
+
+ return r7;
+}
+
+static void sub_8119D34(u8 taskId)
+{
+ s32 i, j;
+ struct UnkStruct_Shared sp0;
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+ bool8 r4;
+
+ for (i = 0; i < 4; i++)
+ {
+ r4 = sub_80FCC3C(&sp0.gname, sp0.playerName, i);
+ if (!sub_8116F28(sp0.gname.unk_0a_0, gTasks[taskId].data[4]))
+ {
+ sp0 = gUnknown_8457034;
+ }
+ if (sp0.gname.unk_00.unk_00_0 == 1)
+ {
+ sp0 = gUnknown_8457034;
+ }
+ if (!r4)
+ {
+ for (j = 0; j < i; j++)
+ {
+ if (!sub_811A694(&ptr[1]->arr[j].unk0, &sp0))
+ {
+ sp0 = gUnknown_8457034;
+ }
+ }
+ ptr[1]->arr[i].unk0 = sp0;
+ ptr[1]->arr[i].unk18 = sub_811A694(&ptr[1]->arr[i].unk0, &gUnknown_8457034);
+ }
+ else
+ {
+ ptr[0]->arr[i].unk0 = sp0;
+ ptr[0]->arr[i].unk18 = sub_811A694(&ptr[0]->arr[i].unk0, &gUnknown_8457034);
+ }
+ }
+}
+
+static u8 sub_8119E84(struct UnkStruct_Main4 * a0, struct UnkStruct_Main4 * a1, u32 a2)
+{
+ u8 taskId = CreateTask(sub_8119D34, 0);
+ struct UnkStruct_Main4 ** data = (void *)gTasks[taskId].data;
+ data[0] = a0;
+ data[1] = a1;
+ gTasks[taskId].data[4] = a2;
+ return taskId;
+}
+
+static void sub_8119EB8(u8 taskId)
+{
+ s32 i, j;
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+
+ for (i = 0; i < 4; i++)
+ {
+ sub_80FCC3C(&ptr[0]->arr[i].unk0.gname, ptr[0]->arr[i].unk0.playerName, i);
+ if (!sub_8116F28(ptr[0]->arr[i].unk0.gname.unk_0a_0, gTasks[taskId].data[2]))
+ {
+ ptr[0]->arr[i].unk0 = gUnknown_8457034;
+ }
+ for (j = 0; j < i; j++)
+ {
+ if (!sub_811A694(&ptr[0]->arr[j].unk0, &ptr[0]->arr[i].unk0))
+ {
+ ptr[0]->arr[i].unk0 = gUnknown_8457034;
+ }
+ }
+ ptr[0]->arr[i].unk18 = sub_811A694(&ptr[0]->arr[i].unk0, &gUnknown_8457034);
+ }
+}
+
+static bool32 sub_8119FB0(struct GFtgtGname * arg0, s16 arg1)
+{
+ if (arg1 == 7)
+ {
+ if (!arg0->unk_00.unk_00_5)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else if (arg1 == 8)
+ {
+ if (!arg0->unk_00.unk_00_4)
+ {
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_8119FD8(u8 taskId)
+{
+ s32 i;
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sub_80FCCF4(&ptr[0]->arr[i].unk0.gname, ptr[0]->arr[i].unk0.playerName, i))
+ {
+ sub_8119FB0(&ptr[0]->arr[i].unk0.gname, gTasks[taskId].data[2]);
+ }
+ ptr[0]->arr[i].unk18 = sub_811A694(&ptr[0]->arr[i].unk0, &gUnknown_8457034);
+ }
+}
+
+static u8 sub_811A054(struct UnkStruct_Main4 * a0, u32 a1)
+{
+ u8 taskId = CreateTask(sub_8119EB8, 0);
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+ ptr[0] = a0;
+ gTasks[taskId].data[2] = a1;
+ return taskId;
+}
+
+static u8 sub_811A084(struct UnkStruct_Main4 * a0, u32 a1)
+{
+ u8 taskId = CreateTask(sub_8119FD8, 0);
+ struct UnkStruct_Main4 ** ptr = (void*) gTasks[taskId].data;
+ ptr[0] = a0;
+ gTasks[taskId].data[2] = a1;
+ return taskId;
+}
+
+static bool32 sub_811A0B4(const u8 *src)
+{
+ LoadStdWindowFrameGfx();
+ DrawDialogueFrame(0, 1);
+ StringExpandPlaceholders(gStringVar4, src);
+ AddTextPrinterWithCustomSpeedForMessage(FALSE, 1);
+ return FALSE;
+}
+
+static bool32 sub_811A0E0(void)
+{
+ if (!RunTextPrinters_CheckPrinter0Active())
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static bool8 PrintOnTextbox(u8 *textState, const u8 *str)
+{
+ switch (*textState)
+ {
+ case 0:
+ LoadStdWindowFrameGfx();
+ DrawDialogueFrame(0, 1);
+ StringExpandPlaceholders(gStringVar4, str);
+ AddTextPrinterForMessage(TRUE);
+ (*textState)++;
+ break;
+ case 1:
+ if (!RunTextPrinters_CheckPrinter0Active())
+ {
+ *textState = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static s8 sub_811A14C(u8 *arg0, bool32 arg1)
+{
+ s8 r1;
+
+ switch (*arg0)
+ {
+ case 0:
+ if (arg1)
+ {
+ return -3;
+ }
+ DisplayYesNoMenuDefaultYes();
+ (*arg0)++;
+ break;
+ case 1:
+ if (arg1)
+ {
+ DestroyYesNoMenu();
+ *arg0 = 0;
+ return -3;
+ }
+ r1 = Menu_ProcessInputNoWrapClearOnChoose();
+ if (r1 == -1 || r1 == 0 || r1 == 1)
+ {
+ *arg0 = 0;
+ return r1;
+ }
+ break;
+ }
+ return -2;
+}
+
+static u8 sub_811A1AC(const struct WindowTemplate * template)
+{
+ u8 windowId = AddWindow(template);
+ DrawStdWindowFrame(windowId, FALSE);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(15));
+ sub_811A444(windowId, 0, gUnknown_8459378, 8, 1, 6);
+ PutWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 2);
+ return windowId;
+}
+
+static void sub_811A1FC(u8 windowId)
+{
+ ClearStdWindowAndFrame(windowId, TRUE);
+ RemoveWindow(windowId);
+}
+
+static s32 sub_811A218(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate)
+{
+ s32 r1, r8;
+
+ switch (*arg0)
+ {
+ case 0:
+ *arg1 = AddWindow(winTemplate);
+ DrawStdWindowFrame(*arg1, FALSE);
+ gMultiuseListMenuTemplate = *menuTemplate;
+ gMultiuseListMenuTemplate.windowId = *arg1;
+ *arg2 = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
+ CopyWindowToVram(*arg1, TRUE);
+ (*arg0)++;
+ break;
+ case 1:
+ r8 = ListMenu_ProcessInput(*arg2);
+ if (JOY_NEW(A_BUTTON))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ *arg0 = 0;
+ return r8;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ *arg0 = 0;
+ return -2;
+ }
+ break;
+ }
+
+ return -1;
+}
+
+static s32 sub_811A2EC(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate * winTemplate, const struct ListMenuTemplate * menuTemplate, struct UnkStruct_Main0 * arg6)
+{
+ s32 input;
+ s32 r4;
+
+ switch (*arg0)
+ {
+ case 0:
+ *arg3 = sub_811A1AC(&gUnknown_8456F1C);
+ *arg1 = AddWindow(winTemplate);
+ DrawStdWindowFrame(*arg1, FALSE);
+ gMultiuseListMenuTemplate = *menuTemplate;
+ gMultiuseListMenuTemplate.windowId = *arg1;
+ *arg2 = ListMenuInit(&gMultiuseListMenuTemplate, 0, 1);
+ CopyWindowToVram(*arg1, TRUE);
+ (*arg0)++;
+ break;
+ case 1:
+ input = ListMenu_ProcessInput(*arg2);
+ if (JOY_NEW(A_BUTTON | B_BUTTON))
+ {
+ if (input == 8 || JOY_NEW(B_BUTTON))
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ sub_811A1FC(*arg3);
+ *arg0 = 0;
+ return -2;
+ }
+ else
+ {
+ r4 = sub_811AD7C(arg6->arr, input);
+ if (r4 >= 0)
+ {
+ DestroyListMenuTask(*arg2, NULL, NULL);
+ ClearStdWindowAndFrame(*arg1, TRUE);
+ RemoveWindow(*arg1);
+ sub_811A1FC(*arg3);
+ *arg0 = 0;
+ return r4;
+ }
+ else
+ {
+ PlaySE(SE_WALL_HIT);
+ }
+ }
+ }
+ break;
+ }
+
+ return -1;
+}
+
+static void sub_811A3F8(void)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_811A41C(void)
+{
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0);
+ CopyBgTilemapBufferToVram(0);
+ EnableBothScriptContexts();
+}
+
+static void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx)
+{
+ struct TextPrinterTemplate printerTemplate;
+
+ printerTemplate.currentChar = str;
+ printerTemplate.windowId = windowId;
+ printerTemplate.fontId = fontId;
+ printerTemplate.x = x;
+ printerTemplate.y = y;
+ printerTemplate.currentX = x;
+ printerTemplate.currentY = y;
+ printerTemplate.unk = 0;
+
+ gTextFlags.useAlternateDownArrow = FALSE;
+ switch (colorIdx)
+ {
+ case 0:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 2;
+ printerTemplate.bgColor = 1;
+ printerTemplate.shadowColor = 3;
+ break;
+ case 1:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 4;
+ printerTemplate.bgColor = 1;
+ printerTemplate.shadowColor = 5;
+ break;
+ case 2:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 6;
+ printerTemplate.bgColor = 1;
+ printerTemplate.shadowColor = 7;
+ break;
+ case 3:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 1;
+ printerTemplate.bgColor = 1;
+ printerTemplate.shadowColor = 3;
+ break;
+ case 4:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 1;
+ printerTemplate.bgColor = 2;
+ printerTemplate.shadowColor = 3;
+ break;
+ case 5:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 7;
+ printerTemplate.bgColor = 15;
+ printerTemplate.shadowColor = 9;
+ break;
+ case 6:
+ printerTemplate.letterSpacing = 0;
+ printerTemplate.lineSpacing = 0;
+ printerTemplate.fgColor = 14;
+ printerTemplate.bgColor = 15;
+ printerTemplate.shadowColor = 9;
+ break;
+ }
+
+ AddTextPrinter(&printerTemplate, 0xFF, NULL);
+}
+
+static void sub_811A5E4(struct UnkStruct_x20 * arg0, u8 count)
+{
+ s32 i;
+
+ for (i = 0; i < count; i++)
+ {
+ arg0[i].unk = gUnknown_8457034;
+ arg0[i].field_18 = 0xFF;
+ arg0[i].field_1A_0 = 0;
+ arg0[i].field_1A_1 = 0;
+ arg0[i].field_1B = 0;
+ }
+}
+
+static void sub_811A650(struct UnkStruct_x1C * arg0, u8 count)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ arg0[i].unk0 = gUnknown_8457034;
+ arg0[i].unk18 = 0;
+ }
+}
+
+static bool8 sub_811A694(struct UnkStruct_Shared * arg0, const struct UnkStruct_Shared * arg1)
+{
+ s32 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ if (arg0->gname.unk_00.playerTrainerId[i] != arg1->gname.unk_00.playerTrainerId[i])
+ {
+ return TRUE;
+ }
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ if (arg0->playerName[i] != arg1->playerName[i])
+ {
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static bool32 sub_811A6DC(struct UnkStruct_Shared * arg0, struct UnkStruct_Shared * arg1)
+{
+ s32 i;
+
+ if (arg0->gname.unk_0a_0 != arg1->gname.unk_0a_0)
+ {
+ return TRUE;
+ }
+
+ if (arg0->gname.unk_0a_7 != arg1->gname.unk_0a_7)
+ {
+ return TRUE;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg0->gname.unk_04[i] != arg1->gname.unk_04[i])
+ {
+ return TRUE;
+ }
+ }
+
+ if (arg0->gname.species != arg1->gname.species)
+ {
+ return TRUE;
+ }
+
+ if (arg0->gname.type != arg1->gname.type)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u32 sub_811A748(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1)
+{
+ u8 result = 0xFF;
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg1[i].unk18 && !sub_811A694(&arg0->unk, &arg1[i].unk0))
+ {
+ result = i;
+ arg1[i].unk18 = FALSE;
+ }
+ }
+
+ return result;
+}
+
+static u8 sub_811A798(struct UnkStruct_x20 * arg0, struct UnkStruct_x1C * arg1, u8 arg2)
+{
+ s32 i;
+
+ if (arg1->unk18)
+ {
+ for (i = 0; i < arg2; i++)
+ {
+ if (arg0[i].field_1A_0 == 0)
+ {
+ arg0[i].unk = arg1->unk0;
+ arg0[i].field_18 = 0;
+ arg0[i].field_1A_0 = 1;
+ arg0[i].field_1B = 64;
+ arg1->unk18 = FALSE;
+ return i;
+ }
+ }
+ }
+
+ return 0xFF;
+}
+
+static void sub_811A81C(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 * arg3, u8 arg4, u8 id)
+{
+ u8 r2;
+ u8 sp0[6];
+ u8 sp10[30];
+
+ ConvertIntToDecimalStringN(gStringVar4, id + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(gStringVar4, gUnknown_84571B0);
+ sub_811A444(arg0, 0, gStringVar4, arg1, arg2, 0);
+ arg1 += 18;
+ r2 = arg3->unk.gname.unk_0a_0;
+ if (arg3->field_1A_0 == 1 && !(r2 & 0x40))
+ {
+ IntlConvPartnerUname(sp10, *arg3);
+ sub_811A444(arg0, 2, sp10, arg1, arg2, arg4);
+ ConvertIntToDecimalStringN(sp0, arg3->unk.gname.unk_00.playerTrainerId[0] | (arg3->unk.gname.unk_00.playerTrainerId[1] << 8), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringCopy(gStringVar4, gUnknown_84571B4);
+ StringAppend(gStringVar4, sp0);
+ arg1 += 77;
+ sub_811A444(arg0, 0, gStringVar4, arg1, arg2, arg4);
+ }
+}
+
+static void sub_811A910(u8 windowId, u8 x, u8 y, struct UnkStruct_x20 * arg3, u8 arg4, u8 id)
+{
+ u8 sp0[6];
+ u8 sp10[30];
+
+ if (arg3->field_1A_0 == 1)
+ {
+ IntlConvPartnerUname(sp10, *arg3);
+ sub_811A444(windowId, 2, sp10, x, y, arg4);
+ ConvertIntToDecimalStringN(sp0, arg3->unk.gname.unk_00.playerTrainerId[0] | (arg3->unk.gname.unk_00.playerTrainerId[1] << 8), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringCopy(gStringVar4, gUnknown_84571B4);
+ StringAppend(gStringVar4, sp0);
+ x += 71;
+ sub_811A444(windowId, 0, gStringVar4, x, y, arg4);
+ }
+}
+
+static bool32 sub_811A9B8(void)
+{
+ s16 x, y;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (x != 9)
+ {
+ return FALSE;
+ }
+ if (y != 8)
+ {
+ return FALSE;
+ }
+ if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u32 sub_811A9FC(s32 arg0)
+{
+ switch (arg0)
+ {
+ case 5:
+ return 1;
+ case 4:
+ return 2;
+ case 8:
+ return 3;
+ case 3:
+ default:
+ return 0;
+ }
+}
+
+static u32 sub_811AA24(struct UnkStruct_x20 * arg0)
+{
+ u8 sp0[30];
+ IntlConvPartnerUname(sp0, *arg0);
+ return PlayerHasMetTrainerBefore(ReadAsU16(arg0->unk.gname.unk_00.playerTrainerId), sp0);
+}
+
+static s32 sub_811AA5C(struct UnkStruct_Main0 * arg0, u8 arg1, u8 arg2, u32 playerGender)
+{
+ bool32 r2;
+
+ struct UnkStruct_x20 * r5 = &arg0->arr[arg2];
+
+ if (!r5->unk.gname.unk_0a_7 && arg1 == 0)
+ {
+ IntlConvPartnerUname(gStringVar1, *r5);
+ r2 = PlayerHasMetTrainerBefore(ReadAsU16(r5->unk.gname.unk_00.playerTrainerId), gStringVar1);
+ if (r5->unk.gname.unk_0a_0 == 0x45)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457F80[r2][playerGender]);
+ return 2;
+ }
+ else
+ {
+ sub_811A0B4(gUnknown_8457A34[r2]);
+ return 1;
+ }
+ }
+ else
+ {
+ IntlConvPartnerUname(gStringVar1, *r5);
+ if (arg1 != 0)
+ {
+ playerGender = (r5->unk.gname.unk_00.playerTrainerId[arg1 + 1] >> 3) & 1;
+ }
+ switch (r5->unk.gname.unk_0a_0 & 0x3F)
+ {
+ case 1:
+ StringExpandPlaceholders(gStringVar4, gUnknown_8458758[playerGender][Random() % 4]);
+ break;
+ case 4:
+ StringExpandPlaceholders(gStringVar4, gUnknown_8458A78[playerGender][Random() % 2]);
+ break;
+ case 5:
+ StringExpandPlaceholders(gStringVar4, gUnknown_84588BC[playerGender][Random() % 4]);
+ break;
+ case 8:
+ StringExpandPlaceholders(gStringVar4, gUnknown_84589AC[playerGender][Random() % 2]);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457F90);
+ break;
+ }
+ return 0;
+ }
+}
+
+static void nullsub_92(u8 windowId, s32 itemId, u8 y)
+{
+
+}
+
+static void sub_811ABE4(u8 windowId, u8 y, struct GFtgtGname * gname, const u8 * uname, u8 colorIdx)
+{
+ u8 level_t[4];
+ u16 species = gname->species;
+ u8 type = gname->type;
+ u8 level = gname->level;
+
+ sub_811A444(windowId, 2, uname, 8, y, colorIdx);
+ if (species == SPECIES_EGG)
+ {
+ sub_811A444(windowId, 2, gUnknown_8458FBC, 0x44, y, colorIdx);
+ }
+ else
+ {
+ BlitMoveInfoIcon(windowId, type + 1, 0x44, y);
+ sub_811A444(windowId, 2, gSpeciesNames[species], 0x76, y, colorIdx);
+ ConvertIntToDecimalStringN(level_t, level, STR_CONV_MODE_LEFT_ALIGN, 3);
+ sub_811A444(windowId, 2, level_t, GetStringRightAlignXOffset(2, level_t, 218), y, colorIdx);
+ }
+}
+
+static void sub_811ACA4(u8 windowId, s32 itemId, u8 y)
+{
+ struct UnkStruct_Leader * leader = sUnionRoomMain.leader;
+ struct GFtgtGname * rfu;
+ s32 i, j;
+ u8 uname[8];
+
+ if (itemId == -3 && y == gUnknown_8456F7C.upText_Y)
+ {
+ rfu = sub_80F9800();
+ if (rfu->species != SPECIES_NONE)
+ {
+ sub_811ABE4(windowId, y, rfu, gSaveBlock2Ptr->playerName, 5);
+ }
+ }
+ else
+ {
+ j = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (leader->field_0->arr[i].field_1A_0 == 1 && leader->field_0->arr[i].unk.gname.species != SPECIES_NONE)
+ {
+ j++;
+ }
+ if (j == itemId + 1)
+ {
+ IntlConvPartnerUname(uname, leader->field_0->arr[i]);
+ sub_811ABE4(windowId, y, &leader->field_0->arr[i].unk.gname, uname, 6);
+ break;
+ }
+ }
+ }
+}
+
+static s32 sub_811AD7C(struct UnkStruct_x20 * arg, s32 arg1)
+{
+ s32 i;
+ s32 j = 0;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (arg[i].field_1A_0 == 1 && arg[i].unk.gname.species != SPECIES_NONE)
+ {
+ j++;
+ }
+ if (j == arg1 + 1)
+ {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+static s32 GetUnionRoomPlayerGender(s32 arg1, struct UnkStruct_Main0 * arg0)
+{
+ return arg0->arr[arg1].unk.gname.playerGender;
+}
+
+static s32 sub_811ADD0(u32 type, u32 species)
+{
+ s32 i;
+
+ if (species == SPECIES_EGG)
+ {
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (species == SPECIES_EGG)
+ {
+ return 0;
+ }
+ }
+ return 2;
+ }
+ else
+ {
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (gBaseStats[species].type1 == type || gBaseStats[species].type2 == type)
+ {
+ return 0;
+ }
+ }
+ return 1;
+ }
+}
+
+static void sub_811AE68(u8 *dst, s32 arg1, u32 playerGender)
+{
+ switch (arg1)
+ {
+ case 0x41:
+ StringExpandPlaceholders(dst, gUnknown_8458314[playerGender]);
+ break;
+ case 0x45:
+ StringExpandPlaceholders(dst, gUnknown_84585E8[playerGender]);
+ break;
+ case 0x44:
+ StringExpandPlaceholders(dst, gUnknown_8458F9C);
+ break;
+ case 0x48:
+ StringExpandPlaceholders(dst, gUnknown_84583B4[playerGender]);
+ break;
+ }
+}
+
+static void sub_811AECC(u8 *dst, u8 arg1)
+{
+ u8 mpId = GetMultiplayerId();
+ u8 gender = gLinkPlayers[mpId ^ 1].gender;
+
+ switch (arg1)
+ {
+ case 0x41:
+ StringCopy(dst, gUnknown_8458230[mpId][gender][0]);
+ break;
+ case 0x44:
+ StringCopy(dst, gUnknown_8458230[mpId][gender][2]);
+ break;
+ case 0x45:
+ StringCopy(dst, gUnknown_8458230[mpId][gender][1]);
+ break;
+ }
+}
+
+static s32 sub_811AF6C(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom * arg3)
+{
+ s32 result = 0;
+ u16 species = SPECIES_NONE;
+ s32 i;
+
+ switch (arg2[0])
+ {
+ case 0x41:
+ StringExpandPlaceholders(dst, gUnknown_8457CA4);
+ result = 1;
+ break;
+ case 0x45:
+ StringExpandPlaceholders(dst, gUnknown_8457CF8);
+ result = 1;
+ break;
+ case 0x44:
+ ConvertIntToDecimalStringN(arg3->field_58[0], sUnionRoomTrade.playerLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(arg3->field_58[1], gSpeciesNames[sUnionRoomTrade.playerSpecies]);
+ for (i = 0; i < 4; i++)
+ {
+ if (gRfuLinkStatus->partner[i].serialNo == 2)
+ {
+ ConvertIntToDecimalStringN(arg3->field_58[2], arg2[2], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(arg3->field_58[3], gSpeciesNames[arg2[1]]);
+ species = arg2[1];
+ break;
+ }
+ }
+ if (species == SPECIES_EGG)
+ {
+ StringCopy(dst, gUnknown_8457DB8);
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ {
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(i, arg3->field_58[i]);
+ }
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(dst, gUnknown_8457D44);
+ }
+ result = 1;
+ break;
+ case 0x48:
+ StringExpandPlaceholders(dst, gUnknown_8457C48);
+ result = 1;
+ break;
+ case 0x40:
+ StringExpandPlaceholders(dst, gUnknown_8457E0C);
+ result = 2;
+ break;
+ }
+
+ return result;
+}
+
+static bool32 sub_811B0A4(struct UnkStruct_URoom * arg0)
+{
+ if (gRecvCmds[0][1] != 0)
+ {
+ if (gRecvCmds[0][1] == 0x51)
+ {
+ arg0->field_98 = 0x51;
+ return TRUE;
+ }
+ else if (gRecvCmds[0][1] == 0x52)
+ {
+ arg0->field_98 = 0x52;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool32 InUnionRoom(void)
+{
+ return gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNION_ROOM)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(UNION_ROOM)
+ ? TRUE : FALSE;
+}
+
+static bool32 HasAtLeastTwoMonsOfLevel30OrLower(void)
+{
+ s32 i;
+ s32 count = 0;
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) <= 30
+ && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) != SPECIES_EGG)
+ {
+ count++;
+ }
+ }
+
+ if (count > 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void ResetUnionRoomTrade(struct UnionRoomTrade * arg0)
+{
+ arg0->field_0 = 0;
+ arg0->type = 0;
+ arg0->playerPersonality = 0;
+ arg0->playerSpecies = 0;
+ arg0->playerLevel = 0;
+ arg0->species = 0;
+ arg0->level = 0;
+ arg0->personality = 0;
+}
+
+void Script_ResetUnionRoomTrade(void)
+{
+ ResetUnionRoomTrade(&sUnionRoomTrade);
+}
+
+static bool32 RegisterTradeMonAndGetIsEgg(u32 monId, struct UnionRoomTrade * trade)
+{
+ trade->playerSpecies = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2);
+ trade->playerLevel = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ trade->playerPersonality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY);
+ if (trade->playerSpecies == SPECIES_EGG)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void RegisterTradeMon(u32 monId, struct UnionRoomTrade * trade)
+{
+ trade->species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES2);
+ trade->level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL);
+ trade->personality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY);
+}
+
+static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 multiplayerId)
+{
+ u16 response = 0;
+ u16 species;
+ u32 personality;
+ u32 cur_personality;
+ u16 cur_species;
+ s32 i;
+
+ // player
+ if (multiplayerId == 0)
+ {
+ species = trade->playerSpecies;
+ personality = trade->playerPersonality;
+ }
+ // partner
+ else
+ {
+ species = trade->species;
+ personality = trade->personality;
+ }
+
+ for (i = 0; i < gPlayerPartyCount; i++)
+ {
+ cur_personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ if (cur_personality != personality)
+ {
+ continue;
+ }
+ cur_species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ if (cur_species != species)
+ {
+ continue;
+ }
+ response = i;
+ break;
+ }
+
+ return response;
+}
+
+static void sub_811B258(bool32 arg0)
+{
+ sub_811A3F8();
+ ScriptContext2_Disable();
+ sub_80696F0();
+ gUnknown_203B058 = 0;
+ if (arg0)
+ {
+ sub_80FAFA0(sUnionRoomTrade.type, sUnionRoomTrade.playerSpecies, sUnionRoomTrade.playerLevel);
+ sub_80FB008(0x40, 0, 0);
+ }
+}
+
+static void sub_811B298(void)
+{
+ ScriptContext2_Enable();
+ ScriptFreezeObjectEvents();
+}
+
+static u8 sub_811B2A8(s32 linkPlayer)
+{
+ u8 retval = 0x80;
+ retval |= gLinkPlayers[linkPlayer].gender << 3;
+ retval |= gLinkPlayers[linkPlayer].trainerId & 7;
+ return retval;
+}
+
+static u8 sub_811B2D8(struct UnkStruct_URoom * arg0)
+{
+ u8 retVal = 0x80;
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (arg0->field_C->arr[i].unk18)
+ {
+ retVal |= arg0->field_C->arr[i].unk0.gname.playerGender << 3;
+ retVal |= arg0->field_C->arr[i].unk0.gname.unk_00.playerTrainerId[0] & 7;
+ break;
+ }
+ }
+
+ return retVal;
+}
+
+static void sub_811B31C(u8 *unused, struct UnkStruct_URoom * arg1, bool8 arg2)
+{
+ struct TrainerCard * trainerCard = &gTrainerCards[GetMultiplayerId() ^ 1];
+ s32 i;
+ s32 n;
+
+ DynamicPlaceholderTextUtil_Reset();
+
+ StringCopy(arg1->trainerCardStrbufs[0], gTrainerClassNames[sub_80447F0()]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->trainerCardStrbufs[0]);
+
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, trainerCard->playerName);
+
+ StringCopy(arg1->field_174, gUnknown_84594B0[trainerCard->stars]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->field_174);
+
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[2], trainerCard->caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->trainerCardStrbufs[2]);
+
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[3], trainerCard->playTimeHours, STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[4], trainerCard->playTimeMinutes, STR_CONV_MODE_LEADING_ZEROS, 2);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, arg1->trainerCardStrbufs[3]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, arg1->trainerCardStrbufs[4]);
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_84594C4);
+ StringCopy(gStringVar4, arg1->field_1A4);
+
+ n = trainerCard->linkBattleWins;
+ if (n > 9999)
+ {
+ n = 9999;
+ }
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[0], n, STR_CONV_MODE_LEFT_ALIGN, 4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, arg1->trainerCardStrbufs[0]);
+
+ n = trainerCard->linkBattleLosses;
+ if (n > 9999)
+ {
+ n = 9999;
+ }
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[1], n, STR_CONV_MODE_LEFT_ALIGN, 4);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, arg1->trainerCardStrbufs[1]);
+
+ ConvertIntToDecimalStringN(arg1->trainerCardStrbufs[2], trainerCard->pokemonTrades, STR_CONV_MODE_LEFT_ALIGN, 5);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, arg1->trainerCardStrbufs[2]);
+
+ for (i = 0; i < 4; i++)
+ {
+ CopyEasyChatWord(arg1->trainerCardStrbufs[i + 3], trainerCard->var_28[i]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(i + 4, arg1->trainerCardStrbufs[i + 3]);
+ }
+
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459504);
+ StringAppend(gStringVar4, arg1->field_1A4);
+
+ if (arg2 == TRUE)
+ {
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459588);
+ StringAppend(gStringVar4, arg1->field_1A4);
+ }
+ else if (arg2 == FALSE)
+ {
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arg1->field_1A4, gUnknown_8459580[trainerCard->gender]);
+ StringAppend(gStringVar4, arg1->field_1A4);
+ }
+}
diff --git a/src/union_room_battle.c b/src/union_room_battle.c
new file mode 100644
index 000000000..b75cc086d
--- /dev/null
+++ b/src/union_room_battle.c
@@ -0,0 +1,225 @@
+#include "global.h"
+#include "bg.h"
+#include "battle.h"
+#include "gpu_regs.h"
+#include "link.h"
+#include "malloc.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "strings.h"
+#include "text_window.h"
+#include "union_room.h"
+#include "window.h"
+
+struct UnkStruct_203B08C
+{
+ s16 a0;
+};
+
+static EWRAM_DATA struct UnkStruct_203B08C * gUnknown_203B08C = NULL;
+
+static const struct BgTemplate gUnknown_8457194[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31
+ }
+};
+
+static const struct WindowTemplate gUnknown_8457198[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 14,
+ .baseBlock = 0x014
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const u8 gUnknown_84571A8[] = {1, 2, 3};
+
+static void sub_811C04C(void)
+{
+ s32 i;
+ sub_81173C0(BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER);
+ for (i = 0; i < 2; i++)
+ {
+ gEnemyParty[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1];
+ }
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ ZeroMonData(&gPlayerParty[i]);
+ }
+ for (i = 0; i < 2; i++)
+ {
+ gPlayerParty[i] = gEnemyParty[i];
+ }
+ IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES);
+ CalculatePlayerPartyCount();
+ gTrainerBattleOpponent_A = TRAINER_OPPONENT_C00;
+ SetMainCallback2(CB2_InitBattle);
+}
+
+static void sub_811C0E0(u8 windowId, const u8 * str, u8 x, u8 y, s32 speed)
+{
+ s32 letterSpacing = 1;
+ s32 lineSpacing = 1;
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(gUnknown_84571A8[0]));
+ AddTextPrinterParameterized4(windowId, 3, x, y, letterSpacing, lineSpacing, gUnknown_84571A8, speed, str);
+}
+
+static bool32 sub_811C150(s16 * state, const u8 * str, s32 speed)
+{
+ switch (*state)
+ {
+ case 0:
+ DrawTextBorderOuter(0, 0x001, 0xD);
+ sub_811C0E0(0, str, 0, 2, speed);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+ (*state)++;
+ break;
+ case 1:
+ if (!IsTextPrinterActive(0))
+ {
+ *state = 0;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void sub_811C1B4(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_811C1C8(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
+ gUnknown_203B08C = AllocZeroed(sizeof(struct UnkStruct_203B08C));
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_8457194, 1);
+ ResetTempTileDataBuffers();
+ if (!InitWindows(gUnknown_8457198))
+ {
+ return;
+ }
+ DeactivateAllTextPrinters();
+ ClearWindowTilemap(0);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 0xF);
+ TextWindow_SetStdFrame0_WithPal(0, 1, 0xD0);
+ Menu_LoadStdPal();
+ SetVBlankCallback(sub_811C1B4);
+ gMain.state++;
+ break;
+ case 1:
+ if (sub_811C150(&gUnknown_203B08C->a0, gText_CommStandbyAwaitingOtherPlayer, 0))
+ {
+ gMain.state++;
+ }
+ break;
+ case 2:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ ShowBg(0);
+ gMain.state++;
+ break;
+ case 3:
+ if (!UpdatePaletteFade())
+ {
+ memset(gBlockSendBuffer, 0, 0x20);
+ if (gSelectedOrderFromParty[0] == -gSelectedOrderFromParty[1])
+ {
+ gBlockSendBuffer[0] = 0x52;
+ }
+ else
+ {
+ gBlockSendBuffer[0] = 0x51;
+ }
+ SendBlock(0, gBlockSendBuffer, 0x20);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ if (gBlockRecvBuffer[0][0] == 0x51 && gBlockRecvBuffer[1][0] == 0x51)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gMain.state = 50;
+ }
+ else
+ {
+ sub_800AAC0();
+ if (gBlockRecvBuffer[GetMultiplayerId()][0] == 0x52)
+ {
+ gMain.state = 6;
+ }
+ else
+ {
+ gMain.state = 8;
+ }
+ }
+ ResetBlockReceivedFlags();
+ }
+ break;
+ case 50:
+ if (!UpdatePaletteFade())
+ {
+ sub_800AB9C();
+ gMain.state++;
+ }
+ break;
+ case 51:
+ if (IsLinkTaskFinished())
+ {
+ SetMainCallback2(sub_811C04C);
+ }
+ break;
+ case 6:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gMain.state++;
+ }
+ break;
+ case 7:
+ if (sub_811C150(&gUnknown_203B08C->a0, gText_RefusedBattle, 1))
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ case 8:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gMain.state++;
+ }
+ break;
+ case 9:
+ if (sub_811C150(&gUnknown_203B08C->a0, gText_BattleWasRefused, 1))
+ {
+ SetMainCallback2(CB2_ReturnToField);
+ }
+ break;
+ }
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
diff --git a/src/union_room_message.c b/src/union_room_message.c
new file mode 100644
index 000000000..9ca5aa15b
--- /dev/null
+++ b/src/union_room_message.c
@@ -0,0 +1,543 @@
+#include "global.h"
+#include "union_room_message.h"
+#include "mevent_server.h"
+
+ALIGNED(4) const u8 gUnknown_84571AC[] = _("");
+ALIGNED(4) const u8 gUnknown_84571B0[] = _(":");
+ALIGNED(4) const u8 gUnknown_84571B4[] = _("{EXTRA 7}");
+ALIGNED(4) const u8 gUnknown_84571B8[] = _("Please start over from the beginning.");
+ALIGNED(4) const u8 gUnknown_84571E0[] = _("The WIRELESS COMMUNICATION\nSYSTEM search has been canceled.");
+ALIGNED(4) const u8 gUnref_845721C[] = _("ともだちからの れんらくを\nまっています");
+ALIGNED(4) const u8 gUnknown_8457234[] = _("{STR_VAR_1}! Awaiting\ncommunication from another player.");
+ALIGNED(4) const u8 gUnknown_8457264[] = _("{STR_VAR_1}! Awaiting link!\nPress START when everyone's ready.");
+
+ALIGNED(4) const u8 gJPText_SingleBattle[] = _("シングルバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_DoubleBattle[] = _("ダブルバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_MultiBattle[] = _("マルチバトルを かいさいする");
+ALIGNED(4) const u8 gJPText_TradePokemon[] = _("ポケモンこうかんを かいさいする");
+ALIGNED(4) const u8 gJPText_Chat[] = _("チャットを かいさいする");
+ALIGNED(4) const u8 gJPText_DistWonderCard[] = _("ふしぎなカードをくばる");
+ALIGNED(4) const u8 gJPText_DistWonderNews[] = _("ふしぎなニュースをくばる");
+ALIGNED(4) const u8 unref_text_union_room_1[] = _("ふしぎなできごとを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldPokemonJump[] = _("なわとびを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldBerryCrush[] = _("きのみマッシャーを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldBerryPicking[] = _("きのみどりを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldSpinTrade[] = _("ぐるぐるこうかんを かいさいする");
+ALIGNED(4) const u8 gJPText_HoldSpinShop[] = _("ぐるぐるショップを かいさいする");
+
+const u8 *const unref_text_ptrs_union_room_0[] = {
+ gJPText_SingleBattle,
+ gJPText_DoubleBattle,
+ gJPText_MultiBattle,
+ gJPText_TradePokemon,
+ gJPText_Chat,
+ gJPText_DistWonderCard,
+ gJPText_DistWonderNews,
+ gJPText_DistWonderCard,
+ gJPText_HoldPokemonJump,
+ gJPText_HoldBerryCrush,
+ gJPText_HoldBerryPicking,
+ gJPText_HoldBerryPicking,
+ gJPText_HoldSpinTrade,
+ gJPText_HoldSpinShop
+};
+
+const u8 gText_1PlayerNeeded[] = _("1 player\nneeded.");
+const u8 gText_2PlayersNeeded[] = _("2 players\nneeded.");
+const u8 gText_3PlayersNeeded[] = _("3 players\nneeded.");
+const u8 gText_4PlayersNeeded[] = _("あと4にん\nひつよう");
+const u8 gText_2PlayerMode[] = _("2-PLAYER\nMODE");
+const u8 gText_3PlayerMode[] = _("3-PLAYER\nMODE");
+const u8 gText_4PlayerMode[] = _("4-PLAYER\nMODE");
+const u8 gText_5PlayerMode[] = _("5-PLAYER\nMODE");
+
+const u8 *const gUnknown_845742C[][5] = {
+ {
+ gText_1PlayerNeeded,
+ gText_2PlayerMode
+ }, {
+ gText_3PlayersNeeded,
+ gText_2PlayersNeeded,
+ gText_1PlayerNeeded,
+ gText_4PlayerMode
+ }, {
+ gText_1PlayerNeeded,
+ gText_2PlayerMode,
+ gText_3PlayerMode,
+ gText_4PlayerMode,
+ gText_5PlayerMode
+ }, {
+ gText_2PlayersNeeded,
+ gText_1PlayerNeeded,
+ gText_3PlayerMode,
+ gText_4PlayerMode,
+ gText_5PlayerMode
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_845747C[] = _("{B_BUTTON}CANCEL");
+ALIGNED(4) const u8 unref_text_union_room_2[] = _("ため\nさんかしゃ ぼしゅうちゅう です!");
+ALIGNED(4) const u8 gUnknown_84574A0[] = _("{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?");
+ALIGNED(4) const u8 gUnknown_84574C4[] = _("{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?");
+ALIGNED(4) const u8 gUnknown_84574EC[] = _("{STR_VAR_2} contacted you.\nAdd to the members?");
+ALIGNED(4) const u8 gUnknown_8457514[] = _("{STR_VAR_1}!\nAre these members OK?");
+ALIGNED(4) const u8 gUnknown_8457530[] = _("Cancel {STR_VAR_1} MODE\nwith these members?");
+ALIGNED(4) const u8 gUnknown_8457554[] = _("An “OK” was sent\nto {STR_VAR_1}.");
+
+ALIGNED(4) const u8 gUnknown_845756C[] = _("The other TRAINER doesn't appear\nto be available now…\p");
+ALIGNED(4) const u8 gUnknown_84575A4[] = _("You can't transmit with a TRAINER\nwho is too far away.\p");
+ALIGNED(4) const u8 gUnknown_84575DC[] = _("The other TRAINER(S) is/are not\nready yet.\p");
+
+const u8 *const gUnknown_8457608[] = {
+ gUnknown_84575A4,
+ gUnknown_84575DC
+};
+
+ALIGNED(4) const u8 gUnknown_8457610[] = _("The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 90}");
+ALIGNED(4) const u8 gUnknown_8457644[] = _("There is a member who can no\nlonger remain available.\p");
+
+const u8 *const gUnknown_845767C[] = {
+ gUnknown_845756C,
+ gUnknown_8457644
+};
+
+ALIGNED(4) const u8 gUnknown_8457684[] = _("The other TRAINER appears\nunavailable…\p");
+ALIGNED(4) const u8 gUnknown_84576AC[] = _("{STR_VAR_1} sent back an “OK”!");
+ALIGNED(4) const u8 gUnknown_84576C4[] = _("{STR_VAR_1} OK'd your registration as\na member.");
+ALIGNED(4) const u8 gUnknown_84576EC[] = _("{STR_VAR_1} replied, “No…”\p");
+ALIGNED(4) const u8 gUnknown_8457700[] = _("{STR_VAR_1}!\nAwaiting other members!");
+ALIGNED(4) const u8 gUnknown_845771C[] = _("Quit being a member?");
+ALIGNED(4) const u8 gUnknown_8457734[] = _("You stopped being a member.\p");
+
+const u8 *const gUnknown_8457754[] = {
+ NULL,
+ gUnknown_8457644,
+ gUnknown_8457684,
+ NULL,
+ NULL,
+ NULL,
+ gUnknown_84576EC,
+ NULL,
+ NULL,
+ gUnknown_8457734
+};
+
+ALIGNED(4) const u8 gUnknown_845777C[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been established.");
+ALIGNED(4) const u8 gUnknown_84577BC[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…");
+ALIGNED(4) const u8 gUnknown_84577F8[] = _("The link with your friend has been\ndropped…");
+ALIGNED(4) const u8 gUnknown_8457824[] = _("{STR_VAR_1} replied, “No…”");
+
+const u8 *const gUnknown_8457838[] = {
+ NULL,
+ gUnknown_84577F8,
+ gUnknown_84577F8,
+ NULL,
+ NULL,
+ NULL,
+ gUnknown_8457824,
+ NULL,
+ NULL,
+ NULL
+};
+
+ALIGNED(4) const u8 gUnknown_8457860[] = _("Do you want the {STR_VAR_2}\nMODE?");
+ALIGNED(4) const u8 gUnknown_845787C[] = _("Do you want the {STR_VAR_2}\nMODE?");
+
+const u8 *const gUnknown_8457898[] = {
+ gUnknown_8457860,
+ gUnknown_845787C
+};
+
+ALIGNED(4) const u8 gUnknown_84578A0[] = _("はなしかけています…\nしょうしょう おまちください");
+ALIGNED(4) const u8 gUnknown_84578BC[] = _("Awaiting {STR_VAR_1}'s response about\nthe trade…");
+ALIGNED(4) const u8 gUnknown_84578E4[] = _("Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+ALIGNED(4) const u8 gUnknown_8457950[] = _("Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+ALIGNED(4) const u8 gUnknown_84579BC[] = _("Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
+
+const u8 *const gUnknown_8457A34[] = {
+ gUnknown_84578E4,
+ gUnknown_8457950,
+ gUnknown_84579BC
+};
+
+ALIGNED(4) const u8 gUnknown_8457A40[] = _("Hiya! Is there something that you\nwanted to do?");
+ALIGNED(4) const u8 gUnknown_8457A70[] = _("Hello!\nWould you like to do something?");
+ALIGNED(4) const u8 gUnknown_8457A98[] = _("{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?");
+ALIGNED(4) const u8 gUnknown_8457AD0[] = _("{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?");
+
+const u8 *const gUnknown_8457B04[][2] = {
+ {
+ gUnknown_8457A40,
+ gUnknown_8457A70
+ }, {
+ gUnknown_8457A98,
+ gUnknown_8457AD0
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_8457B14[] = _("Want to do something?");
+ALIGNED(4) const u8 gUnknown_8457B2C[] = _("Would you like to do something?");
+ALIGNED(4) const u8 gUnknown_8457B4C[] = _("{STR_VAR_1}: What would you like to\ndo now?");
+ALIGNED(4) const u8 gUnknown_8457B70[] = _("{STR_VAR_1}‘また なにかする?");
+
+const u8 *const gUnknown_8457B80[] = {
+ gUnknown_8457B14,
+ gUnknown_8457B2C,
+ gUnknown_8457B4C,
+ gUnknown_8457B4C
+};
+
+ALIGNED(4) const u8 gUnknown_8457B90[] = _("Somebody has contacted you.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8457BA0[] = _("{STR_VAR_1} has contacted you.{PAUSE 60}");
+
+const u8 *const gUnknown_8457BCC[] = {
+ gUnknown_8457B90,
+ gUnknown_8457BA0
+};
+
+ALIGNED(4) const u8 gUnknown_8457BD4[] = _("Awaiting a response from\nthe other TRAINER…");
+ALIGNED(4) const u8 gUnknown_8457C00[] = _("Awaiting a response from\n{STR_VAR_1}…");
+
+const u8 *const gUnknown_8457C20[] = {
+ gUnknown_8457BD4,
+ gUnknown_8457C00
+};
+
+ALIGNED(4) const u8 gUnknown_8457C28[] = _("あいての ていあんを まっています\nビーボタンで キャンセル");
+ALIGNED(4) const u8 gUnknown_8457C48[] = _("The other TRAINER showed\nyou their TRAINER CARD.\pWould you like to show your\nTRAINER CARD?");
+ALIGNED(4) const u8 gUnknown_8457CA4[] = _("The other TRAINER challenges you\nto battle.\pWill you accept the battle\nchallenge?");
+ALIGNED(4) const u8 gUnknown_8457CF8[] = _("The other TRAINER invites you\nto chat.\pWill you accept the chat\ninvitation?");
+ALIGNED(4) const u8 gUnknown_8457D44[] = _("There is an offer to trade your\nregistered Lv. {DYNAMIC 0} {DYNAMIC 1}\pin exchange for a\nLv. {DYNAMIC 2} {DYNAMIC 3}.\pWill you accept this trade\noffer?");
+ALIGNED(4) const u8 gUnknown_8457DB8[] = _("There is an offer to trade your\nregistered EGG.\lWill you accept this trade offer?");
+ALIGNED(4) const u8 gUnknown_8457E0C[] = _("The chat has been dropped.\p");
+ALIGNED(4) const u8 gUnknown_8457E28[] = _("You declined the offer.\p");
+ALIGNED(4) const u8 gUnknown_8457E44[] = _("You declined the offer.\p");
+ALIGNED(4) const u8 gUnknown_8457E60[] = _("The chat was ended.\p");
+
+const u8 *const gUnknown_8457E78[] = {
+ gUnknown_8457C48,
+ gUnknown_8457CA4,
+ gUnknown_8457CF8,
+ gUnknown_8457D44
+};
+
+ALIGNED(4) const u8 gUnknown_8457E88[] = _("Oh, hey! We're in a chat right now.\nWant to join us?");
+ALIGNED(4) const u8 gUnknown_8457EC0[] = _("{STR_VAR_1}: Hey, {PLAYER}!\nWe're having a chat right now.\lWant to join us?");
+ALIGNED(4) const u8 gUnknown_8457F00[] = _("Oh, hi! We're having a chat now.\nWould you like to join us?");
+ALIGNED(4) const u8 gUnknown_8457F3C[] = _("{STR_VAR_1}: Oh, hi, {PLAYER}!\nWe're having a chat now.\lWould you like to join us?");
+
+const u8 *const gUnknown_8457F80[][2] = {
+ {
+ gUnknown_8457E88,
+ gUnknown_8457F00
+ }, {
+ gUnknown_8457EC0,
+ gUnknown_8457F3C
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_8457F90[] = _("……\nThe TRAINER appears to be busy…\p");
+ALIGNED(4) const u8 gUnknown_8457FB4[] = _("A battle, huh?\nAll right, just give me some time.");
+ALIGNED(4) const u8 gUnknown_8457FE8[] = _("You want to chat, huh?\nSure, just wait a little.");
+ALIGNED(4) const u8 gUnknown_845801C[] = _("Sure thing! As my “Greetings,”\nhere's my TRAINER CARD.");
+ALIGNED(4) const u8 gUnknown_8458054[] = _("A battle? Of course, but I need\ntime to get ready.");
+ALIGNED(4) const u8 gUnknown_8458088[] = _("Did you want to chat?\nOkay, but please wait a moment.");
+ALIGNED(4) const u8 gUnknown_84580C0[] = _("As my introduction, I'll show you\nmy TRAINER CARD.");
+
+const u8 *const gUnknown_84580F4[][4] = {
+ {
+ gUnknown_8457FB4,
+ gUnknown_8457FE8,
+ NULL,
+ gUnknown_845801C
+ }, {
+ gUnknown_8458054,
+ gUnknown_8458088,
+ NULL,
+ gUnknown_84580C0
+ }
+};
+
+ALIGNED(4) const u8 gUnref_8458104[] = _("チャットだね!\nわかった ちょっと まってて!");
+ALIGNED(4) const u8 gUnknown_845812C[] = _("Thanks for waiting!\nLet's get our battle started!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8458164[] = _("All right!\nLet's chat!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8458180[] = _("Sorry I made you wait!\nLet's get started!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_84581B0[] = _("Sorry I made you wait!\nLet's chat.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_84581D8[] = _("The trade will be started.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_84581F8[] = _("The battle will be started.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8458218[] = _("Entering the chat…{PAUSE 60}");
+
+const u8 *const gUnknown_8458230[][2][3] = {
+ {
+ {
+ gUnknown_84581F8,
+ gUnknown_8458218,
+ gUnknown_84581D8
+ }, {
+ gUnknown_84581F8,
+ gUnknown_8458218,
+ gUnknown_84581D8
+ }
+ }, {
+ {
+ gUnknown_845812C,
+ gUnknown_8458164,
+ gUnknown_84581D8
+ }, {
+ gUnknown_8458180,
+ gUnknown_84581B0,
+ gUnknown_84581D8
+ }
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_8458260[] = _("Sorry! My POKéMON don't seem to\nbe feeling too well right now.\lLet me battle you another time.\p");
+ALIGNED(4) const u8 gUnknown_84582C0[] = _("I'm terribly sorry, but my POKéMON\naren't feeling well…\pLet's battle another time.\p");
+
+const u8 *const gUnknown_8458314[] = {
+ gUnknown_8458260,
+ gUnknown_84582C0
+};
+
+ALIGNED(4) const u8 gUnknown_845831C[] = _("Huh? My TRAINER CARD…\nWhere'd it go now?\lSorry! I'll show you another time!\p");
+ALIGNED(4) const u8 gUnknown_845836C[] = _("Oh? Now where did I put my\nTRAINER CARD?…\lSorry! I'll show you later!\p");
+
+const u8 *const gUnknown_84583B4[] = {
+ gUnknown_845831C,
+ gUnknown_845836C
+};
+
+ALIGNED(4) const u8 gUnknown_84583BC[] = _("If you want to do something with\nme, just give me a shout!\p");
+ALIGNED(4) const u8 gUnknown_84583F8[] = _("If you want to do something with\nme, don't be shy.\p");
+
+const u8 *const gUnknown_845842C[] = {
+ gUnknown_84583BC,
+ gUnknown_84583F8
+};
+
+ALIGNED(4) const u8 gUnknown_8458434[] = _("Whoops! Sorry, but I have to do\nsomething else.\lAnother time, okay?\p");
+ALIGNED(4) const u8 gUnknown_845847C[] = _("If you want to battle, you need\ntwo POKéMON that are below\lLv. 30.\p");
+ALIGNED(4) const u8 gUnknown_84584C0[] = _("For a battle, you need two\nPOKéMON that are below Lv. 30.\p");
+ALIGNED(4) const u8 gUnknown_84584FC[] = _("Oh, all right.\nCome see me anytime, okay?\p");
+ALIGNED(4) const u8 gUnknown_8458528[] = _("Oh…\nPlease come by anytime.\p");
+
+const u8 *const gUnknown_8458548[] = {
+ gUnknown_84584FC,
+ gUnknown_8458528
+};
+
+ALIGNED(4) const u8 gUnknown_8458550[] = _("Oh, sorry!\nI just can't right this instant.\lLet's chat another time.\p");
+ALIGNED(4) const u8 gUnknown_8458598[] = _("Oh, I'm sorry.\nI have too much to do right now.\lLet's chat some other time.\p");
+
+const u8 *const gUnknown_84585E8[] = {
+ gUnknown_8458550,
+ gUnknown_8458598
+};
+
+ALIGNED(4) const u8 gUnknown_84585F0[] = _("Whoa!\nI can tell you're pretty tough!\p");
+ALIGNED(4) const u8 gUnknown_8458618[] = _("You used that move?\nThat's good strategy!\p");
+ALIGNED(4) const u8 gUnknown_8458644[] = _("Way to go!\nThat was an eye-opener!\p");
+ALIGNED(4) const u8 gUnknown_8458668[] = _("Oh! How could you use that\nPOKéMON in that situation?\p");
+ALIGNED(4) const u8 gUnknown_84586A0[] = _("That POKéMON…\nIt's been raised really well!\p");
+ALIGNED(4) const u8 gUnknown_84586D0[] = _("That's it!\nThis is the right move now!\p");
+ALIGNED(4) const u8 gUnknown_84586F8[] = _("That's awesome!\nYou can battle that way?\p");
+ALIGNED(4) const u8 gUnknown_8458724[] = _("You have exquisite timing for\nswitching POKéMON!\p");
+
+const u8 *const gUnknown_8458758[][4] = {
+ {
+ gUnknown_84585F0,
+ gUnknown_8458618,
+ gUnknown_8458644,
+ gUnknown_8458668
+ }, {
+ gUnknown_84586A0,
+ gUnknown_84586D0,
+ gUnknown_84586F8,
+ gUnknown_8458724
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_8458778[] = _("Oh, I see!\nThis is educational!\p");
+ALIGNED(4) const u8 gUnknown_845879C[] = _("Don't say anything funny anymore!\nI'm sore from laughing!\p");
+ALIGNED(4) const u8 gUnknown_84587D8[] = _("Oh?\nSomething like that happened.\p");
+ALIGNED(4) const u8 gUnknown_84587FC[] = _("Hmhm… What?\nSo is this what you're saying?\p");
+ALIGNED(4) const u8 gUnknown_8458828[] = _("Is that right?\nI didn't know that.\p");
+ALIGNED(4) const u8 gUnknown_845884C[] = _("Ahaha!\nWhat is that about?\p");
+ALIGNED(4) const u8 gUnknown_8458868[] = _("Yes, that's exactly it!\nThat's what I meant.\p");
+ALIGNED(4) const u8 gUnknown_8458898[] = _("In other words…\nYes! That's right!\p");
+
+const u8 *const gUnknown_84588BC[][4] = {
+ {
+ gUnknown_8458778,
+ gUnknown_845879C,
+ gUnknown_84587D8,
+ gUnknown_84587FC
+ }, {
+ gUnknown_8458828,
+ gUnknown_845884C,
+ gUnknown_8458868,
+ gUnknown_8458898
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_84588DC[] = _("I'm just showing my TRAINER CARD\nas my way of greeting.\p");
+ALIGNED(4) const u8 gUnknown_8458918[] = _("I hope I get to know you better!\p");
+ALIGNED(4) const u8 gUnknown_845893C[] = _("We're showing each other our\nTRAINER CARDS to get acquainted.\p");
+ALIGNED(4) const u8 gUnknown_845897C[] = _("Glad to meet you.\nPlease don't be a stranger!\p");
+
+const u8 *const gUnknown_84589AC[][2] = {
+ {
+ gUnknown_84588DC,
+ gUnknown_8458918
+ }, {
+ gUnknown_845893C,
+ gUnknown_845897C
+ }
+};
+
+ALIGNED(4) const u8 gUnknown_84589BC[] = _("Yeahah!\nI really wanted this POKéMON!\p");
+ALIGNED(4) const u8 gUnknown_84589E4[] = _("Finally, a trade got me that\nPOKéMON I'd wanted a long time.\p");
+ALIGNED(4) const u8 gUnknown_8458A24[] = _("I'm trading POKéMON right now.\p");
+ALIGNED(4) const u8 gUnknown_8458A44[] = _("I finally got that POKéMON I\nwanted in a trade!\p");
+
+const u8 *const gUnknown_8458A78[][4] = {
+ {
+ gUnknown_84589BC,
+ gUnknown_84589E4
+ }, {
+ gUnknown_8458A24,
+ gUnknown_8458A44
+ }
+};
+
+const u8 gUnknown_8458A98[] = _("{STR_VAR_1} checked the\nTRADING BOARD.\p");
+ALIGNED(4) const u8 gUnknown_8458AB8[] = _("Welcome to the TRADING BOARD.\pYou may register your POKéMON\nand offer it up for a trade.\pWould you like to register one of\nyour POKéMON?");
+ALIGNED(4) const u8 gUnknown_8458B44[] = _("This TRADING BOARD is used for\noffering a POKéMON for a trade.\pAll you need to do is register a\nPOKéMON for a trade.\pAnother TRAINER may offer a party\nPOKéMON in return for the trade.\pWe hope you will register POKéMON\nand trade them with many, many\lother TRAINERS.\pWould you like to register one of\nyour POKéMON?");
+ALIGNED(4) const u8 gUnref_ThankYouForComing_JP[] = _("こうかんけいじばん の とうろくが\nかんりょう しました\pごりよう ありがとう\nございました!\p");
+ALIGNED(4) const u8 gUnref_NoOneRegisteredMon[] = _("けいじばんに だれも ポケモンを\nとうろく していません\p\n");
+ALIGNED(4) const u8 gUnknown_8458CD4[] = _("Please choose the type of POKéMON\nthat you would like in the trade.\n");
+ALIGNED(4) const u8 gUnknown_8458D1C[] = _("Which of your party POKéMON will\nyou offer in trade?\p");
+ALIGNED(4) const u8 gUnknown_8458D54[] = _("Registration has been canceled.\p");
+ALIGNED(4) const u8 gUnknown_8458D78[] = _("Registration has been completed.\p");
+ALIGNED(4) const u8 gUnknown_8458D9C[] = _("The trade has been canceled.\p");
+ALIGNED(4) const u8 gUnknown_8458DBC[] = _("Cancel the registration of your\nLv. {STR_VAR_2} {STR_VAR_1}?");
+ALIGNED(4) const u8 gUnknown_8458DE8[] = _("Cancel the registration of your\nEGG?");
+ALIGNED(4) const u8 gUnknown_8458E10[] = _("The registration has been canceled.\p");
+ALIGNED(4) const u8 gUnref_ShowPeopleWhoLikeYou_JP[] = _("こうかんを きぼうしているひとを\nひょうじします");
+ALIGNED(4) const u8 gUnref_PleaseChooseTrainerYouWant[] = _("こうかん したい トレーナーを\nえらんで ください");
+ALIGNED(4) const u8 gUnknown_8458E70[] = _("Would you like to ask {STR_VAR_1} to\nmake a trade?");
+ALIGNED(4) const u8 gUnref_ImWaitingForAnswer[] = _("……\nあいての へんじを まっています");
+ALIGNED(4) const u8 gUnref_MonSentOutIsNotRegistered[] = _("あなたが こうかんにだす\nポケモンが とうろくされていません\p");
+ALIGNED(4) const u8 gUnknown_8458ED0[] = _("You don't have a {STR_VAR_2}-type\nPOKéMON that {STR_VAR_1} wants.\p");
+ALIGNED(4) const u8 gUnknown_8458F04[] = _("You don't have an EGG that\n{STR_VAR_1} wants.\p");
+ALIGNED(4) const u8 gUnknown_8458F2C[] = _("{STR_VAR_1} can't make a trade for\nyour POKéMON right now.\p");
+ALIGNED(4) const u8 gUnknown_8458F60[] = _("You can't make a trade for\n{STR_VAR_1}'s POKéMON right now.\p");
+
+const u8 *const gUnknown_8458F94[] = {
+ gUnknown_8458F2C,
+ gUnknown_8458F60
+};
+
+ALIGNED(4) const u8 gUnknown_8458F9C[] = _("Your trade offer was rejected.\p");
+ALIGNED(4) const u8 gUnknown_8458FBC[] = _("EGG TRADE");
+ALIGNED(4) const u8 gUnknown_8458FC8[] = _("{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL");
+ALIGNED(4) const u8 gUnknown_8458FE4[] = _("Please choose a TRAINER.");
+ALIGNED(4) const u8 gUnknown_8459000[] = _("Please choose a TRAINER for\na SINGLE BATTLE.");
+ALIGNED(4) const u8 gUnknown_8459030[] = _("Please choose a TRAINER for\na DOUBLE BATTLE.");
+ALIGNED(4) const u8 gUnknown_8459060[] = _("Please choose the LEADER\nfor a MULTI BATTLE.");
+ALIGNED(4) const u8 gUnknown_8459090[] = _("Please choose the TRAINER to\ntrade with.");
+ALIGNED(4) const u8 gUnknown_84590BC[] = _("Please choose the TRAINER who is\nsharing WONDER CARDS.");
+ALIGNED(4) const u8 gUnknown_84590F4[] = _("Please choose the TRAINER who is\nsharing WONDER NEWS.");
+ALIGNED(4) const u8 gUnknown_845912C[] = _("Jump with mini POKéMON!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_8459160[] = _("BERRY CRUSH!\nPlease choose the LEADER.");
+ALIGNED(4) const u8 gUnknown_8459188[] = _("DODRIO BERRY-PICKING!\nPlease choose the LEADER.");
+
+const u8 *const gUnknown_84591B8[] = {
+ gUnknown_8459000,
+ gUnknown_8459030,
+ gUnknown_8459060,
+ gUnknown_8459090,
+ gUnknown_845912C,
+ gUnknown_8459160,
+ gUnknown_8459188,
+ gUnknown_84590BC,
+ gUnknown_84590F4
+};
+
+ALIGNED(4) const u8 gUnknown_84591DC[] = _("Searching for a WIRELESS\nCOMMUNICATION SYSTEM. Wait...");
+ALIGNED(4) const u8 gUnref_NeedAtLeast2InDblBtl[] = _("ダブルバトルでは 2ひき いじょうの\nポケモンが ひつようです\p");
+ALIGNED(4) const u8 gUnknown_8459238[] = _("Awaiting {STR_VAR_1}'s response…");
+ALIGNED(4) const u8 gUnknown_8459250[] = _("{STR_VAR_1} has been asked to register\nyou as a member. Please wait.");
+ALIGNED(4) const u8 gUnknown_845928C[] = _("Awaiting a response from the\nWIRELESS COMMUNICATION SYSTEM.");
+ALIGNED(4) const u8 gUnref_PlsWaitLittleWHile[] = _("ほかの さんかしゃが そろうまで\nしょうしょう おまちください");
+ALIGNED(4) const u8 gUnknown_84592E8[] = _("No CARDS appear to be shared \nright now.");
+ALIGNED(4) const u8 gUnknown_8459314[] = _("No NEWS appears to be shared\nright now.");
+
+const u8 *const gUnknown_845933C[] = {
+ gUnknown_84592E8,
+ gUnknown_8459314
+};
+
+ALIGNED(4) const u8 gUnknown_8459344[] = _("BATTLE");
+ALIGNED(4) const u8 gUnknown_845934C[] = _("CHAT");
+ALIGNED(4) const u8 gUnknown_8459354[] = _("GREETINGS");
+ALIGNED(4) const u8 gUnknown_8459360[] = _("EXIT");
+ALIGNED(4) const u8 gUnknown_8459368[] = _("EXIT");
+ALIGNED(4) const u8 gUnknown_8459370[] = _("INFO");
+ALIGNED(4) const u8 gUnknown_8459378[] = _("NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.");
+ALIGNED(4) const u8 gUnknown_8459394[] = _("SINGLE BATTLE");
+ALIGNED(4) const u8 gUnknown_84593A4[] = _("DOUBLE BATTLE");
+ALIGNED(4) const u8 gUnknown_84593B4[] = _("MULTI BATTLE");
+ALIGNED(4) const u8 gUnknown_84593C4[] = _("POKéMON TRADES");
+ALIGNED(4) const u8 gUnknown_84593D4[] = _("CHAT");
+ALIGNED(4) const u8 gUnknown_84593DC[] = _("CARDS");
+ALIGNED(4) const u8 gUnknown_84593E4[] = _("WONDER CARDS");
+ALIGNED(4) const u8 gUnknown_84593F4[] = _("WONDER NEWS");
+ALIGNED(4) const u8 gUnknown_8459400[] = _("POKéMON JUMP");
+ALIGNED(4) const u8 gUnknown_8459410[] = _("BERRY CRUSH");
+ALIGNED(4) const u8 gUnknown_845941C[] = _("BERRY-PICKING");
+ALIGNED(4) const u8 gUnknown_845942C[] = _("SEARCH");
+ALIGNED(4) const u8 gUnknown_8459434[] = _("ぐるぐるこうかん");
+ALIGNED(4) const u8 gUnknown_8459440[] = _("アイテムトレード");
+ALIGNED(4) const u8 gUnknown_845944C[] = _("It's a NORMAL CARD.");
+ALIGNED(4) const u8 gUnknown_8459460[] = _("It's a BRONZE CARD!");
+ALIGNED(4) const u8 gUnknown_8459474[] = _("It's a COPPER CARD!");
+ALIGNED(4) const u8 gUnknown_8459488[] = _("It's a SILVER CARD!");
+ALIGNED(4) const u8 gUnknown_845949C[] = _("It's a GOLD CARD!");
+
+const u8 *const gUnknown_84594B0[] = {
+ gUnknown_845944C,
+ gUnknown_8459460,
+ gUnknown_8459474,
+ gUnknown_8459488,
+ gUnknown_845949C
+};
+
+ALIGNED(4) const u8 gUnknown_84594C4[] = _("This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p");
+ALIGNED(4) const u8 gUnknown_8459504[] = _("BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p");
+ALIGNED(4) const u8 gUnknown_8459544[] = _("{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_8459564[] = _("{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}");
+
+const u8 *const gUnknown_8459580[] = {
+ gUnknown_8459544,
+ gUnknown_8459564
+};
+
+ALIGNED(4) const u8 gUnknown_8459588[] = _("Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}");
+ALIGNED(4) const u8 gUnknown_84595B0[] = _("Canceled reading the Card.");
+
+const struct mevent_client_cmd gUnknown_84595CC[] = {
+ CLI_RECEIVE(0x15),
+ CLI_RECVBUF,
+ CLI_SENDALL,
+ CLI_RETURN(0x0e)
+};
+
+const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[] = {
+ SRV_SEND(0x20, gUnknown_84595CC),
+ SRV_WAITSND,
+ SRV_SENDSTR(0x1b, gUnknown_84595B0),
+ SRV_WAITSND,
+ SRV_RECV(0x14),
+ SRV_RETURN(0x09)
+};
diff --git a/src/vs_seeker.c b/src/vs_seeker.c
index b88a7f15c..b35b6143e 100644
--- a/src/vs_seeker.c
+++ b/src/vs_seeker.c
@@ -1273,7 +1273,7 @@ static u8 GetRematchableTrainerLocalId(void)
static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script)
{
- npc_sync_anim_pause_bits(&gObjectEvents[trainerInfo->objectEventId]);
+ UnfreezeObjectEvent(&gObjectEvents[trainerInfo->objectEventId]);
ScriptMovement_StartObjectMovementScript(trainerInfo->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, script);
}
diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c
index 1c355c3ba..9be2823aa 100644
--- a/src/wireless_communication_status_screen.c
+++ b/src/wireless_communication_status_screen.c
@@ -364,7 +364,7 @@ void sub_814F65C(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 palIdx)
u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
{
- u32 r8 = unk20->unk.field_0.unk_0a_0;
+ u32 r8 = unk20->unk.gname.unk_0a_0;
s32 i, j, k;
for (i = 0; i < NELEMS(gUnknown_846FAC0); i++)
@@ -376,7 +376,7 @@ u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
k = 0;
for (j = 0; j < 4; j++)
{
- if (unk20->unk.field_0.unk_04[j] != 0) k++;
+ if (unk20->unk.gname.unk_04[j] != 0) k++;
}
k++;
arg1[gUnknown_846FAC0[i][1]] += k;
diff --git a/sym_bss.txt b/sym_bss.txt
index 16c5758fc..5651e3366 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -76,17 +76,10 @@ gUnknown_3000FE8: @ 3000FE8
.include "src/link_rfu_3.o"
.align 2
.include "src/quest_log.o"
-
.align 2
-gUnknown_3002024: @ 3002024
- .space 0x4
-
-gUnknown_3002028: @ 3002028
- .space 0x4
-
-gUnknown_300202C: @ 300202C
- .space 0x4
+ .include "src/union_room.o"
+ .align 2
gUnknown_3002030: @ 3002030
.space 0x8
diff --git a/sym_common.txt b/sym_common.txt
index 74e642bc2..d71df5ce2 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -38,10 +38,10 @@ gFieldCallback2: @ 3005024
gHeldKeyCodeToSend: @ 3005028
.space 0x4
-gUnknown_300502C: @ 300502C
+gLocalLinkPlayerId: @ 300502C
.space 0x4
-gUnknown_3005030: @ 3005030
+gFieldLinkPlayerCount: @ 3005030
.space 0x10
.align 2
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 9ceae4842..3ab110c7b 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -350,41 +350,14 @@ gUnknown_203ACF0: @ 203ACF0
.include "src/menu.o"
.align 2
.include "src/quest_log.o"
-
.align 2
-gUnknown_203B04C: @ 203B04C
- .space 0xC
-
-gUnknown_203B058: @ 203B058
- .space 0x1
-
-gUnknown_203B059: @ 203B059
- .space 0x3
-
-gUnknown_203B05C: @ 203B05C
- .space 0x8
-
-gUnknown_203B064: @ 203B064
- .space 0x4
-
-gUnionRoomOfferedSpecies: @ 203B068
- .space 0x2
-
-gUnionRoomRequestedMonType: @ 203B06A
- .space 0x2
-
-gUnknown_203B06C: @ 203B06C
- .space 0x18
-
-gUnknown_203B084: @ 203B084
- .space 0x4
-
-gUnknown_203B088: @ 203B088
- .space 0x4
-
-gUnknown_203B08C: @ 203B08C
- .space 0x4
+ .include "src/union_room.o"
+ .align 2
+ .include "src/rfu_union_tool.o"
+ .align 2
+ .include "src/union_room_battle.o"
+ .align 2
gUnknown_203B090: @ 203B090
.space 0x4