item_use: through sub_80A16D0

This commit is contained in:
PikalaxALT 2019-06-20 11:02:09 -04:00
parent 164dd43a62
commit 12f3ceb0f7
15 changed files with 158 additions and 346 deletions

View File

@ -2758,7 +2758,7 @@ _0814D03C:
movs r3, 0x6
bl ConvertIntToDecimalStringN
ldr r4, _0814D080 @ =gStringVar2
bl sub_815EFA0
bl GetBerryPowder
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0

View File

@ -2150,8 +2150,8 @@ _08108E58:
bx r0
thumb_func_end sub_8108E54
thumb_func_start sub_8108E70
sub_8108E70: @ 8108E70
thumb_func_start DisplayItemMessageInBag
DisplayItemMessageInBag: @ 8108E70
push {r4-r6,lr}
mov r6, r9
mov r5, r8
@ -2202,7 +2202,7 @@ sub_8108E70: @ 8108E70
bx r0
.align 2, 0
_08108EDC: .4byte gTasks+0x8
thumb_func_end sub_8108E70
thumb_func_end DisplayItemMessageInBag
thumb_func_start sub_8108EE0
sub_8108EE0: @ 8108EE0
@ -4376,7 +4376,7 @@ sub_810A0A8: @ 810A0A8
ldr r3, _0810A11C @ =sub_810A1D0
adds r0, r4, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
b _0810A166
.align 2, 0
_0810A110: .4byte gTasks+0x8
@ -4430,7 +4430,7 @@ sub_810A170: @ 810A170
ldr r2, _0810A184 @ =gText_ThereIsNoPokemon
ldr r3, _0810A188 @ =sub_810A1D0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
pop {r0}
bx r0
.align 2, 0
@ -4456,7 +4456,7 @@ sub_810A18C: @ 810A18C
adds r0, r4, 0
movs r1, 0x2
adds r2, r5, 0
bl sub_8108E70
bl DisplayItemMessageInBag
pop {r4,r5}
pop {r0}
bx r0
@ -4697,7 +4697,7 @@ sub_810A370: @ 810A370
ldr r3, _0810A3C8 @ =sub_810A1D0
adds r0, r5, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
b _0810A426
.align 2, 0
_0810A3BC: .4byte gTasks+0x8
@ -4826,7 +4826,7 @@ sub_810A468: @ 810A468
ldr r3, _0810A4C0 @ =sub_810A1D0
adds r0, r5, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
b _0810A51E
.align 2, 0
_0810A4B4: .4byte gTasks+0x8
@ -4981,7 +4981,7 @@ _0810A5B4:
ldr r3, _0810A5F4 @ =sub_810A1F8
adds r0, r5, 0
adds r2, r4, 0
bl sub_8108E70
bl DisplayItemMessageInBag
b _0810A63E
.align 2, 0
_0810A5E8: .4byte gStringVar1
@ -5019,7 +5019,7 @@ _0810A618:
ldr r3, _0810A650 @ =sub_810A770
adds r0, r7, 0
adds r2, r4, 0
bl sub_8108E70
bl DisplayItemMessageInBag
_0810A63E:
pop {r4-r7}
pop {r0}
@ -5112,7 +5112,7 @@ sub_810A690: @ 810A690
ldr r3, _0810A708 @ =sub_810A70C
adds r0, r5, 0
adds r2, r4, 0
bl sub_8108E70
bl DisplayItemMessageInBag
pop {r4-r6}
pop {r0}
bx r0
@ -5426,7 +5426,7 @@ sub_810A940: @ 810A940
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
bl sub_8108E70
bl DisplayItemMessageInBag
pop {r4-r6}
pop {r0}
bx r0
@ -5803,7 +5803,7 @@ _0810ACEC:
ldr r3, _0810AD0C @ =sub_810A1D0
adds r0, r4, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
_0810ACF8:
add sp, 0x14
pop {r3,r4}

View File

@ -5,308 +5,6 @@
.text
thumb_func_start FieldUseFunc_CoinCase
FieldUseFunc_CoinCase: @ 80A1460
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r4, _080A14B4 @ =gStringVar1
bl GetCoins
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
movs r2, 0
movs r3, 0x4
bl ConvertIntToDecimalStringN
ldr r4, _080A14B8 @ =gStringVar4
ldr r1, _080A14BC @ =gUnknown_8416537
adds r0, r4, 0
bl StringExpandPlaceholders
ldr r0, _080A14C0 @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A14C4 @ =0x0000ffff
movs r0, 0x4
movs r1, 0
bl ItemUse_SetQuestLogEvent
ldr r1, _080A14C8 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r1, 0xE
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A14D0
ldr r3, _080A14CC @ =sub_810A1F8
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
bl sub_8108E70
b _080A14DC
.align 2, 0
_080A14B4: .4byte gStringVar1
_080A14B8: .4byte gStringVar4
_080A14BC: .4byte gUnknown_8416537
_080A14C0: .4byte gSpecialVar_ItemId
_080A14C4: .4byte 0x0000ffff
_080A14C8: .4byte gTasks
_080A14CC: .4byte sub_810A1F8
_080A14D0:
ldr r3, _080A14E4 @ =sub_80A112C
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
bl DisplayItemMessageOnField
_080A14DC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A14E4: .4byte sub_80A112C
thumb_func_end FieldUseFunc_CoinCase
thumb_func_start FieldUseFunc_PowderJar
FieldUseFunc_PowderJar: @ 80A14E8
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r4, _080A1538 @ =gStringVar1
bl sub_815EFA0
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0
movs r3, 0x5
bl ConvertIntToDecimalStringN
ldr r4, _080A153C @ =gStringVar4
ldr r1, _080A1540 @ =gUnknown_8416644
adds r0, r4, 0
bl StringExpandPlaceholders
ldr r0, _080A1544 @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A1548 @ =0x0000ffff
movs r0, 0x4
movs r1, 0
bl ItemUse_SetQuestLogEvent
ldr r1, _080A154C @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r1, 0xE
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A1554
ldr r3, _080A1550 @ =sub_810A1F8
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
bl sub_8108E70
b _080A1560
.align 2, 0
_080A1538: .4byte gStringVar1
_080A153C: .4byte gStringVar4
_080A1540: .4byte gUnknown_8416644
_080A1544: .4byte gSpecialVar_ItemId
_080A1548: .4byte 0x0000ffff
_080A154C: .4byte gTasks
_080A1550: .4byte sub_810A1F8
_080A1554:
ldr r3, _080A1568 @ =sub_80A112C
adds r0, r5, 0
movs r1, 0x2
adds r2, r4, 0
bl DisplayItemMessageOnField
_080A1560:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A1568: .4byte sub_80A112C
thumb_func_end FieldUseFunc_PowderJar
thumb_func_start FieldUseFunc_PokeFlute
FieldUseFunc_PokeFlute: @ 80A156C
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
movs r6, 0
movs r4, 0
b _080A1598
_080A1578:
movs r0, 0x64
muls r0, r4
ldr r1, _080A15D0 @ =gPlayerParty
adds r0, r1
movs r1, 0x11
adds r2, r4, 0
movs r3, 0
bl ExecuteTableBasedItemEffect
lsls r0, 24
cmp r0, 0
bne _080A1592
movs r6, 0x1
_080A1592:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
_080A1598:
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bcc _080A1578
cmp r6, 0
beq _080A1600
ldr r0, _080A15D4 @ =gSpecialVar_ItemId
ldrh r2, [r0]
ldr r3, _080A15D8 @ =0x0000ffff
movs r0, 0x4
movs r1, 0
bl ItemUse_SetQuestLogEvent
ldr r1, _080A15DC @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r1, 0xE
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080A15E8
ldr r2, _080A15E0 @ =gUnknown_8416690
ldr r3, _080A15E4 @ =sub_80A1648
b _080A1616
.align 2, 0
_080A15D0: .4byte gPlayerParty
_080A15D4: .4byte gSpecialVar_ItemId
_080A15D8: .4byte 0x0000ffff
_080A15DC: .4byte gTasks
_080A15E0: .4byte gUnknown_8416690
_080A15E4: .4byte sub_80A1648
_080A15E8:
ldr r2, _080A15F8 @ =gUnknown_8416690
ldr r3, _080A15FC @ =sub_80A1648
adds r0, r5, 0
movs r1, 0x2
bl DisplayItemMessageOnField
b _080A1638
.align 2, 0
_080A15F8: .4byte gUnknown_8416690
_080A15FC: .4byte sub_80A1648
_080A1600:
ldr r0, _080A1620 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
movs r2, 0xE
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080A162C
ldr r2, _080A1624 @ =gUnknown_841665C
ldr r3, _080A1628 @ =sub_810A1F8
_080A1616:
adds r0, r5, 0
movs r1, 0x2
bl sub_8108E70
b _080A1638
.align 2, 0
_080A1620: .4byte gTasks
_080A1624: .4byte gUnknown_841665C
_080A1628: .4byte sub_810A1F8
_080A162C:
ldr r2, _080A1640 @ =gUnknown_841665C
ldr r3, _080A1644 @ =sub_80A112C
adds r0, r5, 0
movs r1, 0x2
bl DisplayItemMessageOnField
_080A1638:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A1640: .4byte gUnknown_841665C
_080A1644: .4byte sub_80A112C
thumb_func_end FieldUseFunc_PokeFlute
thumb_func_start sub_80A1648
sub_80A1648: @ 80A1648
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0xB
bl PlayFanfareByFanfareNum
ldr r1, _080A166C @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r1, _080A1670 @ =sub_80A1674
str r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A166C: .4byte gTasks
_080A1670: .4byte sub_80A1674
thumb_func_end sub_80A1648
thumb_func_start sub_80A1674
sub_80A1674: @ 80A1674
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
movs r0, 0
bl WaitFanfare
lsls r0, 24
cmp r0, 0
beq _080A16C0
ldr r0, _080A16A8 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r2, 0xE
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080A16B4
ldr r2, _080A16AC @ =gUnknown_84166A7
ldr r3, _080A16B0 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
bl sub_8108E70
b _080A16C0
.align 2, 0
_080A16A8: .4byte gTasks
_080A16AC: .4byte gUnknown_84166A7
_080A16B0: .4byte sub_810A1F8
_080A16B4:
ldr r2, _080A16C8 @ =gUnknown_84166A7
ldr r3, _080A16CC @ =sub_80A112C
adds r0, r5, 0
movs r1, 0x2
bl DisplayItemMessageOnField
_080A16C0:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A16C8: .4byte gUnknown_84166A7
_080A16CC: .4byte sub_80A112C
thumb_func_end sub_80A1674
thumb_func_start sub_80A16D0
sub_80A16D0: @ 80A16D0
push {lr}
lsls r0, 24
lsrs r0, 24
bl sub_80A0FBC
pop {r0}
bx r0
thumb_func_end sub_80A16D0
thumb_func_start FieldUseFunc_OpenPartyMenu
FieldUseFunc_OpenPartyMenu: @ 80A16E0
push {lr}
@ -371,8 +69,8 @@ _080A1748: .4byte gUnknown_3005E98
_080A174C: .4byte dp05_rare_candy
thumb_func_end FieldUseFunc_RareCandy
thumb_func_start FieldUseFunc_SunStone
FieldUseFunc_SunStone: @ 80A1750
thumb_func_start FieldUseFunc_EvoItem
FieldUseFunc_EvoItem: @ 80A1750
push {lr}
lsls r0, 24
lsrs r0, 24
@ -385,7 +83,7 @@ FieldUseFunc_SunStone: @ 80A1750
.align 2, 0
_080A1764: .4byte gUnknown_3005E98
_080A1768: .4byte sub_8126B60
thumb_func_end FieldUseFunc_SunStone
thumb_func_end FieldUseFunc_EvoItem
thumb_func_start FieldUseFunc_SacredAsh
FieldUseFunc_SacredAsh: @ 80A176C
@ -702,7 +400,7 @@ _080A19CC:
ldr r3, _080A19E4 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
_080A19D8:
pop {r4}
pop {r0}
@ -740,7 +438,7 @@ sub_80A19E8: @ 80A19E8
ldr r3, _080A1A40 @ =sub_810A1F8
adds r0, r6, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
_080A1A2A:
pop {r4-r6}
pop {r0}
@ -884,7 +582,7 @@ sub_80A1B48: @ 80A1B48
ldr r3, _080A1B88 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
_080A1B78:
pop {r4}
pop {r0}
@ -1254,7 +952,7 @@ _080A1E48:
ldr r3, _080A1E60 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
_080A1E54:
pop {r4}
pop {r0}
@ -1307,7 +1005,7 @@ BattleUseFunc_GuardSpec: @ 80A1E7C
ldr r3, _080A1ED0 @ =sub_810A1F8
adds r0, r4, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
b _080A1EE4
.align 2, 0
_080A1EBC: .4byte gBattlerPartyIndexes
@ -1364,7 +1062,7 @@ sub_80A1EF4: @ 80A1EF4
ldr r3, _080A1F44 @ =sub_80A1F48
adds r0, r5, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
_080A1F36:
pop {r4,r5}
pop {r0}
@ -1505,7 +1203,7 @@ BattleUseFunc_PokeDoll: @ 80A2010
ldr r3, _080A2054 @ =sub_8108B50
adds r0, r4, 0
movs r1, 0x2
bl sub_8108E70
bl DisplayItemMessageInBag
b _080A2060
.align 2, 0
_080A2044: .4byte gBattleTypeFlags

View File

@ -1274,7 +1274,7 @@ _0811F47C:
cmp r0, 0x3
bne _0811F492
adds r0, r4, 0
bl sub_80A1150
bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@ -12644,7 +12644,7 @@ sub_8124DE0: @ 8124DE0
push {r4,lr}
ldr r4, _08124E0C @ =gSpecialVar_ItemId
ldrh r0, [r4]
bl sub_80A1150
bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2

View File

@ -558,7 +558,7 @@ _0811C9AA:
adds r0, r4, 0
adds r0, 0x96
ldrh r0, [r0]
bl sub_80A1150
bl GetItemCompatibilityRule
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2

6
include/berry_powder.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef GUARD_BERRY_POWDER_H
#define GUARD_BERRY_POWDER_H
u32 GetBerryPowder(void);
#endif //GUARD_BERRY_POWDER_H

View File

@ -0,0 +1,22 @@
#ifndef GUARD_CONSTANTS_FANFARES_H
#define GUARD_CONSTANTS_FANFARES_H
enum Fanfares
{
FANFARE_00,
FANFARE_01,
FANFARE_02,
FANFARE_03,
FANFARE_04,
FANFARE_05,
FANFARE_06,
FANFARE_07,
FANFARE_08,
FANFARE_09,
FANFARE_10,
FANFARE_POKEFLUTE,
FANFARE_KEY_ITEM,
FANFARE_DEX_EVAL
};
#endif //GUARD_CONSTANTS_FANFARES_H

View File

@ -2,6 +2,7 @@
#define GUARD_ITEM_MENU_H
#include "global.h"
#include "task.h"
// Exported type declarations
@ -31,7 +32,7 @@ void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1
void sub_8108B50(u8 taskId);
void sub_8108CB4(void);
void sub_8108EE0(void (*)(void));
void sub_8108E70(u8, u8, const u8 *, void (*)(u8));
void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc);
void sub_810A1F8(u8 taskId);
#endif //GUARD_ITEM_MENU_H

View File

@ -16,7 +16,7 @@ void FieldUseFunc_OpenPartyMenu(u8 taskId);
void FieldUseFunc_Ether(u8 taskId);
void FieldUseFunc_PpUp(u8 taskId);
void FieldUseFunc_RareCandy(u8 taskId);
void FieldUseFunc_SunStone(u8 taskId);
void FieldUseFunc_EvoItem(u8 taskId);
void FieldUseFunc_SacredAsh(u8 taskId);
void FieldUseFunc_TmCase(u8 taskId);
void FieldUseFunc_BerryPouch(u8 taskId);

View File

@ -163,6 +163,11 @@ extern const u8 gText_ReturnToPC[];
extern const u8 gUnknown_8416425[];
extern const u8 gUnknown_8416451[];
extern const u8 gUnknown_8416537[];
extern const u8 gUnknown_8416644[];
extern const u8 gUnknown_841665C[];
extern const u8 gUnknown_8416690[];
extern const u8 gUnknown_84166A7[];
extern const u8 gUnknown_84162BD[];

View File

@ -285,7 +285,7 @@ SECTIONS {
src/ss_anne.o(.text);
src/cereader_tool.o(.text);
src/trainer_tower.o(.text);
src/unk_815EDDC.o(.text);
src/berry_powder.o(.text);
src/unk_815F138.o(.text);
src/berry_fix_program.o(.text);
} =0

View File

@ -84,7 +84,7 @@ bool8 sub_815EF5C(void)
}
}
u32 sub_815EFA0(void)
u32 GetBerryPowder(void)
{
return sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount);
}
@ -104,7 +104,7 @@ void sub_815F014(u8 windowId, u16 baseBlock, u8 palette, u32 powder)
void sub_815F070(void)
{
sub_815EFBC(gUnknown_203F464, sub_815EFA0(), 39, 12, 0);
sub_815EFBC(gUnknown_203F464, GetBerryPowder(), 39, 12, 0);
}
void sub_815F094(void)
@ -120,7 +120,7 @@ void sub_815F094(void)
FillWindowPixelBuffer(gUnknown_203F464, 0);
PutWindowTilemap(gUnknown_203F464);
TextWindow_SetStdFrame0_WithPal(gUnknown_203F464, 0x21D, 0xD0);
sub_815F014(gUnknown_203F464, 0x21D, 0xD, sub_815EFA0());
sub_815F014(gUnknown_203F464, 0x21D, 0xD, GetBerryPowder());
}
}

View File

@ -1499,7 +1499,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
"fieldUseFunc": "FieldUseFunc_SunStone",
"fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@ -1515,7 +1515,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
"fieldUseFunc": "FieldUseFunc_SunStone",
"fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@ -1531,7 +1531,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
"fieldUseFunc": "FieldUseFunc_SunStone",
"fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@ -1547,7 +1547,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
"fieldUseFunc": "FieldUseFunc_SunStone",
"fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@ -1563,7 +1563,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
"fieldUseFunc": "FieldUseFunc_SunStone",
"fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0
@ -1579,7 +1579,7 @@
"exitsBagOnUse": 0,
"pocket": "POCKET_ITEMS",
"type": 1,
"fieldUseFunc": "FieldUseFunc_SunStone",
"fieldUseFunc": "FieldUseFunc_EvoItem",
"battleUsage": 0,
"battleUseFunc": "NULL",
"secondaryId": 0

View File

@ -1,6 +1,8 @@
#include "global.h"
#include "berry_pouch.h"
#include "berry_powder.h"
#include "bike.h"
#include "coins.h"
#include "event_data.h"
#include "field_fadetransition.h"
#include "field_map_obj_helpers.h"
@ -9,6 +11,7 @@
#include "fieldmap.h"
#include "item.h"
#include "item_menu.h"
#include "item_use.h"
#include "mail.h"
#include "map_obj_80688E4.h"
#include "map_obj_lock.h"
@ -20,8 +23,10 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "constants/fanfares.h"
#include "constants/flags.h"
#include "constants/items.h"
#include "constants/moves.h"
#include "constants/songs.h"
EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL;
@ -35,8 +40,10 @@ void sub_80A1208(void);
void ItemUseOnFieldCB_Bicycle(u8 taskId);
bool8 ItemUseCheckFunc_Rod(void);
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 FieldUseFunc_SunStone(u8 taskId);
extern void (*const gUnknown_83E2954[])(void);
@ -90,7 +97,7 @@ void sub_80A10C4(u8 taskId, bool8 a1, u8 a2, const u8 * str)
{
StringExpandPlaceholders(gStringVar4, str);
if (a1 == FALSE)
sub_8108E70(taskId, a2, gStringVar4, sub_810A1F8);
DisplayItemMessageInBag(taskId, a2, gStringVar4, sub_810A1F8);
else
DisplayItemMessageOnField(taskId, a2, gStringVar4, sub_80A112C);
}
@ -108,11 +115,11 @@ void sub_80A112C(u8 taskId)
ScriptContext2_Disable();
}
u8 sub_80A1150(u16 itemId)
u8 GetItemCompatibilityRule(u16 itemId)
{
if (ItemId_GetPocket(itemId) == POCKET_TM_CASE)
return 1;
else if (ItemId_GetFieldFunc(itemId) == FieldUseFunc_SunStone)
else if (ItemId_GetFieldFunc(itemId) == FieldUseFunc_EvoItem)
return 2;
else
return 0;
@ -240,3 +247,76 @@ void ItemUseOutOfBattle_Itemfinder(u8 taskId)
sItemUseOnFieldCB = sub_813EC8C;
sub_80A103C(taskId);
}
void FieldUseFunc_CoinCase(u8 taskId)
{
ConvertIntToDecimalStringN(gStringVar1, GetCoins(), STR_CONV_MODE_LEFT_ALIGN, 4);
StringExpandPlaceholders(gStringVar4, gUnknown_8416537);
ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].data[3] == 0)
DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
else
DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A112C);
}
void FieldUseFunc_PowderJar(u8 taskId)
{
ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 5);
StringExpandPlaceholders(gStringVar4, gUnknown_8416644);
ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].data[3] == 0)
DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8);
else
DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A112C);
}
void FieldUseFunc_PokeFlute(u8 taskId)
{
bool8 wokeSomeoneUp = FALSE;
u8 i;
for (i = 0; i < CalculatePlayerPartyCount(); i++)
{
if (!ExecuteTableBasedItemEffect(&gPlayerParty[i], ITEM_AWAKENING, i, MOVE_NONE))
wokeSomeoneUp = TRUE;
}
if (wokeSomeoneUp)
{
ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF);
if (gTasks[taskId].data[3] == 0)
DisplayItemMessageInBag(taskId, 2, gUnknown_8416690, sub_80A1648);
else
DisplayItemMessageOnField(taskId, 2, gUnknown_8416690, sub_80A1648);
}
else
{
// Now that's a catchy tune!
if (gTasks[taskId].data[3] == 0)
DisplayItemMessageInBag(taskId, 2, gUnknown_841665C, sub_810A1F8);
else
DisplayItemMessageOnField(taskId, 2, gUnknown_841665C, sub_80A112C);
}
}
void sub_80A1648(u8 taskId)
{
PlayFanfareByFanfareNum(FANFARE_POKEFLUTE);
gTasks[taskId].func = sub_80A1674;
}
void sub_80A1674(u8 taskId)
{
if (WaitFanfare(FALSE))
{
if (gTasks[taskId].data[3] == 0)
DisplayItemMessageInBag(taskId, 2, gUnknown_84166A7, sub_810A1F8);
else
DisplayItemMessageOnField(taskId, 2, gUnknown_84166A7, sub_80A112C);
}
}
void sub_80A16D0(u8 taskId)
{
sub_80A0FBC(taskId);
}

View File

@ -1571,4 +1571,4 @@ gUnknown_203F440: @ 203F440
.align 2
.include "src/trainer_tower.o"
.align 2
.include "src/unk_815EDDC.o"
.include "src/berry_powder.o"