summaryrefslogtreecommitdiff
path: root/src/item_use.c
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-01-19 05:49:20 -0500
committerGriffinR <griffin.g.richards@gmail.com>2021-01-19 05:49:20 -0500
commitcf9f8d01c513f13b014da3fe3995aef3071e542b (patch)
tree427ca5dceef71eb4d09248eb03c45685dbf18c3f /src/item_use.c
parentde52df56136dc6aa0a749c60a85ebd577aa38147 (diff)
Add misc item data constants
Diffstat (limited to 'src/item_use.c')
-rwxr-xr-xsrc/item_use.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/item_use.c b/src/item_use.c
index df6a35bc9..af0ca9ee5 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -77,13 +77,13 @@ EWRAM_DATA static void(*sItemUseOnFieldCB)(u8 taskId) = NULL;
// Below is set TRUE by UseRegisteredKeyItemOnField
#define tUsingRegisteredKeyItem data[3]
-// .rodata
-
+// UB here if an item with type ITEM_USE_MAIL or ITEM_USE_BAG_MENU uses SetUpItemUseCallback
+// Never occurs in vanilla, but can occur with improperly created items
static const MainCallback sItemUseCallbacks[] =
{
- CB2_ShowPartyMenuForItemUse,
- CB2_ReturnToField,
- NULL,
+ [ITEM_USE_PARTY_MENU - 1] = CB2_ShowPartyMenuForItemUse,
+ [ITEM_USE_FIELD - 1] = CB2_ReturnToField,
+ [ITEM_USE_PBLOCK_CASE - 1] = NULL,
};
static const u8 sClockwiseDirections[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
@@ -94,13 +94,12 @@ static const struct YesNoFuncTable sUseTMHMYesNoFuncTable =
.noFunc = BagMenu_InitListsMenu,
};
-// .text
-
+#define tEnigmaBerryType data[4]
static void SetUpItemUseCallback(u8 taskId)
{
u8 type;
if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY)
- type = gTasks[taskId].data[4] - 1;
+ type = gTasks[taskId].tEnigmaBerryType - 1;
else
type = ItemId_GetType(gSpecialVar_ItemId) - 1;
if (!InBattlePyramid())
@@ -218,9 +217,9 @@ void ItemUseOutOfBattle_Bike(u8 taskId)
static void ItemUseOnFieldCB_Bike(u8 taskId)
{
- if (!ItemId_GetSecondaryId(gSpecialVar_ItemId))
+ if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == MACH_BIKE)
GetOnOffBike(PLAYER_AVATAR_FLAG_MACH_BIKE);
- else
+ else // ACRO_BIKE
GetOnOffBike(PLAYER_AVATAR_FLAG_ACRO_BIKE);
ScriptUnfreezeObjectEvents();
ScriptContext2_Disable();
@@ -1065,28 +1064,28 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
case ITEM_EFFECT_SPDEF_EV:
case ITEM_EFFECT_SPEED_EV:
case ITEM_EFFECT_DEF_EV:
- gTasks[taskId].data[4] = 1;
+ gTasks[taskId].tEnigmaBerryType = ITEM_USE_PARTY_MENU;
ItemUseOutOfBattle_Medicine(taskId);
break;
case ITEM_EFFECT_SACRED_ASH:
- gTasks[taskId].data[4] = 1;
+ gTasks[taskId].tEnigmaBerryType = ITEM_USE_PARTY_MENU;
ItemUseOutOfBattle_SacredAsh(taskId);
break;
case ITEM_EFFECT_RAISE_LEVEL:
- gTasks[taskId].data[4] = 1;
+ gTasks[taskId].tEnigmaBerryType = ITEM_USE_PARTY_MENU;
ItemUseOutOfBattle_RareCandy(taskId);
break;
case ITEM_EFFECT_PP_UP:
case ITEM_EFFECT_PP_MAX:
- gTasks[taskId].data[4] = 1;
+ gTasks[taskId].tEnigmaBerryType = ITEM_USE_PARTY_MENU;
ItemUseOutOfBattle_PPUp(taskId);
break;
case ITEM_EFFECT_HEAL_PP:
- gTasks[taskId].data[4] = 1;
+ gTasks[taskId].tEnigmaBerryType = ITEM_USE_PARTY_MENU;
ItemUseOutOfBattle_PPRecovery(taskId);
break;
default:
- gTasks[taskId].data[4] = 4;
+ gTasks[taskId].tEnigmaBerryType = ITEM_USE_BAG_MENU;
ItemUseOutOfBattle_CannotUse(taskId);
break;
}