diff options
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 |