diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-20 20:00:13 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-20 20:00:13 -0400 |
commit | 7abbe42763835f43dc2b08f8292a4ef83c50c5e1 (patch) | |
tree | 97ab8dfe4f6208cda7c8d9600b3dd1bad610dee1 | |
parent | 12f3ceb0f7fb0ed580fa75bbba634307ca463d52 (diff) |
Finish item_use
-rw-r--r-- | asm/berry_crush.s | 2 | ||||
-rw-r--r-- | asm/berry_pouch.s | 6 | ||||
-rw-r--r-- | asm/item_menu.s | 12 | ||||
-rw-r--r-- | asm/item_use.s | 1506 | ||||
-rw-r--r-- | asm/party_menu.s | 2 | ||||
-rw-r--r-- | asm/start_menu.s | 4 | ||||
-rw-r--r-- | include/berry_pouch.h | 5 | ||||
-rw-r--r-- | include/constants/flags.h | 4 | ||||
-rw-r--r-- | include/constants/vars.h | 4 | ||||
-rw-r--r-- | include/field_effect.h | 1 | ||||
-rw-r--r-- | include/field_specials.h | 1 | ||||
-rw-r--r-- | include/item_menu.h | 5 | ||||
-rw-r--r-- | include/item_use.h | 6 | ||||
-rw-r--r-- | include/itemfinder.h | 6 | ||||
-rw-r--r-- | include/mail.h | 2 | ||||
-rw-r--r-- | include/overworld.h | 1 | ||||
-rw-r--r-- | include/party_menu.h | 9 | ||||
-rw-r--r-- | include/pokemon.h | 2 | ||||
-rw-r--r-- | include/region_map.h | 1 | ||||
-rw-r--r-- | include/strings.h | 6 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/data/items.json | 170 | ||||
-rw-r--r-- | src/fame_checker.c | 2 | ||||
-rw-r--r-- | src/item_use.c | 566 | ||||
-rw-r--r-- | src/pokemon.c | 2 | ||||
-rw-r--r-- | src/teachy_tv.c | 2 |
26 files changed, 709 insertions, 1619 deletions
diff --git a/asm/berry_crush.s b/asm/berry_crush.s index eb5e8d08d..42de36a1f 100644 --- a/asm/berry_crush.s +++ b/asm/berry_crush.s @@ -265,7 +265,7 @@ sub_814B8F0: @ 814B8F0 ldr r1, _0814B910 @ =sub_814B860 movs r0, 0x5 movs r2, 0 - bl sub_813CD50 + bl InitBerryPouch pop {r0} bx r0 .align 2, 0 diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s index 08d4ab435..36fa22f9c 100644 --- a/asm/berry_pouch.s +++ b/asm/berry_pouch.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_813CD50 -sub_813CD50: @ 813CD50 + thumb_func_start InitBerryPouch +InitBerryPouch: @ 813CD50 push {r4-r7,lr} mov r7, r8 push {r7} @@ -92,7 +92,7 @@ _0813CDF0: .4byte gTextFlags _0813CDF4: .4byte gSpecialVar_ItemId _0813CDF8: .4byte sub_813CE30 _0813CDFC: .4byte 0x0000080c - thumb_func_end sub_813CD50 + thumb_func_end InitBerryPouch thumb_func_start sub_813CE00 sub_813CE00: @ 813CE00 diff --git a/asm/item_menu.s b/asm/item_menu.s index 1db1f73b8..42378c28e 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -138,8 +138,8 @@ _08107EB0: .4byte gUnknown_203AD10 _08107EB4: .4byte gUnknown_203ACFC thumb_func_end sub_8107DB4 - thumb_func_start UseFameCheckerFromMenu -UseFameCheckerFromMenu: @ 8107EB8 + thumb_func_start ReturnToBagFromKeyItem +ReturnToBagFromKeyItem: @ 8107EB8 push {lr} ldr r2, _08107EC8 @ =sub_80568A8 movs r0, 0 @@ -149,7 +149,7 @@ UseFameCheckerFromMenu: @ 8107EB8 bx r0 .align 2, 0 _08107EC8: .4byte sub_80568A8 - thumb_func_end UseFameCheckerFromMenu + thumb_func_end ReturnToBagFromKeyItem thumb_func_start sub_8107ECC sub_8107ECC: @ 8107ECC @@ -4776,7 +4776,7 @@ sub_810A448: @ 810A448 ldr r1, _0810A458 @ =sub_810A45C movs r0, 0x1 movs r2, 0 - bl sub_813CD50 + bl InitBerryPouch pop {r0} bx r0 .align 2, 0 @@ -4905,7 +4905,7 @@ sub_810A540: @ 810A540 ldr r1, _0810A550 @ =sub_810A554 movs r0, 0x3 movs r2, 0 - bl sub_813CD50 + bl InitBerryPouch pop {r0} bx r0 .align 2, 0 @@ -5050,7 +5050,7 @@ sub_810A668: @ 810A668 ldr r1, _0810A678 @ =sub_810A67C movs r0, 0x2 movs r2, 0 - bl sub_813CD50 + bl InitBerryPouch pop {r0} bx r0 .align 2, 0 diff --git a/asm/item_use.s b/asm/item_use.s deleted file mode 100644 index e6b649da8..000000000 --- a/asm/item_use.s +++ /dev/null @@ -1,1506 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start FieldUseFunc_OpenPartyMenu -FieldUseFunc_OpenPartyMenu: @ 80A16E0 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A16F4 @ =gUnknown_3005E98 - ldr r1, _080A16F8 @ =sub_81252D0 - str r1, [r2] - bl sub_80A16D0 - pop {r0} - bx r0 - .align 2, 0 -_080A16F4: .4byte gUnknown_3005E98 -_080A16F8: .4byte sub_81252D0 - thumb_func_end FieldUseFunc_OpenPartyMenu - - thumb_func_start FieldUseFunc_Ether -FieldUseFunc_Ether: @ 80A16FC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A1710 @ =gUnknown_3005E98 - ldr r1, _080A1714 @ =sub_81256F8 - str r1, [r2] - bl sub_80A16D0 - pop {r0} - bx r0 - .align 2, 0 -_080A1710: .4byte gUnknown_3005E98 -_080A1714: .4byte sub_81256F8 - thumb_func_end FieldUseFunc_Ether - - thumb_func_start FieldUseFunc_PpUp -FieldUseFunc_PpUp: @ 80A1718 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A172C @ =gUnknown_3005E98 - ldr r1, _080A1730 @ =dp05_pp_up - str r1, [r2] - bl sub_80A16D0 - pop {r0} - bx r0 - .align 2, 0 -_080A172C: .4byte gUnknown_3005E98 -_080A1730: .4byte dp05_pp_up - thumb_func_end FieldUseFunc_PpUp - - thumb_func_start FieldUseFunc_RareCandy -FieldUseFunc_RareCandy: @ 80A1734 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A1748 @ =gUnknown_3005E98 - ldr r1, _080A174C @ =dp05_rare_candy - str r1, [r2] - bl sub_80A16D0 - pop {r0} - bx r0 - .align 2, 0 -_080A1748: .4byte gUnknown_3005E98 -_080A174C: .4byte dp05_rare_candy - thumb_func_end FieldUseFunc_RareCandy - - thumb_func_start FieldUseFunc_EvoItem -FieldUseFunc_EvoItem: @ 80A1750 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A1764 @ =gUnknown_3005E98 - ldr r1, _080A1768 @ =sub_8126B60 - str r1, [r2] - bl sub_80A16D0 - pop {r0} - bx r0 - .align 2, 0 -_080A1764: .4byte gUnknown_3005E98 -_080A1768: .4byte sub_8126B60 - thumb_func_end FieldUseFunc_EvoItem - - thumb_func_start FieldUseFunc_SacredAsh -FieldUseFunc_SacredAsh: @ 80A176C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A1780 @ =gUnknown_3005E98 - ldr r1, _080A1784 @ =sub_8126894 - str r1, [r2] - bl sub_80A0FBC - pop {r0} - bx r0 - .align 2, 0 -_080A1780: .4byte gUnknown_3005E98 -_080A1784: .4byte sub_8126894 - thumb_func_end FieldUseFunc_SacredAsh - - thumb_func_start FieldUseFunc_TmCase -FieldUseFunc_TmCase: @ 80A1788 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A17B0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A17B8 - ldr r0, _080A17B4 @ =sub_80A17D4 - bl sub_8108EE0 - adds r0, r4, 0 - bl sub_8108B50 - b _080A17C8 - .align 2, 0 -_080A17B0: .4byte gTasks -_080A17B4: .4byte sub_80A17D4 -_080A17B8: - bl sub_80CCB68 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _080A17D0 @ =sub_80A17E8 - str r0, [r5] -_080A17C8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A17D0: .4byte sub_80A17E8 - thumb_func_end FieldUseFunc_TmCase - - thumb_func_start sub_80A17D4 -sub_80A17D4: @ 80A17D4 - push {lr} - ldr r1, _080A17E4 @ =UseFameCheckerFromMenu - movs r0, 0 - movs r2, 0 - bl InitTMCase - pop {r0} - bx r0 - .align 2, 0 -_080A17E4: .4byte UseFameCheckerFromMenu - thumb_func_end sub_80A17D4 - - thumb_func_start sub_80A17E8 -sub_80A17E8: @ 80A17E8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1818 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A1812 - bl CleanupOverworldWindowsAndTilemaps - bl sub_80A1184 - ldr r1, _080A181C @ =CB2_ReturnToField - movs r0, 0 - movs r2, 0x1 - bl InitTMCase - adds r0, r4, 0 - bl DestroyTask -_080A1812: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1818: .4byte gPaletteFade -_080A181C: .4byte CB2_ReturnToField - thumb_func_end sub_80A17E8 - - thumb_func_start FieldUseFunc_BerryPouch -FieldUseFunc_BerryPouch: @ 80A1820 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A1848 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A1850 - ldr r0, _080A184C @ =sub_80A186C - bl sub_8108EE0 - adds r0, r4, 0 - bl sub_8108B50 - b _080A1860 - .align 2, 0 -_080A1848: .4byte gTasks -_080A184C: .4byte sub_80A186C -_080A1850: - bl sub_80CCB68 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _080A1868 @ =sub_80A1880 - str r0, [r5] -_080A1860: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A1868: .4byte sub_80A1880 - thumb_func_end FieldUseFunc_BerryPouch - - thumb_func_start sub_80A186C -sub_80A186C: @ 80A186C - push {lr} - ldr r1, _080A187C @ =UseFameCheckerFromMenu - movs r0, 0 - movs r2, 0 - bl sub_813CD50 - pop {r0} - bx r0 - .align 2, 0 -_080A187C: .4byte UseFameCheckerFromMenu - thumb_func_end sub_80A186C - - thumb_func_start sub_80A1880 -sub_80A1880: @ 80A1880 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A18B0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A18AA - bl CleanupOverworldWindowsAndTilemaps - bl sub_80A1184 - ldr r1, _080A18B4 @ =CB2_ReturnToField - movs r0, 0 - movs r2, 0x1 - bl sub_813CD50 - adds r0, r4, 0 - bl DestroyTask -_080A18AA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A18B0: .4byte gPaletteFade -_080A18B4: .4byte CB2_ReturnToField - thumb_func_end sub_80A1880 - - thumb_func_start BattleUseFunc_BerryPouch -BattleUseFunc_BerryPouch: @ 80A18B8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080A18D4 @ =sub_80A18D8 - bl sub_8108EE0 - adds r0, r4, 0 - bl sub_8108B50 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A18D4: .4byte sub_80A18D8 - thumb_func_end BattleUseFunc_BerryPouch - - thumb_func_start sub_80A18D8 -sub_80A18D8: @ 80A18D8 - push {lr} - ldr r1, _080A18E8 @ =sub_8107ECC - movs r0, 0x4 - movs r2, 0 - bl sub_813CD50 - pop {r0} - bx r0 - .align 2, 0 -_080A18E8: .4byte sub_8107ECC - thumb_func_end sub_80A18D8 - - thumb_func_start FieldUseFunc_TeachyTv -FieldUseFunc_TeachyTv: @ 80A18EC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1920 @ =gSpecialVar_ItemId - ldrh r2, [r0] - ldr r3, _080A1924 @ =0x0000ffff - movs r0, 0x4 - movs r1, 0 - bl ItemUse_SetQuestLogEvent - ldr r1, _080A1928 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A1930 - ldr r0, _080A192C @ =sub_80A194C - bl sub_8108EE0 - adds r0, r4, 0 - bl sub_8108B50 - b _080A1940 - .align 2, 0 -_080A1920: .4byte gSpecialVar_ItemId -_080A1924: .4byte 0x0000ffff -_080A1928: .4byte gTasks -_080A192C: .4byte sub_80A194C -_080A1930: - bl sub_80CCB68 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _080A1948 @ =sub_80A1960 - str r0, [r5] -_080A1940: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A1948: .4byte sub_80A1960 - thumb_func_end FieldUseFunc_TeachyTv - - thumb_func_start sub_80A194C -sub_80A194C: @ 80A194C - push {lr} - ldr r1, _080A195C @ =UseFameCheckerFromMenu - movs r0, 0 - bl InitTeachyTvController - pop {r0} - bx r0 - .align 2, 0 -_080A195C: .4byte UseFameCheckerFromMenu - thumb_func_end sub_80A194C - - thumb_func_start sub_80A1960 -sub_80A1960: @ 80A1960 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1990 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A1988 - bl CleanupOverworldWindowsAndTilemaps - bl sub_80A1184 - ldr r1, _080A1994 @ =CB2_ReturnToField - movs r0, 0 - bl InitTeachyTvController - adds r0, r4, 0 - bl DestroyTask -_080A1988: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1990: .4byte gPaletteFade -_080A1994: .4byte CB2_ReturnToField - thumb_func_end sub_80A1960 - - thumb_func_start FieldUseFunc_SuperRepel -FieldUseFunc_SuperRepel: @ 80A1998 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A19C0 @ =0x00004020 - bl VarGet - lsls r0, 16 - cmp r0, 0 - bne _080A19CC - movs r0, 0x29 - bl PlaySE - ldr r0, _080A19C4 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080A19C8 @ =sub_80A19E8 - str r0, [r1] - b _080A19D8 - .align 2, 0 -_080A19C0: .4byte 0x00004020 -_080A19C4: .4byte gTasks -_080A19C8: .4byte sub_80A19E8 -_080A19CC: - ldr r2, _080A19E0 @ =gUnknown_841659E - ldr r3, _080A19E4 @ =sub_810A1F8 - adds r0, r4, 0 - movs r1, 0x2 - bl DisplayItemMessageInBag -_080A19D8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A19E0: .4byte gUnknown_841659E -_080A19E4: .4byte sub_810A1F8 - thumb_func_end FieldUseFunc_SuperRepel - - thumb_func_start sub_80A19E8 -sub_80A19E8: @ 80A19E8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - bne _080A1A2A - ldr r4, _080A1A30 @ =gSpecialVar_ItemId - ldrh r2, [r4] - ldr r3, _080A1A34 @ =0x0000ffff - movs r0, 0x4 - movs r1, 0 - bl ItemUse_SetQuestLogEvent - ldr r5, _080A1A38 @ =0x00004020 - ldrh r0, [r4] - bl ItemId_GetHoldEffectParam - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl VarSet - bl sub_80A1A44 - ldr r2, _080A1A3C @ =gStringVar4 - ldr r3, _080A1A40 @ =sub_810A1F8 - adds r0, r6, 0 - movs r1, 0x2 - bl DisplayItemMessageInBag -_080A1A2A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A1A30: .4byte gSpecialVar_ItemId -_080A1A34: .4byte 0x0000ffff -_080A1A38: .4byte 0x00004020 -_080A1A3C: .4byte gStringVar4 -_080A1A40: .4byte sub_810A1F8 - thumb_func_end sub_80A19E8 - - thumb_func_start sub_80A1A44 -sub_80A1A44: @ 80A1A44 - push {r4,lr} - ldr r4, _080A1A84 @ =gSpecialVar_ItemId - ldrh r0, [r4] - movs r1, 0x1 - bl RemoveBagItem - ldrh r0, [r4] - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - bl sub_8108DC8 - ldrh r0, [r4] - bl ItemId_GetPocket - lsls r0, 24 - lsrs r0, 24 - bl sub_81089F4 - ldrh r0, [r4] - ldr r1, _080A1A88 @ =gStringVar2 - bl CopyItemName - ldr r0, _080A1A8C @ =gStringVar4 - ldr r1, _080A1A90 @ =gUnknown_841658C - bl StringExpandPlaceholders - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1A84: .4byte gSpecialVar_ItemId -_080A1A88: .4byte gStringVar2 -_080A1A8C: .4byte gStringVar4 -_080A1A90: .4byte gUnknown_841658C - thumb_func_end sub_80A1A44 - - thumb_func_start FieldUseFunc_BlackFlute -FieldUseFunc_BlackFlute: @ 80A1A94 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - ldr r5, _080A1AD4 @ =gSpecialVar_ItemId - ldrh r2, [r5] - ldr r3, _080A1AD8 @ =0x0000ffff - movs r0, 0x4 - movs r1, 0 - bl ItemUse_SetQuestLogEvent - ldrh r0, [r5] - cmp r0, 0x2B - bne _080A1AF4 - ldr r0, _080A1ADC @ =0x00000803 - bl FlagSet - ldr r0, _080A1AE0 @ =0x00000804 - bl FlagClear - ldrh r0, [r5] - ldr r1, _080A1AE4 @ =gStringVar2 - bl CopyItemName - ldr r0, _080A1AE8 @ =gStringVar4 - ldr r1, _080A1AEC @ =gUnknown_84165D2 - bl StringExpandPlaceholders - ldr r1, _080A1AF0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - b _080A1B1A - .align 2, 0 -_080A1AD4: .4byte gSpecialVar_ItemId -_080A1AD8: .4byte 0x0000ffff -_080A1ADC: .4byte 0x00000803 -_080A1AE0: .4byte 0x00000804 -_080A1AE4: .4byte gStringVar2 -_080A1AE8: .4byte gStringVar4 -_080A1AEC: .4byte gUnknown_84165D2 -_080A1AF0: .4byte gTasks -_080A1AF4: - cmp r0, 0x2A - bne _080A1B26 - ldr r0, _080A1B2C @ =0x00000804 - bl FlagSet - ldr r0, _080A1B30 @ =0x00000803 - bl FlagClear - ldrh r0, [r5] - ldr r1, _080A1B34 @ =gStringVar2 - bl CopyItemName - ldr r0, _080A1B38 @ =gStringVar4 - ldr r1, _080A1B3C @ =gUnknown_8416600 - bl StringExpandPlaceholders - ldr r1, _080A1B40 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 -_080A1B1A: - lsls r0, 3 - adds r0, r1 - ldr r1, _080A1B44 @ =sub_80A1B48 - str r1, [r0] - movs r1, 0 - strh r1, [r0, 0x18] -_080A1B26: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080A1B2C: .4byte 0x00000804 -_080A1B30: .4byte 0x00000803 -_080A1B34: .4byte gStringVar2 -_080A1B38: .4byte gStringVar4 -_080A1B3C: .4byte gUnknown_8416600 -_080A1B40: .4byte gTasks -_080A1B44: .4byte sub_80A1B48 - thumb_func_end FieldUseFunc_BlackFlute - - thumb_func_start sub_80A1B48 -sub_80A1B48: @ 80A1B48 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1B80 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x18] - adds r0, 0x1 - strh r0, [r1, 0x18] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080A1B78 - movs r0, 0x6E - bl PlaySE - ldr r2, _080A1B84 @ =gStringVar4 - ldr r3, _080A1B88 @ =sub_810A1F8 - adds r0, r4, 0 - movs r1, 0x2 - bl DisplayItemMessageInBag -_080A1B78: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1B80: .4byte gTasks -_080A1B84: .4byte gStringVar4 -_080A1B88: .4byte sub_810A1F8 - thumb_func_end sub_80A1B48 - - thumb_func_start sub_80A1B8C -sub_80A1B8C: @ 80A1B8C - push {lr} - ldr r0, _080A1BA0 @ =gMapHeader - ldrb r1, [r0, 0x19] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080A1BA4 - movs r0, 0 - b _080A1BA6 - .align 2, 0 -_080A1BA0: .4byte gMapHeader -_080A1BA4: - movs r0, 0x1 -_080A1BA6: - pop {r1} - bx r1 - thumb_func_end sub_80A1B8C - - thumb_func_start ItemUseOutOfBattle_EscapeRope -ItemUseOutOfBattle_EscapeRope: @ 80A1BAC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_80A1B8C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080A1BEC - ldr r0, _080A1BDC @ =gSpecialVar_ItemId - ldrh r2, [r0] - ldr r0, _080A1BE0 @ =gMapHeader - ldrb r3, [r0, 0x14] - movs r0, 0x4 - movs r1, 0 - bl ItemUse_SetQuestLogEvent - ldr r1, _080A1BE4 @ =sItemUseOnFieldCB - ldr r0, _080A1BE8 @ =sub_80A1C08 - str r0, [r1] - adds r0, r4, 0 - bl sub_80A103C - b _080A1BFE - .align 2, 0 -_080A1BDC: .4byte gSpecialVar_ItemId -_080A1BE0: .4byte gMapHeader -_080A1BE4: .4byte sItemUseOnFieldCB -_080A1BE8: .4byte sub_80A1C08 -_080A1BEC: - ldr r0, _080A1C04 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrb r1, [r1, 0xE] - adds r0, r4, 0 - bl sub_80A1110 -_080A1BFE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1C04: .4byte gTasks - thumb_func_end ItemUseOutOfBattle_EscapeRope - - thumb_func_start sub_80A1C08 -sub_80A1C08: @ 80A1C08 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8054D70 - bl sub_80A1A44 - ldr r1, _080A1C38 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x8] - ldr r2, _080A1C3C @ =gStringVar4 - ldr r3, _080A1C40 @ =sub_80A1C44 - adds r0, r4, 0 - movs r1, 0x2 - bl DisplayItemMessageOnField - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1C38: .4byte gTasks -_080A1C3C: .4byte gStringVar4 -_080A1C40: .4byte sub_80A1C44 - thumb_func_end sub_80A1C08 - - thumb_func_start sub_80A1C44 -sub_80A1C44: @ 80A1C44 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl ResetInitialPlayerAvatarState - bl sub_8085620 - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A1C44 - - thumb_func_start FieldUseFunc_TownMap -FieldUseFunc_TownMap: @ 80A1C60 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A1C88 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A1C90 - ldr r0, _080A1C8C @ =sub_80A1CAC - bl sub_8108EE0 - adds r0, r4, 0 - bl sub_8108B50 - b _080A1CA0 - .align 2, 0 -_080A1C88: .4byte gTasks -_080A1C8C: .4byte sub_80A1CAC -_080A1C90: - bl sub_80CCB68 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _080A1CA8 @ =sub_80A1CC0 - str r0, [r5] -_080A1CA0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A1CA8: .4byte sub_80A1CC0 - thumb_func_end FieldUseFunc_TownMap - - thumb_func_start sub_80A1CAC -sub_80A1CAC: @ 80A1CAC - push {lr} - ldr r1, _080A1CBC @ =UseFameCheckerFromMenu - movs r0, 0 - bl sub_80BFF50 - pop {r0} - bx r0 - .align 2, 0 -_080A1CBC: .4byte UseFameCheckerFromMenu - thumb_func_end sub_80A1CAC - - thumb_func_start sub_80A1CC0 -sub_80A1CC0: @ 80A1CC0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1CF0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A1CE8 - bl CleanupOverworldWindowsAndTilemaps - bl sub_80A1184 - ldr r1, _080A1CF4 @ =CB2_ReturnToField - movs r0, 0 - bl sub_80BFF50 - adds r0, r4, 0 - bl DestroyTask -_080A1CE8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1CF0: .4byte gPaletteFade -_080A1CF4: .4byte CB2_ReturnToField - thumb_func_end sub_80A1CC0 - - thumb_func_start FieldUseFunc_FameChecker -FieldUseFunc_FameChecker: @ 80A1CF8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1D2C @ =gSpecialVar_ItemId - ldrh r2, [r0] - ldr r3, _080A1D30 @ =0x0000ffff - movs r0, 0x4 - movs r1, 0 - bl ItemUse_SetQuestLogEvent - ldr r1, _080A1D34 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _080A1D3C - ldr r0, _080A1D38 @ =sub_80A1D58 - bl sub_8108EE0 - adds r0, r4, 0 - bl sub_8108B50 - b _080A1D4C - .align 2, 0 -_080A1D2C: .4byte gSpecialVar_ItemId -_080A1D30: .4byte 0x0000ffff -_080A1D34: .4byte gTasks -_080A1D38: .4byte sub_80A1D58 -_080A1D3C: - bl sub_80CCB68 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _080A1D54 @ =sub_80A1D68 - str r0, [r5] -_080A1D4C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A1D54: .4byte sub_80A1D68 - thumb_func_end FieldUseFunc_FameChecker - - thumb_func_start sub_80A1D58 -sub_80A1D58: @ 80A1D58 - push {lr} - ldr r0, _080A1D64 @ =UseFameCheckerFromMenu - bl UseFameChecker - pop {r0} - bx r0 - .align 2, 0 -_080A1D64: .4byte UseFameCheckerFromMenu - thumb_func_end sub_80A1D58 - - thumb_func_start sub_80A1D68 -sub_80A1D68: @ 80A1D68 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1D94 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080A1D8E - bl CleanupOverworldWindowsAndTilemaps - bl sub_80A1184 - ldr r0, _080A1D98 @ =CB2_ReturnToField - bl UseFameChecker - adds r0, r4, 0 - bl DestroyTask -_080A1D8E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1D94: .4byte gPaletteFade -_080A1D98: .4byte CB2_ReturnToField - thumb_func_end sub_80A1D68 - - thumb_func_start FieldUseFunc_VsSeeker -FieldUseFunc_VsSeeker: @ 80A1D9C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080A1DE8 @ =gMapHeader - ldrb r0, [r0, 0x17] - cmp r0, 0x3 - beq _080A1DB2 - cmp r0, 0x1 - beq _080A1DB2 - cmp r0, 0x2 - bne _080A1DD2 -_080A1DB2: - ldr r0, _080A1DEC @ =gSaveBlock1Ptr - ldr r1, [r0] - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bne _080A1DF4 - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0 - beq _080A1DD2 - cmp r0, 0x61 - beq _080A1DD2 - cmp r0, 0x6D - beq _080A1DD2 - cmp r0, 0x79 - bne _080A1DF4 -_080A1DD2: - ldr r0, _080A1DF0 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrb r1, [r1, 0xE] - adds r0, r2, 0 - bl sub_80A1110 - b _080A1E00 - .align 2, 0 -_080A1DE8: .4byte gMapHeader -_080A1DEC: .4byte gSaveBlock1Ptr -_080A1DF0: .4byte gTasks -_080A1DF4: - ldr r1, _080A1E04 @ =sItemUseOnFieldCB - ldr r0, _080A1E08 @ =Task_VsSeeker_0 - str r0, [r1] - adds r0, r2, 0 - bl sub_80A103C -_080A1E00: - pop {r0} - bx r0 - .align 2, 0 -_080A1E04: .4byte sItemUseOnFieldCB -_080A1E08: .4byte Task_VsSeeker_0 - thumb_func_end FieldUseFunc_VsSeeker - - thumb_func_start sub_80A1E0C -sub_80A1E0C: @ 80A1E0C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80A112C - pop {r0} - bx r0 - thumb_func_end sub_80A1E0C - - thumb_func_start BattleUseFunc_MasterBall -BattleUseFunc_MasterBall: @ 80A1E1C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl IsPlayerPartyAndPokemonStorageFull - lsls r0, 24 - cmp r0, 0 - bne _080A1E48 - ldr r0, _080A1E44 @ =gSpecialVar_ItemId - ldrh r0, [r0] - movs r1, 0x1 - bl RemoveBagItem - bl sub_8108CB4 - adds r0, r4, 0 - bl sub_8108B50 - b _080A1E54 - .align 2, 0 -_080A1E44: .4byte gSpecialVar_ItemId -_080A1E48: - ldr r2, _080A1E5C @ =gUnknown_8416631 - ldr r3, _080A1E60 @ =sub_810A1F8 - adds r0, r4, 0 - movs r1, 0x2 - bl DisplayItemMessageInBag -_080A1E54: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1E5C: .4byte gUnknown_8416631 -_080A1E60: .4byte sub_810A1F8 - thumb_func_end BattleUseFunc_MasterBall - - thumb_func_start BattleUseFunc_PokeFlute -BattleUseFunc_PokeFlute: @ 80A1E64 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8108CB4 - adds r0, r4, 0 - bl sub_8108B50 - pop {r4} - pop {r0} - bx r0 - thumb_func_end BattleUseFunc_PokeFlute - - thumb_func_start BattleUseFunc_GuardSpec -BattleUseFunc_GuardSpec: @ 80A1E7C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080A1EBC @ =gBattlerPartyIndexes - ldr r0, _080A1EC0 @ =gBattlerInMenuId - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r1, _080A1EC4 @ =gPlayerParty - adds r0, r1 - ldr r1, _080A1EC8 @ =gSpecialVar_ItemId - ldrh r1, [r1] - lsls r2, 24 - lsrs r2, 24 - movs r3, 0 - bl ExecuteTableBasedItemEffect - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _080A1ED4 - ldr r2, _080A1ECC @ =gUnknown_84169DC - ldr r3, _080A1ED0 @ =sub_810A1F8 - adds r0, r4, 0 - movs r1, 0x2 - bl DisplayItemMessageInBag - b _080A1EE4 - .align 2, 0 -_080A1EBC: .4byte gBattlerPartyIndexes -_080A1EC0: .4byte gBattlerInMenuId -_080A1EC4: .4byte gPlayerParty -_080A1EC8: .4byte gSpecialVar_ItemId -_080A1ECC: .4byte gUnknown_84169DC -_080A1ED0: .4byte sub_810A1F8 -_080A1ED4: - ldr r0, _080A1EEC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - strh r2, [r1, 0x18] - ldr r0, _080A1EF0 @ =sub_80A1EF4 - str r0, [r1] -_080A1EE4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1EEC: .4byte gTasks -_080A1EF0: .4byte sub_80A1EF4 - thumb_func_end BattleUseFunc_GuardSpec - - thumb_func_start sub_80A1EF4 -sub_80A1EF4: @ 80A1EF4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - ldr r0, _080A1F3C @ =gTasks+0x8 - adds r1, r0 - ldrh r0, [r1, 0x10] - adds r0, 0x1 - strh r0, [r1, 0x10] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080A1F36 - ldr r0, _080A1F40 @ =gSpecialVar_ItemId - ldrh r4, [r0] - movs r0, 0x1 - bl PlaySE - adds r0, r4, 0 - movs r1, 0x1 - bl RemoveBagItem - adds r0, r4, 0 - bl sub_8042DA4 - adds r2, r0, 0 - ldr r3, _080A1F44 @ =sub_80A1F48 - adds r0, r5, 0 - movs r1, 0x2 - bl DisplayItemMessageInBag -_080A1F36: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A1F3C: .4byte gTasks+0x8 -_080A1F40: .4byte gSpecialVar_ItemId -_080A1F44: .4byte sub_80A1F48 - thumb_func_end sub_80A1EF4 - - thumb_func_start sub_80A1F48 -sub_80A1F48: @ 80A1F48 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1F74 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080A1F62 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080A1F6C -_080A1F62: - bl sub_8108CB4 - adds r0, r4, 0 - bl sub_8108B50 -_080A1F6C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1F74: .4byte gMain - thumb_func_end sub_80A1F48 - - thumb_func_start sub_80A1F78 -sub_80A1F78: @ 80A1F78 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A1F9C @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _080A1FA4 - ldr r0, _080A1FA0 @ =sub_81279E0 - bl sub_813D934 - adds r0, r4, 0 - bl sub_813D808 - b _080A1FB0 - .align 2, 0 -_080A1F9C: .4byte gSpecialVar_ItemId -_080A1FA0: .4byte sub_81279E0 -_080A1FA4: - ldr r0, _080A1FB8 @ =sub_81279E0 - bl sub_8108EE0 - adds r0, r4, 0 - bl sub_8108B50 -_080A1FB0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A1FB8: .4byte sub_81279E0 - thumb_func_end sub_80A1F78 - - thumb_func_start BattleUseFunc_OpenPartyMenu -BattleUseFunc_OpenPartyMenu: @ 80A1FBC - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A1FD0 @ =gUnknown_3005E98 - ldr r1, _080A1FD4 @ =ItemUseCB_Medicine - str r1, [r2] - bl sub_80A1F78 - pop {r0} - bx r0 - .align 2, 0 -_080A1FD0: .4byte gUnknown_3005E98 -_080A1FD4: .4byte ItemUseCB_Medicine - thumb_func_end BattleUseFunc_OpenPartyMenu - - thumb_func_start sub_80A1FD8 -sub_80A1FD8: @ 80A1FD8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A1FEC @ =gUnknown_3005E98 - ldr r1, _080A1FF0 @ =sub_8126894 - str r1, [r2] - bl sub_80A1F78 - pop {r0} - bx r0 - .align 2, 0 -_080A1FEC: .4byte gUnknown_3005E98 -_080A1FF0: .4byte sub_8126894 - thumb_func_end sub_80A1FD8 - - thumb_func_start BattleUseFunc_Ether -BattleUseFunc_Ether: @ 80A1FF4 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080A2008 @ =gUnknown_3005E98 - ldr r1, _080A200C @ =sub_81256F8 - str r1, [r2] - bl sub_80A1F78 - pop {r0} - bx r0 - .align 2, 0 -_080A2008: .4byte gUnknown_3005E98 -_080A200C: .4byte sub_81256F8 - thumb_func_end BattleUseFunc_Ether - - thumb_func_start BattleUseFunc_PokeDoll -BattleUseFunc_PokeDoll: @ 80A2010 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A2044 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080A2058 - bl sub_80A1A44 - ldr r0, _080A2048 @ =gSpecialVar_ItemId - ldrh r2, [r0] - ldr r3, _080A204C @ =0x0000ffff - movs r0, 0x4 - movs r1, 0 - bl ItemUse_SetQuestLogEvent - ldr r2, _080A2050 @ =gStringVar4 - ldr r3, _080A2054 @ =sub_8108B50 - adds r0, r4, 0 - movs r1, 0x2 - bl DisplayItemMessageInBag - b _080A2060 - .align 2, 0 -_080A2044: .4byte gBattleTypeFlags -_080A2048: .4byte gSpecialVar_ItemId -_080A204C: .4byte 0x0000ffff -_080A2050: .4byte gStringVar4 -_080A2054: .4byte sub_8108B50 -_080A2058: - adds r0, r4, 0 - movs r1, 0 - bl sub_80A1110 -_080A2060: - pop {r4} - pop {r0} - bx r0 - thumb_func_end BattleUseFunc_PokeDoll - - thumb_func_start ItemUseOutOfBattle_EnigmaBerry -ItemUseOutOfBattle_EnigmaBerry: @ 80A2068 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A208C @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x14 - bls _080A2082 - b _080A2174 -_080A2082: - lsls r0, 2 - ldr r1, _080A2090 @ =_080A2094 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A208C: .4byte gSpecialVar_ItemId -_080A2090: .4byte _080A2094 - .align 2, 0 -_080A2094: - .4byte _080A2120 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A2174 - .4byte _080A2174 - .4byte _080A2104 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A20E8 - .4byte _080A2174 - .4byte _080A213C - .4byte _080A213C - .4byte _080A2158 -_080A20E8: - ldr r0, _080A2100 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl FieldUseFunc_OpenPartyMenu - b _080A2188 - .align 2, 0 -_080A2100: .4byte gTasks -_080A2104: - ldr r0, _080A211C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl FieldUseFunc_SacredAsh - b _080A2188 - .align 2, 0 -_080A211C: .4byte gTasks -_080A2120: - ldr r0, _080A2138 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl FieldUseFunc_RareCandy - b _080A2188 - .align 2, 0 -_080A2138: .4byte gTasks -_080A213C: - ldr r0, _080A2154 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl FieldUseFunc_PpUp - b _080A2188 - .align 2, 0 -_080A2154: .4byte gTasks -_080A2158: - ldr r0, _080A2170 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl FieldUseFunc_Ether - b _080A2188 - .align 2, 0 -_080A2170: .4byte gTasks -_080A2174: - ldr r0, _080A2190 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r0, 0x4 - strh r0, [r1, 0x10] - adds r0, r4, 0 - bl FieldUseFunc_OakStopsYou -_080A2188: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080A2190: .4byte gTasks - thumb_func_end ItemUseOutOfBattle_EnigmaBerry - - thumb_func_start ItemUseInBattle_EnigmaBerry -ItemUseInBattle_EnigmaBerry: @ 80A2194 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080A21B4 @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x15 - bhi _080A222C - lsls r0, 2 - ldr r1, _080A21B8 @ =_080A21BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080A21B4: .4byte gSpecialVar_ItemId -_080A21B8: .4byte _080A21BC - .align 2, 0 -_080A21BC: - .4byte _080A2214 - .4byte _080A222C - .4byte _080A221C - .4byte _080A221C - .4byte _080A221C - .4byte _080A221C - .4byte _080A221C - .4byte _080A221C - .4byte _080A221C - .4byte _080A221C - .4byte _080A222C - .4byte _080A221C - .4byte _080A222C - .4byte _080A222C - .4byte _080A222C - .4byte _080A222C - .4byte _080A222C - .4byte _080A222C - .4byte _080A222C - .4byte _080A222C - .4byte _080A222C - .4byte _080A2224 -_080A2214: - adds r0, r4, 0 - bl BattleUseFunc_GuardSpec - b _080A2232 -_080A221C: - adds r0, r4, 0 - bl BattleUseFunc_OpenPartyMenu - b _080A2232 -_080A2224: - adds r0, r4, 0 - bl BattleUseFunc_Ether - b _080A2232 -_080A222C: - adds r0, r4, 0 - bl FieldUseFunc_OakStopsYou -_080A2232: - pop {r4} - pop {r0} - bx r0 - thumb_func_end ItemUseInBattle_EnigmaBerry - - thumb_func_start FieldUseFunc_OakStopsYou -FieldUseFunc_OakStopsYou: @ 80A2238 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080A2268 @ =gSpecialVar_ItemId - ldrh r0, [r0] - bl GetPocketByItemId - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x5 - bne _080A2278 - ldr r4, _080A226C @ =gStringVar4 - ldr r1, _080A2270 @ =gUnknown_8416425 - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r3, _080A2274 @ =sub_813E2B8 - adds r0, r5, 0 - movs r1, 0x4 - adds r2, r4, 0 - bl sub_813EB20 - b _080A228A - .align 2, 0 -_080A2268: .4byte gSpecialVar_ItemId -_080A226C: .4byte gStringVar4 -_080A2270: .4byte gUnknown_8416425 -_080A2274: .4byte sub_813E2B8 -_080A2278: - ldr r0, _080A2290 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrb r1, [r1, 0xE] - adds r0, r5, 0 - bl sub_80A1110 -_080A228A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A2290: .4byte gTasks - thumb_func_end FieldUseFunc_OakStopsYou - - thumb_func_start ItemUse_SetQuestLogEvent -ItemUse_SetQuestLogEvent: @ 80A2294 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r1, 0 - adds r4, r2, 0 - adds r5, r3, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - movs r0, 0x8 - bl Alloc - adds r6, r0, 0 - strh r4, [r6] - strh r5, [r6, 0x6] - cmp r7, 0 - beq _080A22C8 - adds r0, r7, 0 - movs r1, 0x41 - bl GetMonData - b _080A22CA -_080A22C8: - ldr r0, _080A22E4 @ =0x0000ffff -_080A22CA: - strh r0, [r6, 0x4] - mov r0, r8 - adds r1, r6, 0 - bl sub_8113550 - adds r0, r6, 0 - bl Free - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A22E4: .4byte 0x0000ffff - thumb_func_end ItemUse_SetQuestLogEvent - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/party_menu.s b/asm/party_menu.s index be6521bdb..5a55f9f5b 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -12617,7 +12617,7 @@ sub_8124DB0: @ 8124DB0 movs r0, 0x6 movs r1, 0 movs r2, 0xFF - bl sub_813CD50 + bl InitBerryPouch pop {r0} bx r0 thumb_func_end sub_8124DB0 diff --git a/asm/start_menu.s b/asm/start_menu.s index 358eb7283..9dc9fbab6 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -911,14 +911,14 @@ _0806F498: bl PlayRainStoppingSoundEffect bl sub_806EF18 bl CleanupOverworldWindowsAndTilemaps - ldr r0, _0806F4B0 @ =UseFameCheckerFromMenu + ldr r0, _0806F4B0 @ =ReturnToBagFromKeyItem bl SetMainCallback2 movs r0, 0x1 _0806F4AC: pop {r1} bx r1 .align 2, 0 -_0806F4B0: .4byte UseFameCheckerFromMenu +_0806F4B0: .4byte ReturnToBagFromKeyItem thumb_func_end sub_806F480 thumb_func_start sub_806F4B4 diff --git a/include/berry_pouch.h b/include/berry_pouch.h index 8427afc7e..7c2bbb5cd 100644 --- a/include/berry_pouch.h +++ b/include/berry_pouch.h @@ -1,7 +1,12 @@ #ifndef GUARD_BERRY_POUCH_H #define GUARD_BERRY_POUCH_H +#include "task.h" + void sub_813D808(u8 taskId); void sub_813D934(void (*)(void)); +void InitBerryPouch(u8, void (*)(void), u8); +void sub_813EB20(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc); +void sub_813E2B8(u8 taskId); #endif //GUARD_BERRY_POUCH_H diff --git a/include/constants/flags.h b/include/constants/flags.h index 98ec3e47e..209e68aee 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -1,6 +1,10 @@ #ifndef GUARD_CONSTANTS_FLAGS_H #define GUARD_CONSTANTS_FLAGS_H +// Sys Flags Maybe +#define FLAG_WHITE_FLUTE_ACTIVE 0x803 +#define FLAG_BLACK_FLUTE_ACTIVE 0x804 + // World Map Flags #define FLAG_WORLD_MAP_PALLET_TOWN 0x890 #define FLAG_WORLD_MAP_VIRIDIAN_CITY 0x891 diff --git a/include/constants/vars.h b/include/constants/vars.h index 38c47c965..989b27387 100644 --- a/include/constants/vars.h +++ b/include/constants/vars.h @@ -35,8 +35,8 @@ #define VAR_0x401D 0x401D #define VAR_0x401E 0x401E #define VAR_0x401F 0x401F -#define VAR_RECYCLE_GOODS 0x4020 -#define VAR_REPEL_STEP_COUNT 0x4021 +#define VAR_REPEL_STEP_COUNT 0x4020 +#define VAR_0x4021 0x4021 #define VAR_ICE_STEP_COUNT 0x4022 #define VAR_0x4023 0x4023 #define VAR_MIRAGE_RND_H 0x4024 diff --git a/include/field_effect.h b/include/field_effect.h index 979037a8e..426f77510 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -82,5 +82,6 @@ bool8 FieldEffectActiveListContains(u8 id); void sub_80B69DC(void); void CreateTeleportFieldEffectTask(void); void FieldEffectActiveListRemove(u8 id); +void sub_8085620(void); #endif //GUARD_FIELD_EFFECTS_H diff --git a/include/field_specials.h b/include/field_specials.h index c1bc8e8c9..a12fee575 100644 --- a/include/field_specials.h +++ b/include/field_specials.h @@ -7,5 +7,6 @@ u8 GetLeadMonIndex(void); u8 CountDigits(u16 number); void TV_PrintIntToStringVar(u8, int); u16 ScrSpecial_GetStarter(void); +void sub_80CCB68(void); #endif // GUARD_FIELD_SPECIALS_H diff --git a/include/item_menu.h b/include/item_menu.h index e8ccfcbd9..cfe55769d 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -27,12 +27,15 @@ void sub_81AAC50(void); void sub_81AAC70(void); void sub_8108CF0(void); void sub_810B108(u8); -void UseFameCheckerFromMenu(void); +void ReturnToBagFromKeyItem(void); void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2); void sub_8108B50(u8 taskId); void sub_8108CB4(void); void sub_8108EE0(void (*)(void)); void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc); void sub_810A1F8(u8 taskId); +void sub_8107ECC(void); +void sub_8108DC8(u8 pocketId); +void sub_81089F4(u8 pocketId); #endif //GUARD_ITEM_MENU_H diff --git a/include/item_use.h b/include/item_use.h index d8356d7c1..0a45762f7 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -12,7 +12,7 @@ void FieldUseFunc_OldRod(u8 taskId); void FieldUseFunc_CoinCase(u8 taskId); void FieldUseFunc_PowderJar(u8 taskId); void FieldUseFunc_PokeFlute(u8 taskId); -void FieldUseFunc_OpenPartyMenu(u8 taskId); +void FieldUseFunc_Medicine(u8 taskId); void FieldUseFunc_Ether(u8 taskId); void FieldUseFunc_PpUp(u8 taskId); void FieldUseFunc_RareCandy(u8 taskId); @@ -27,10 +27,10 @@ void FieldUseFunc_BlackFlute(u8 taskId); void FieldUseFunc_TownMap(u8 taskId); void FieldUseFunc_FameChecker(u8 taskId); void FieldUseFunc_VsSeeker(u8 taskId); -void BattleUseFunc_MasterBall(u8 taskId); +void BattleUseFunc_PokeBallEtc(u8 taskId); void BattleUseFunc_PokeFlute(u8 taskId); void BattleUseFunc_GuardSpec(u8 taskId); -void BattleUseFunc_OpenPartyMenu(u8 taskId); +void BattleUseFunc_Medicine(u8 taskId); void BattleUseFunc_Ether(u8 taskId); void BattleUseFunc_PokeDoll(u8 taskId); void FieldUseFunc_OakStopsYou(u8 taskId); diff --git a/include/itemfinder.h b/include/itemfinder.h new file mode 100644 index 000000000..2b882b144 --- /dev/null +++ b/include/itemfinder.h @@ -0,0 +1,6 @@ +#ifndef GUARD_ITEMFINDER_H +#define GUARD_ITEMFINDER_H + +void sub_813EC8C(u8 taskId); + +#endif //GUARD_ITEMFINDER_H diff --git a/include/mail.h b/include/mail.h index 8cfca66dd..9ffccbb5b 100644 --- a/include/mail.h +++ b/include/mail.h @@ -21,6 +21,6 @@ bool8 MonHasMail(struct Pokemon *mon); void TakeMailFromMon(struct Pokemon *mon); u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail); void ClearMailStruct(struct MailStruct *mail); -void sub_80BEBEC(u16 *, void (*)(void), u8); +void sub_80BEBEC(struct MailStruct * mail, void (* callback)(void), u8 a2); #endif // GUARD_MAIL_H diff --git a/include/overworld.h b/include/overworld.h index 122d73736..ab77542c2 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -115,5 +115,6 @@ void sub_8055DC4(void); bool8 sub_8055FC4(void); bool8 is_light_level_8_or_9(u8 mapType); bool32 sub_8055C9C(void); +void sub_8054D70(void); #endif //GUARD_ROM4_H diff --git a/include/party_menu.h b/include/party_menu.h index 527147296..5b40a945a 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -52,5 +52,14 @@ void GetMonNickname(const struct Pokemon * mon, u8 * dest); void sub_81202F8(const u8 * src, u8 a1); bool8 sub_8120370(void); void PartyMenuInit(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback); +void sub_81252D0(u8 taskId, TaskFunc followUpFunc); +void sub_81256F8(u8 taskId, TaskFunc followUpFunc); +void dp05_pp_up(u8 taskId, TaskFunc followUpFunc); +void dp05_rare_candy(u8 taskId, TaskFunc followUpFunc); +void sub_8126B60(u8 taskId, TaskFunc followUpFunc); +void sub_8126894(u8 taskId, TaskFunc followUpFunc); +void sub_81279E0(void); +void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc); +u8 GetItemEffectType(u16 itemId); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index a6dd9931b..ec828131b 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -678,4 +678,6 @@ u8 GetMonsStateToDoubles(void); void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src); void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition); +const u8 * sub_8042DA4(u16 itemId); + #endif // GUARD_POKEMON_H diff --git a/include/region_map.h b/include/region_map.h index ea8a8130e..394fee469 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -95,5 +95,6 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag); u8 *GetMapName(u8 *, u16, u16); bool32 sub_8124668(u8 mapSecId); void sub_80C4DF8(u8 *, u8); +void sub_80BFF50(u8 a0, void (*a1)(void)); #endif //GUARD_REGION_MAP_H diff --git a/include/strings.h b/include/strings.h index 23562d4b9..1aa858e82 100644 --- a/include/strings.h +++ b/include/strings.h @@ -164,10 +164,16 @@ extern const u8 gText_ReturnToPC[]; extern const u8 gUnknown_8416425[]; extern const u8 gUnknown_8416451[]; extern const u8 gUnknown_8416537[]; +extern const u8 gUnknown_841658C[]; +extern const u8 gUnknown_841659E[]; +extern const u8 gUnknown_84165D2[]; +extern const u8 gUnknown_8416600[]; +extern const u8 gUnknown_8416631[]; extern const u8 gUnknown_8416644[]; extern const u8 gUnknown_841665C[]; extern const u8 gUnknown_8416690[]; extern const u8 gUnknown_84166A7[]; +extern const u8 gUnknown_84169DC[]; extern const u8 gUnknown_84162BD[]; diff --git a/ld_script.txt b/ld_script.txt index 62ac8c008..9556fb8fd 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -154,7 +154,6 @@ SECTIONS { asm/field_special_scene.o(.text); asm/safari_zone.o(.text); src/item_use.o(.text); - asm/item_use.o(.text); asm/battle_anim_effects_1.o(.text); asm/battle_anim_effects_2.o(.text); asm/water.o(.text); diff --git a/src/data/items.json b/src/data/items.json index 8d176df3d..b976e4c3e 100644 --- a/src/data/items.json +++ b/src/data/items.json @@ -29,7 +29,7 @@ "type": 0, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 0 }, { @@ -45,7 +45,7 @@ "type": 1, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 1 }, { @@ -61,7 +61,7 @@ "type": 2, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 2 }, { @@ -77,7 +77,7 @@ "type": 3, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 3 }, { @@ -93,7 +93,7 @@ "type": 4, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 4 }, { @@ -109,7 +109,7 @@ "type": 5, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 5 }, { @@ -125,7 +125,7 @@ "type": 6, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 6 }, { @@ -141,7 +141,7 @@ "type": 7, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 7 }, { @@ -157,7 +157,7 @@ "type": 8, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 8 }, { @@ -173,7 +173,7 @@ "type": 9, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 9 }, { @@ -189,7 +189,7 @@ "type": 10, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 10 }, { @@ -205,7 +205,7 @@ "type": 11, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 11 }, { @@ -219,9 +219,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -235,9 +235,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -251,9 +251,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -267,9 +267,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -283,9 +283,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -299,9 +299,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -315,9 +315,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -331,9 +331,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -347,9 +347,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -363,9 +363,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -379,9 +379,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -395,9 +395,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -411,9 +411,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -427,9 +427,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -443,9 +443,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -459,9 +459,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -475,9 +475,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -491,9 +491,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -507,9 +507,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -523,9 +523,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -539,9 +539,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -619,9 +619,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -635,9 +635,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -653,7 +653,7 @@ "type": 1, "fieldUseFunc": "FieldUseFunc_OakStopsYou", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -669,7 +669,7 @@ "type": 1, "fieldUseFunc": "FieldUseFunc_OakStopsYou", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -715,9 +715,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -1019,7 +1019,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1035,7 +1035,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1051,7 +1051,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1067,7 +1067,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1083,7 +1083,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1131,7 +1131,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -2139,9 +2139,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2155,9 +2155,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2171,9 +2171,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2187,9 +2187,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2203,9 +2203,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2235,9 +2235,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2253,7 +2253,7 @@ "type": 4, "fieldUseFunc": "FieldUseFunc_OakStopsYou", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2267,9 +2267,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2283,9 +2283,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { diff --git a/src/fame_checker.c b/src/fame_checker.c index b3988d156..bf99bdf56 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -552,7 +552,7 @@ static void Task_TopMenuHandleInput(u8 taskId) if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF) { RunTextPrinters(); - if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu) + if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != ReturnToBagFromKeyItem) task->func = Task_StartToCloseFameChecker; else if (JOY_NEW(START_BUTTON)) { diff --git a/src/item_use.c b/src/item_use.c index 5ce0792de..5413a600f 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1,31 +1,45 @@ #include "global.h" +#include "battle.h" #include "berry_pouch.h" #include "berry_powder.h" #include "bike.h" #include "coins.h" #include "event_data.h" +#include "field_effect.h" #include "field_fadetransition.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" +#include "field_specials.h" #include "field_weather.h" #include "fieldmap.h" #include "item.h" #include "item_menu.h" #include "item_use.h" +#include "itemfinder.h" #include "mail.h" +#include "main.h" +#include "malloc.h" #include "map_obj_80688E4.h" #include "map_obj_lock.h" #include "metatile_behavior.h" #include "new_menu_helpers.h" #include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "quest_log.h" +#include "region_map.h" #include "script.h" #include "sound.h" #include "string_util.h" #include "strings.h" #include "task.h" +#include "teachy_tv.h" +#include "tm_case.h" +#include "vs_seeker.h" #include "constants/fanfares.h" #include "constants/flags.h" #include "constants/items.h" +#include "constants/maps.h" #include "constants/moves.h" #include "constants/songs.h" @@ -43,7 +57,24 @@ void ItemUseOnFieldCB_Rod(u8 taskId); void FieldUseFunc_EvoItem(u8 taskId); void sub_80A1648(u8 taskId); void sub_80A1674(u8 taskId); -void sub_813EC8C(u8 taskId); +void InitTMCaseFromBag(void); +void Task_InitTMCaseFromField(u8 taskId); +void InitBerryPouchFromBag(void); +void Task_InitBerryPouchFromField(u8 taskId); +void InitBerryPouchFromBattle(void); +void InitTeachyTvFromBag(void); +void Task_InitTeachyTvFromField(u8 taskId); +void sub_80A19E8(u8 taskId); +void sub_80A1A44(void); +void sub_80A1B48(u8 taskId); +void sub_80A1C08(u8 taskId); +void sub_80A1C44(u8 taskId); +void sub_80A1CAC(void); +void sub_80A1CC0(u8 taskId); +void sub_80A1D58(void); +void sub_80A1D68(u8 taskId); +void sub_80A1EF4(u8 taskId); +void sub_80A1F48(u8 taskId); extern void (*const gUnknown_83E2954[])(void); @@ -158,10 +189,10 @@ void FieldUseFunc_OrangeMail(u8 taskId) void sub_80A1208(void) { - u16 buffer[18]; + struct MailStruct mail; - buffer[16] = gSpecialVar_ItemId; - sub_80BEBEC(buffer, UseFameCheckerFromMenu, 0); + mail.itemId = gSpecialVar_ItemId; + sub_80BEBEC(&mail, ReturnToBagFromKeyItem, 0); } void FieldUseFunc_MachBike(u8 taskId) @@ -320,3 +351,530 @@ void sub_80A16D0(u8 taskId) { sub_80A0FBC(taskId); } + +void FieldUseFunc_Medicine(u8 taskId) +{ + gUnknown_3005E98 = sub_81252D0; + sub_80A16D0(taskId); +} + +void FieldUseFunc_Ether(u8 taskId) +{ + gUnknown_3005E98 = sub_81256F8; + sub_80A16D0(taskId); +} + +void FieldUseFunc_PpUp(u8 taskId) +{ + gUnknown_3005E98 = dp05_pp_up; + sub_80A16D0(taskId); +} + +void FieldUseFunc_RareCandy(u8 taskId) +{ + gUnknown_3005E98 = dp05_rare_candy; + sub_80A16D0(taskId); +} + +void FieldUseFunc_EvoItem(u8 taskId) +{ + gUnknown_3005E98 = sub_8126B60; + sub_80A16D0(taskId); +} + +void FieldUseFunc_SacredAsh(u8 taskId) +{ + gUnknown_3005E98 = sub_8126894; + sub_80A0FBC(taskId); +} + +void FieldUseFunc_TmCase(u8 taskId) +{ + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(InitTMCaseFromBag); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = Task_InitTMCaseFromField; + } +} + +void InitTMCaseFromBag(void) +{ + InitTMCase(0, ReturnToBagFromKeyItem, 0); +} + +void Task_InitTMCaseFromField(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + InitTMCase(0, CB2_ReturnToField, 1); + DestroyTask(taskId); + } +} + +void FieldUseFunc_BerryPouch(u8 taskId) +{ + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(InitBerryPouchFromBag); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = Task_InitBerryPouchFromField; + } +} + +void InitBerryPouchFromBag(void) +{ + InitBerryPouch(0, ReturnToBagFromKeyItem, 0); +} + +void Task_InitBerryPouchFromField(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + InitBerryPouch(0, CB2_ReturnToField, 1); + DestroyTask(taskId); + } +} + +void BattleUseFunc_BerryPouch(u8 taskId) +{ + sub_8108EE0(InitBerryPouchFromBattle); + sub_8108B50(taskId); +} + +void InitBerryPouchFromBattle(void) +{ + InitBerryPouch(4, sub_8107ECC, 0); +} + +void FieldUseFunc_TeachyTv(u8 taskId) +{ + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF); + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(InitTeachyTvFromBag); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = Task_InitTeachyTvFromField; + } +} + +void InitTeachyTvFromBag(void) +{ + InitTeachyTvController(0, ReturnToBagFromKeyItem); +} + +void Task_InitTeachyTvFromField(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + InitTeachyTvController(0, CB2_ReturnToField); + DestroyTask(taskId); + } +} + +void FieldUseFunc_SuperRepel(u8 taskId) +{ + if (VarGet(VAR_REPEL_STEP_COUNT) == 0) + { + PlaySE(SE_RU_GASYAN); + gTasks[taskId].func = sub_80A19E8; + } + else + // An earlier repel is still in effect + DisplayItemMessageInBag(taskId, 2, gUnknown_841659E, sub_810A1F8); +} + +void sub_80A19E8(u8 taskId) +{ + if (!IsSEPlaying()) + { + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF); + VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId)); + sub_80A1A44(); + DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8); + } +} + +void sub_80A1A44(void) +{ + RemoveBagItem(gSpecialVar_ItemId, 1); + sub_8108DC8(ItemId_GetPocket(gSpecialVar_ItemId)); + sub_81089F4(ItemId_GetPocket(gSpecialVar_ItemId)); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gUnknown_841658C); +} + +void FieldUseFunc_BlackFlute(u8 taskId) +{ + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF); + if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE) + { + FlagSet(FLAG_WHITE_FLUTE_ACTIVE); + FlagClear(FLAG_BLACK_FLUTE_ACTIVE); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gUnknown_84165D2); + gTasks[taskId].func = sub_80A1B48; + gTasks[taskId].data[8] = 0; + } + else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE) + { + FlagSet(FLAG_BLACK_FLUTE_ACTIVE); + FlagClear(FLAG_WHITE_FLUTE_ACTIVE); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gUnknown_8416600); + gTasks[taskId].func = sub_80A1B48; + gTasks[taskId].data[8] = 0; + } +} + +void sub_80A1B48(u8 taskId) +{ + if (++gTasks[taskId].data[8] > 7) + { + PlaySE(SE_PN_ON); + DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8); + } +} + +bool8 sub_80A1B8C(void) +{ + if (gMapHeader.escapeRope & 1) + return TRUE; + else + return FALSE; +} + +void ItemUseOutOfBattle_EscapeRope(u8 taskId) +{ + if (sub_80A1B8C() == TRUE) + { + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, gMapHeader.regionMapSectionId); + sItemUseOnFieldCB = sub_80A1C08; + sub_80A103C(taskId); + } + else + sub_80A1110(taskId, gTasks[taskId].data[3]); +} + +void sub_80A1C08(u8 taskId) +{ + sub_8054D70(); + sub_80A1A44(); + gTasks[taskId].data[0] = 0; + DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A1C44); +} + +void sub_80A1C44(u8 taskId) +{ + ResetInitialPlayerAvatarState(); + sub_8085620(); + DestroyTask(taskId); +} + +void FieldUseFunc_TownMap(u8 taskId) +{ + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(sub_80A1CAC); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = sub_80A1CC0; + } +} + +void sub_80A1CAC(void) +{ + sub_80BFF50(0, ReturnToBagFromKeyItem); +} + +void sub_80A1CC0(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + sub_80BFF50(0, CB2_ReturnToField); + DestroyTask(taskId); + } +} + +void FieldUseFunc_FameChecker(u8 taskId) +{ + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF); + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(sub_80A1D58); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = sub_80A1D68; + } +} + +void sub_80A1D58(void) +{ + UseFameChecker(ReturnToBagFromKeyItem); +} + +void sub_80A1D68(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + UseFameChecker(CB2_ReturnToField); + DestroyTask(taskId); + } +} + +void FieldUseFunc_VsSeeker(u8 taskId) +{ + if ((gMapHeader.mapType != MAP_TYPE_ROUTE + && gMapHeader.mapType != MAP_TYPE_TOWN + && gMapHeader.mapType != MAP_TYPE_CITY) + || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(VIRIDIAN_FOREST) + && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(VIRIDIAN_FOREST) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(MT_EMBER_EXTERIOR) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(THREE_ISLAND_BERRY_FOREST) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SIX_ISLAND_PATTERN_BUSH)))) + { + sub_80A1110(taskId, gTasks[taskId].data[3]); + } + else + { + sItemUseOnFieldCB = Task_VsSeeker_0; + sub_80A103C(taskId); + } +} + +void sub_80A1E0C(u8 taskId) +{ + sub_80A112C(taskId); +} + +void BattleUseFunc_PokeBallEtc(u8 taskId) +{ + if (!IsPlayerPartyAndPokemonStorageFull()) + { + RemoveBagItem(gSpecialVar_ItemId, 1); + sub_8108CB4(); + sub_8108B50(taskId); + } + else + { + DisplayItemMessageInBag(taskId, 2, gUnknown_8416631, sub_810A1F8); + } +} + +void BattleUseFunc_PokeFlute(u8 taskId) +{ + sub_8108CB4(); + sub_8108B50(taskId); +} + +void BattleUseFunc_GuardSpec(u8 taskId) +{ + if (ExecuteTableBasedItemEffect(&gPlayerParty[gBattlerPartyIndexes[gBattlerInMenuId]], gSpecialVar_ItemId, gBattlerPartyIndexes[gBattlerInMenuId], 0)) + { + DisplayItemMessageInBag(taskId, 2, gUnknown_84169DC, sub_810A1F8); + } + else + { + gTasks[taskId].data[8] = 0; + gTasks[taskId].func = sub_80A1EF4; + } +} + +void sub_80A1EF4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (++data[8] > 7) + { + u16 itemId = gSpecialVar_ItemId; + PlaySE(SE_KAIFUKU); + RemoveBagItem(itemId, 1); + DisplayItemMessageInBag(taskId, 2, sub_8042DA4(itemId), sub_80A1F48); + } +} + +void sub_80A1F48(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + sub_8108CB4(); + sub_8108B50(taskId); + } +} + +void sub_80A1F78(u8 taskId) +{ + if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) + { + sub_813D934(sub_81279E0); + sub_813D808(taskId); + } + else + { + sub_8108EE0(sub_81279E0); + sub_8108B50(taskId); + } +} + +void BattleUseFunc_Medicine(u8 taskId) +{ + gUnknown_3005E98 = ItemUseCB_Medicine; + sub_80A1F78(taskId); +} + +void sub_80A1FD8(u8 taskId) +{ + gUnknown_3005E98 = sub_8126894; + sub_80A1F78(taskId); +} + +void BattleUseFunc_Ether(u8 taskId) +{ + gUnknown_3005E98 = sub_81256F8; + sub_80A1F78(taskId); +} + +void BattleUseFunc_PokeDoll(u8 taskId) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) + { + sub_80A1A44(); + ItemUse_SetQuestLogEvent(4, 0, gSpecialVar_ItemId, 0xFFFF); + DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_8108B50); + } + else + sub_80A1110(taskId, 0); +} + +void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) +{ + switch (GetItemEffectType(gSpecialVar_ItemId) - 1) + { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + gTasks[taskId].data[4] = 1; + FieldUseFunc_Medicine(taskId); + break; + case 9: + gTasks[taskId].data[4] = 1; + FieldUseFunc_SacredAsh(taskId); + break; + case 0: + gTasks[taskId].data[4] = 1; + FieldUseFunc_RareCandy(taskId); + break; + case 18: + case 19: + gTasks[taskId].data[4] = 1; + FieldUseFunc_PpUp(taskId); + break; + case 20: + gTasks[taskId].data[4] = 1; + FieldUseFunc_Ether(taskId); + break; + default: + gTasks[taskId].data[4] = 4; + FieldUseFunc_OakStopsYou(taskId); + } +} + +void ItemUseInBattle_EnigmaBerry(u8 taskId) +{ + switch (GetItemEffectType(gSpecialVar_ItemId)) + { + case 0: + BattleUseFunc_GuardSpec(taskId); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 11: + BattleUseFunc_Medicine(taskId); + break; + case 21: + BattleUseFunc_Ether(taskId); + break; + default: + FieldUseFunc_OakStopsYou(taskId); + } +} + +void FieldUseFunc_OakStopsYou(u8 taskId) +{ + if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) + { + StringExpandPlaceholders(gStringVar4, gUnknown_8416425); + sub_813EB20(taskId, 4, gStringVar4, sub_813E2B8); + } + else + sub_80A1110(taskId, gTasks[taskId].data[3]); +} + +void ItemUse_SetQuestLogEvent(u8 eventId, struct Pokemon * pokemon, u16 itemId, u16 param) +{ + struct UnkStruct_ItemUseQuestLog + { + u16 itemId; + u16 unk2; + u16 species; + u16 param; + } * questLog = Alloc(sizeof(*questLog)); + + questLog->itemId = itemId; + questLog->param = param; + if (pokemon != NULL) + questLog->species = GetMonData(pokemon, MON_DATA_SPECIES2); + else + questLog->species = 0xFFFF; + sub_8113550(eventId, (void *)questLog); + Free(questLog); +} diff --git a/src/pokemon.c b/src/pokemon.c index 3a9fdbf04..75250565a 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4526,7 +4526,7 @@ void sub_8042D50(int stat) BattleStringExpandPlaceholdersToDisplayedString(BattleText_UnknownString3); } -u8 *sub_8042DA4(u16 itemId) +const u8 *sub_8042DA4(u16 itemId) { int i; const u8 *itemEffect; diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 711a7f765..efffe2840 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -736,7 +736,7 @@ static void TeachyTvOptionListController(u8 taskId) { input = ListMenuHandleInput(data[0]); ListMenuGetScrollAndRow(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow); - if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != UseFameCheckerFromMenu)) + if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != ReturnToBagFromKeyItem)) { PlaySE(SE_SELECT); TeachyTvQuitBeginFade(taskId); |