summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGriffinR <griffin.richards@comcast.net>2019-12-21 19:01:38 -0500
committerGriffinR <griffin.richards@comcast.net>2019-12-21 21:39:30 -0500
commit749965d56b00a33d988431eacf1405e8aeccb5bf (patch)
tree1d754df1c1c0dfe321b8ff55cd77ee857e915a78 /src
parent026e1108b26f4ce5cea362997135bd8efc7cb28a (diff)
Document item_use.c
Diffstat (limited to 'src')
-rw-r--r--src/battle_ai_switch_items.c6
-rw-r--r--src/battle_pyramid_bag.c20
-rw-r--r--src/berry_tag_screen.c2
-rw-r--r--src/bike.c2
-rw-r--r--src/data/pokemon/item_effects.h2
-rw-r--r--src/decoration.c1
-rw-r--r--src/fieldmap.c2
-rw-r--r--src/fldeff_dig.c2
-rwxr-xr-xsrc/item_menu.c46
-rwxr-xr-xsrc/item_use.c490
-rw-r--r--src/overworld.c6
-rwxr-xr-xsrc/party_menu.c2
-rw-r--r--src/pokeblock.c2
-rw-r--r--src/pokemon.c26
-rw-r--r--src/region_map.c2
-rw-r--r--src/secret_base.c1
16 files changed, 324 insertions, 288 deletions
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 6ef359150..32f9620b7 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -787,9 +787,9 @@ static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u
return AI_ITEM_HEAL_HP;
else if (itemEffect[3] & ITEM3_STATUS_ALL)
return AI_ITEM_CURE_CONDITION;
- else if (itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0)
+ else if (itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK) || itemEffect[1] != 0 || itemEffect[2] != 0)
return AI_ITEM_X_STAT;
- else if (itemEffect[3] & ITEM3_MIST)
+ else if (itemEffect[3] & ITEM3_GUARD_SPEC)
return AI_ITEM_GUARD_SPECS;
else
return AI_ITEM_NOT_RECOGNIZABLE;
@@ -907,7 +907,7 @@ static bool8 ShouldUseItem(void)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x8;
if (itemEffects[2] & ITEM2_X_ACCURACY)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x20;
- if (itemEffects[0] & ITEM0_HIGH_CRIT)
+ if (itemEffects[0] & ITEM0_DIRE_HIT)
*(gBattleStruct->AI_itemFlags + gActiveBattler / 2) |= 0x80;
shouldUse = TRUE;
break;
diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c
index bdd1b1462..7c650800b 100644
--- a/src/battle_pyramid_bag.c
+++ b/src/battle_pyramid_bag.c
@@ -67,7 +67,7 @@ static void sub_81C700C(void);
static void sub_81C6E98(void);
static void sub_81C6F20(void);
static void sub_81C6404(void);
-static void sub_81C6E1C(void);
+static void CloseBattlePyramidBagTextWindow(void);
static bool8 sub_81C5238(void);
static bool8 sub_81C5078(void);
static void ShowItemImage(u16 itemId, u8 itemSpriteArrayId);
@@ -809,7 +809,7 @@ static void sub_81C5AB8(u8 y, u8 arg1)
PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1);
}
-void sub_81C5B14(u8 taskId)
+void CloseBattlePyramidBagAndSetCallback(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = sub_81C5B4C;
@@ -862,7 +862,7 @@ static void Task_HandlePyramidBagInput(u8 taskId)
case LIST_CANCEL:
PlaySE(SE_SELECT);
gSpecialVar_ItemId = 0;
- sub_81C5B14(taskId);
+ CloseBattlePyramidBagAndSetCallback(taskId);
break;
default:
PlaySE(SE_SELECT);
@@ -1043,7 +1043,7 @@ static void BagAction_UseOnField(u8 taskId)
|| ItemIsMail(gSpecialVar_ItemId) == TRUE)
{
sub_81C61A8();
- DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714);
+ DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage);
}
else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL)
{
@@ -1203,7 +1203,7 @@ static void BagAction_Give(u8 taskId)
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
{
gPyramidBagResources->callback2 = CB2_ChooseMonToGiveItem;
- sub_81C5B14(taskId);
+ CloseBattlePyramidBagAndSetCallback(taskId);
}
else
{
@@ -1223,15 +1223,15 @@ static void sub_81C66EC(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- sub_81C6714(taskId);
+ Task_CloseBattlePyramidBagMessage(taskId);
}
}
-void sub_81C6714(u8 taskId)
+void Task_CloseBattlePyramidBagMessage(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- sub_81C6E1C();
+ CloseBattlePyramidBagTextWindow();
PrintItemDescription(data[1]);
sub_81C5A98(data[0], 0);
SetTaskToMainPyramidBagInputHandler(taskId);
@@ -1242,7 +1242,7 @@ static void sub_81C674C(u8 taskId)
if (!itemid_80BF6D8_mail_related(gSpecialVar_ItemId))
DisplayItemMessageInBattlePyramid(taskId, gText_CantWriteMail, sub_81C66EC);
else if (!ItemId_GetImportance(gSpecialVar_ItemId))
- sub_81C5B14(taskId);
+ CloseBattlePyramidBagAndSetCallback(taskId);
else
sub_81C66AC(taskId);
}
@@ -1462,7 +1462,7 @@ void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback
schedule_bg_copy_tilemap_to_vram(1);
}
-static void sub_81C6E1C(void)
+static void CloseBattlePyramidBagTextWindow(void)
{
ClearDialogWindowAndFrameToTransparent(2, FALSE);
// This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it.
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 873d01dc7..89175c1bf 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -527,7 +527,7 @@ static void Task_CloseBerryTagScreen(u8 taskId)
DestroyFlavorCircleSprites();
Free(sBerryTag);
FreeAllWindowBuffers();
- SetMainCallback2(bag_menu_mail_related);
+ SetMainCallback2(CB2_ReturnToBagMenuPocket);
DestroyTask(taskId);
}
}
diff --git a/src/bike.c b/src/bike.c
index fad61ffab..7397fed40 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -1056,7 +1056,7 @@ void Bike_HandleBumpySlopeJump(void)
bool32 IsRunningDisallowed(u8 metatile)
{
- if (!(gMapHeader.flags & 4) || IsRunningDisallowedByMetatile(metatile) == TRUE)
+ if (!(gMapHeader.flags & MAP_ALLOW_RUN) || IsRunningDisallowedByMetatile(metatile) == TRUE)
return TRUE;
else
return FALSE;
diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h
index 2c153b0ef..698d97a43 100644
--- a/src/data/pokemon/item_effects.h
+++ b/src/data/pokemon/item_effects.h
@@ -236,7 +236,7 @@ const u8 gItemEffect_PPMax[9] = {
};
const u8 gItemEffect_GuardSpec[8] = {
- [3] = ITEM3_MIST,
+ [3] = ITEM3_GUARD_SPEC,
[5] = ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID,
[6] = 1,
[7] = 1,
diff --git a/src/decoration.c b/src/decoration.c
index df28e3b77..d09f238d7 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -14,6 +14,7 @@
#include "graphics.h"
#include "international_string_util.h"
#include "item_icon.h"
+#include "item_menu.h"
#include "list_menu.h"
#include "main.h"
#include "menu.h"
diff --git a/src/fieldmap.c b/src/fieldmap.c
index f595803ff..21bbaa8f8 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -859,7 +859,7 @@ int sub_8088A4C(struct MapConnection *connection, int x, int y)
return FALSE;
}
-struct MapConnection *sub_8088A8C(s16 x, s16 y)
+struct MapConnection *GetConnectionAtCoords(s16 x, s16 y)
{
int count;
struct MapConnection *connection;
diff --git a/src/fldeff_dig.c b/src/fldeff_dig.c
index b39d25182..7f10e126e 100644
--- a/src/fldeff_dig.c
+++ b/src/fldeff_dig.c
@@ -57,7 +57,7 @@ static void sub_8135780(void)
}
else
{
- taskId = CreateTask(task08_080A1C44, 8);
+ taskId = CreateTask(Task_UseDigEscapeRopeOnField, 8);
gTasks[taskId].data[0] = 0;
}
}
diff --git a/src/item_menu.c b/src/item_menu.c
index 6b0226188..97ef4f933 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -136,7 +136,7 @@ void ItemMenu_Give(u8 taskId);
void ItemMenu_Cancel(u8 taskId);
void ItemMenu_UseInBattle(u8 taskId);
void ItemMenu_CheckTag(u8 taskId);
-void unknown_ItemMenu_Confirm(u8 taskId);
+void Task_FadeAndCloseBagMenu(u8 taskId);
void unknown_ItemMenu_Show(u8 taskId);
void unknown_ItemMenu_Give2(u8 taskId);
void unknown_ItemMenu_Confirm2(u8 taskId);
@@ -216,7 +216,7 @@ const struct MenuAction sItemMenuActions[] = {
{gMenuText_Walk, ItemMenu_UseOutOfBattle},
{gMenuText_Deselect, ItemMenu_Register},
{gMenuText_CheckTag, ItemMenu_CheckTag},
- {gMenuText_Confirm, unknown_ItemMenu_Confirm},
+ {gMenuText_Confirm, Task_FadeAndCloseBagMenu},
{gMenuText_Show, unknown_ItemMenu_Show},
{gMenuText_Give2, unknown_ItemMenu_Give2},
{gMenuText_Confirm, unknown_ItemMenu_Confirm2},
@@ -241,7 +241,7 @@ const TaskFunc gUnknown_08614054[] = {
unknown_item_menu_type,
item_menu_type_2,
DisplaySellItemAskString,
- unknown_ItemMenu_Confirm,
+ Task_FadeAndCloseBagMenu,
unknown_item_menu_type,
DisplayDepositItemAskString,
unknown_item_menu_type,
@@ -942,7 +942,7 @@ void FreeBagItemListBuffers(void)
Free(gBagMenu);
}
-void unknown_ItemMenu_Confirm(u8 taskId)
+void Task_FadeAndCloseBagMenu(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = TaskCloseBagMenu_2;
@@ -966,7 +966,7 @@ void TaskCloseBagMenu_2(u8 taskId)
}
}
-void sub_81AB9A8(u8 pocketId)
+void UpdatePocketItemList(u8 pocketId)
{
u16 i;
struct BagPocket *pocket = &gBagPockets[pocketId];
@@ -997,7 +997,7 @@ void sub_81ABA6C(void)
{
u8 i;
for (i = 0; i < POCKETS_COUNT; i++)
- sub_81AB9A8(i);
+ UpdatePocketItemList(i);
}
void SetInitialScrollAndCursorPositions(u8 pocketId)
@@ -1041,7 +1041,7 @@ void BagMenu_InitListsMenu(u8 taskId)
u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
bag_menu_RemoveBagItem_message_window(4);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
- sub_81AB9A8(gBagPositionStruct.pocket);
+ UpdatePocketItemList(gBagPositionStruct.pocket);
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
@@ -1117,7 +1117,7 @@ void Task_BagMenu(u8 taskId)
}
PlaySE(SE_SELECT);
gSpecialVar_ItemId = select;
- gTasks[taskId].func = unknown_ItemMenu_Confirm;
+ gTasks[taskId].func = Task_FadeAndCloseBagMenu;
break;
default: // A_BUTTON
PlaySE(SE_SELECT);
@@ -1744,7 +1744,7 @@ void Task_ActuallyToss(u8 taskId)
PlaySE(SE_SELECT);
RemoveBagItem(gSpecialVar_ItemId, data[8]);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
- sub_81AB9A8(gBagPositionStruct.pocket);
+ UpdatePocketItemList(gBagPositionStruct.pocket);
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
@@ -1784,7 +1784,7 @@ void ItemMenu_Give(u8 taskId)
else
{
gBagMenu->mainCallback2 = CB2_ChooseMonToGiveItem;
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
}
else
@@ -1817,7 +1817,7 @@ void sub_81AD350(u8 taskId)
void ItemMenu_CheckTag(u8 taskId)
{
gBagMenu->mainCallback2 = DoBerryTagScreen;
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
void ItemMenu_Cancel(u8 taskId)
@@ -1841,7 +1841,7 @@ void ItemMenu_UseInBattle(u8 taskId)
}
}
-void bag_menu_mail_related(void)
+void CB2_ReturnToBagMenuPocket(void)
{
GoToBagMenu(RETURN_LOCATION_UNCHANGED, POCKETS_COUNT, NULL);
}
@@ -1860,7 +1860,7 @@ void item_menu_type_2(u8 taskId)
}
else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
{
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
else
{
@@ -1873,11 +1873,13 @@ void item_menu_type_b(u8 taskId)
if (ItemIsMail(gSpecialVar_ItemId) == TRUE)
DisplayItemMessage(taskId, 1, gText_CantWriteMail, sub_81AD350);
else if (gBagPositionStruct.pocket != KEYITEMS_POCKET && !ItemId_GetImportance(gSpecialVar_ItemId))
- gTasks[taskId].func = unknown_ItemMenu_Confirm;
+ gTasks[taskId].func = Task_FadeAndCloseBagMenu;
else
BagMenu_PrintItemCantBeHeld(taskId);
}
+#define tUsingRegisteredKeyItem data[3]
+
bool8 UseRegisteredKeyItemOnField(void)
{
u8 taskId;
@@ -1896,16 +1898,20 @@ bool8 UseRegisteredKeyItemOnField(void)
sub_808BCF4();
gSpecialVar_ItemId = gSaveBlock1Ptr->registeredItem;
taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1Ptr->registeredItem), 8);
- gTasks[taskId].data[3] = 1;
+ gTasks[taskId].tUsingRegisteredKeyItem = TRUE;
return TRUE;
}
else
+ {
gSaveBlock1Ptr->registeredItem = ITEM_NONE;
+ }
}
ScriptContext1_SetupScript(EventScript_SelectWithoutRegisteredItem);
return TRUE;
}
+#undef tUsingRegisteredKeyItem
+
void DisplaySellItemAskString(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -2012,7 +2018,7 @@ void sub_81AD8C8(u8 taskId)
RemoveBagItem(gSpecialVar_ItemId, data[8]);
AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
- sub_81AB9A8(gBagPositionStruct.pocket);
+ UpdatePocketItemList(gBagPositionStruct.pocket);
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
LoadBagItemListBuffers(gBagPositionStruct.pocket);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos);
@@ -2186,7 +2192,7 @@ void Task_WallyTutorialBagMenu(u8 taskId)
BagMenu_RemoveSomeWindow();
DestroyListMenuTask(data[0], 0, 0);
RestoreBagAfterWallyTutorial();
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
break;
default:
data[8]++;
@@ -2200,7 +2206,7 @@ void unknown_ItemMenu_Show(u8 taskId)
gSpecialVar_0x8005 = gSpecialVar_ItemId;
gSpecialVar_Result = 1;
BagMenu_RemoveSomeWindow();
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
void CB2_ApprenticeExitBagMenu(void)
@@ -2214,7 +2220,7 @@ void unknown_ItemMenu_Give2(u8 taskId)
RemoveBagItem(gSpecialVar_ItemId, 1);
gSpecialVar_Result = 1;
BagMenu_RemoveSomeWindow();
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
void CB2_FavorLadyExitBagMenu(void)
@@ -2227,7 +2233,7 @@ void unknown_ItemMenu_Confirm2(u8 taskId)
{
gSpecialVar_Result = 1;
BagMenu_RemoveSomeWindow();
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
void CB2_QuizLadyExitBagMenu(void)
diff --git a/src/item_use.c b/src/item_use.c
index 7a410aa7d..b352079cf 100755
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -10,6 +10,7 @@
#include "data.h"
#include "event_data.h"
#include "event_object_movement.h"
+#include "event_scripts.h"
#include "fieldmap.h"
#include "field_effect.h"
#include "field_player_avatar.h"
@@ -43,49 +44,40 @@
#include "constants/vars.h"
#include "event_obj_lock.h"
-extern u8 BerryTree_EventScript_ItemUsePlantBerry[];
-extern u8 BerryTree_EventScript_ItemUseWailmerPail[];
-extern u8 BattleFrontier_OutsideEast_EventScript_WaterSudowoodo[];
-
-void SetUpItemUseCallback(u8 taskId);
-void MapPostLoadHook_UseItem(void);
-void sub_80AF6D4(void);
-void Task_CallItemUseOnFieldCallback(u8 taskId);
-void BagMenu_InitListsMenu(u8 taskId);
-void ItemUseOnFieldCB_Bike(u8 taskId);
-void ItemUseOnFieldCB_Rod(u8 taskId);
-void ItemUseOnFieldCB_Itemfinder(u8 taskId);
-void sub_80FD504(u8 taskId);
-void sub_80FD5CC(u8 taskId);
-void sub_80FDA94(u8 taskId);
-void sub_80FDADC(u8 taskId);
-void sub_80FD7C8(u8 taskId);
-void sub_80FDC00(u8 taskId);
-void ItemUseOnFieldCB_Berry(u8 taskId);
-void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId);
-void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId);
+static void SetUpItemUseCallback(u8 taskId);
+static void FieldCB_UseItemOnField(void);
+static void Task_CallItemUseOnFieldCallback(u8 taskId);
+static void Task_UseItemfinder(u8 taskId);
+static void Task_CloseItemfinderMessage(u8 taskId);
+static void Task_HiddenItemNearby(u8 taskId);
+static void Task_StandingOnHiddenItem(u8 taskId);
+static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8);
+static u8 GetDirectionToHiddenItem(s16 distanceX, s16 distanceY);
+static void PlayerFaceHiddenItem(u8 a);
+static void CheckForHiddenItemsInMapConnection(u8 taskId);
+static void sub_80FDC00(u8 taskId);
+static void ItemUseOnFieldCB_Bike(u8 taskId);
+static void ItemUseOnFieldCB_Rod(u8);
+static void ItemUseOnFieldCB_Itemfinder(u8);
+static void ItemUseOnFieldCB_Berry(u8 taskId);
+static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId);
+static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId);
+static bool8 TryToWaterSudowoodo(void);
static void BootUpSoundTMHM(u8 taskId);
static void Task_ShowTMHMContainedMessage(u8 taskId);
static void UseTMHMYesNo(u8 taskId);
static void UseTMHM(u8 taskId);
-void sub_80FE124(u8 taskId);
-void sub_80FE164(u8 taskId);
-
-void DisplayItemMessage(u8 taskId, u8 a, const u8* str, void(*callback)(u8 taskId));
-void DisplayItemMessageOnField(u8 taskId, const u8* str, void(*callback)(u8 taskId));
-void sub_81C6714(u8 taskId);
-void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId);
-void StartFishing(u8 a);
-bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *, u8);
-u8 sub_80FD9B0(s16 a, s16 b);
-void sub_80FDA24(u8 a);
-void sub_80FD8E0(u8 taskId, s16 x, s16 y);
-void sub_80FDBEC(void);
-bool8 TryToWaterSudowoodo(void);
-void ItemUseOutOfBattle_CannotUse(u8 taskId);
+static void Task_StartUseRepel(u8 taskId);
+static void Task_UseRepel(u8 taskId);
+static void Task_CloseCantUseKeyItemMessage(u8 taskId);
+static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 x, s16 y);
+static void CB2_OpenPokeblockCaseOnField(void);
// EWRAM variables
-EWRAM_DATA static void(*gUnknown_0203A0F4)(u8 taskId) = NULL;
+EWRAM_DATA static void(*sItemUseOnFieldCB)(u8 taskId) = NULL;
+
+// Below is set TRUE by UseRegisteredKeyItemOnField
+#define tUsingRegisteredKeyItem data[3]
// .rodata
@@ -96,7 +88,7 @@ static const MainCallback sItemUseCallbacks[] =
NULL,
};
-static const u8 gUnknown_085920E4[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
+static const u8 sClockwiseDirections[] = {DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST};
static const struct YesNoFuncTable sUseTMHMYesNoFuncTable =
{
@@ -106,7 +98,7 @@ static const struct YesNoFuncTable sUseTMHMYesNoFuncTable =
// .text
-void SetUpItemUseCallback(u8 taskId)
+static void SetUpItemUseCallback(u8 taskId)
{
u8 type;
if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY)
@@ -116,39 +108,39 @@ void SetUpItemUseCallback(u8 taskId)
if (!InBattlePyramid())
{
gBagMenu->mainCallback2 = sItemUseCallbacks[type];
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
else
{
gPyramidBagResources->callback2 = sItemUseCallbacks[type];
- sub_81C5B14(taskId);
+ CloseBattlePyramidBagAndSetCallback(taskId);
}
}
-void SetUpItemUseOnFieldCallback(u8 taskId)
+static void SetUpItemUseOnFieldCallback(u8 taskId)
{
- if (gTasks[taskId].data[3] != 1)
+ if (gTasks[taskId].tUsingRegisteredKeyItem != TRUE)
{
- gFieldCallback = MapPostLoadHook_UseItem;
+ gFieldCallback = FieldCB_UseItemOnField;
SetUpItemUseCallback(taskId);
}
else
- gUnknown_0203A0F4(taskId);
+ sItemUseOnFieldCB(taskId);
}
-void MapPostLoadHook_UseItem(void)
+static void FieldCB_UseItemOnField(void)
{
FadeInFromBlack();
CreateTask(Task_CallItemUseOnFieldCallback, 8);
}
-void Task_CallItemUseOnFieldCallback(u8 taskId)
+static void Task_CallItemUseOnFieldCallback(u8 taskId)
{
if (IsWeatherNotFadingIn() == 1)
- gUnknown_0203A0F4(taskId);
+ sItemUseOnFieldCB(taskId);
}
-void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField, const u8 *str)
+static void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField, const u8 *str)
{
StringExpandPlaceholders(gStringVar4, str);
if (!isUsingRegisteredKeyItemOnField)
@@ -156,23 +148,23 @@ void DisplayCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnFiel
if (!InBattlePyramid())
DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
else
- DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, sub_81C6714);
+ DisplayItemMessageInBattlePyramid(taskId, gText_DadsAdvice, Task_CloseBattlePyramidBagMessage);
}
else
- DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField);
+ DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage);
}
-void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField)
+static void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField)
{
DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_DadsAdvice);
}
-void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField)
+static void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemOnField)
{
DisplayCannotUseItemMessage(taskId, isUsingRegisteredKeyItemOnField, gText_CantDismountBike);
}
-void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId)
+static void Task_CloseCantUseKeyItemMessage(u8 taskId)
{
ClearDialogWindowAndFrame(0, 1);
DestroyTask(taskId);
@@ -190,17 +182,18 @@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId)
return 0;
}
-void sub_80FD254(void)
+// Mail in the bag menu can't have a message but it can be checked (view the mail background, no message)
+static void CB2_CheckMail(void)
{
struct MailStruct mail;
mail.itemId = gSpecialVar_ItemId;
- ReadMail(&mail, bag_menu_mail_related, 0);
+ ReadMail(&mail, CB2_ReturnToBagMenuPocket, 0);
}
void ItemUseOutOfBattle_Mail(u8 taskId)
{
- gBagMenu->mainCallback2 = sub_80FD254;
- unknown_ItemMenu_Confirm(taskId);
+ gBagMenu->mainCallback2 = CB2_CheckMail;
+ Task_FadeAndCloseBagMenu(taskId);
}
void ItemUseOutOfBattle_Bike(u8 taskId)
@@ -212,20 +205,20 @@ void ItemUseOutOfBattle_Bike(u8 taskId)
PlayerGetDestCoords(&coordsX, &coordsY);
behavior = MapGridGetMetatileBehaviorAt(coordsX, coordsY);
if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE || MetatileBehavior_IsVerticalRail(behavior) == TRUE || MetatileBehavior_IsHorizontalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedVerticalRail(behavior) == TRUE || MetatileBehavior_IsIsolatedHorizontalRail(behavior) == TRUE)
- DisplayCannotDismountBikeMessage(taskId, data[3]);
+ DisplayCannotDismountBikeMessage(taskId, tUsingRegisteredKeyItem);
else
{
if (Overworld_IsBikingAllowed() == TRUE && IsBikingDisallowedByPlayer() == 0)
{
- gUnknown_0203A0F4 = ItemUseOnFieldCB_Bike;
+ sItemUseOnFieldCB = ItemUseOnFieldCB_Bike;
SetUpItemUseOnFieldCallback(taskId);
}
else
- DisplayDadsAdviceCannotUseItemMessage(taskId, data[3]);
+ DisplayDadsAdviceCannotUseItemMessage(taskId, tUsingRegisteredKeyItem);
}
}
-void ItemUseOnFieldCB_Bike(u8 taskId)
+static void ItemUseOnFieldCB_Bike(u8 taskId)
{
if (!ItemId_GetSecondaryId(gSpecialVar_ItemId))
GetOnOffBike(2);
@@ -236,7 +229,7 @@ void ItemUseOnFieldCB_Bike(u8 taskId)
DestroyTask(taskId);
}
-bool32 CanFish(void)
+static bool32 CanFish(void)
{
s16 x, y;
u16 tileBehavior;
@@ -270,14 +263,14 @@ void ItemUseOutOfBattle_Rod(u8 taskId)
{
if (CanFish() == TRUE)
{
- gUnknown_0203A0F4 = ItemUseOnFieldCB_Rod;
+ sItemUseOnFieldCB = ItemUseOnFieldCB_Rod;
SetUpItemUseOnFieldCallback(taskId);
}
else
- DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]);
+ DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem);
}
-void ItemUseOnFieldCB_Rod(u8 taskId)
+static void ItemUseOnFieldCB_Rod(u8 taskId)
{
StartFishing(ItemId_GetSecondaryId(gSpecialVar_ItemId));
DestroyTask(taskId);
@@ -285,56 +278,65 @@ void ItemUseOnFieldCB_Rod(u8 taskId)
void ItemUseOutOfBattle_Itemfinder(u8 var)
{
- IncrementGameStat(0x27);
- gUnknown_0203A0F4 = ItemUseOnFieldCB_Itemfinder;
+ IncrementGameStat(GAME_STAT_USED_ITEMFINDER);
+ sItemUseOnFieldCB = ItemUseOnFieldCB_Itemfinder;
SetUpItemUseOnFieldCallback(var);
}
-void ItemUseOnFieldCB_Itemfinder(u8 taskId)
+static void ItemUseOnFieldCB_Itemfinder(u8 taskId)
{
if (ItemfinderCheckForHiddenItems(gMapHeader.events, taskId) == TRUE)
- gTasks[taskId].func = sub_80FD504;
+ gTasks[taskId].func = Task_UseItemfinder;
else
- DisplayItemMessageOnField(taskId, gText_ItemFinderNothing, sub_80FD5CC);
+ DisplayItemMessageOnField(taskId, gText_ItemFinderNothing, Task_CloseItemfinderMessage);
}
-void sub_80FD504(u8 taskId)
+// Define itemfinder task data
+#define tItemDistanceX data[0]
+#define tItemDistanceY data[1]
+#define tItemFound data[2]
+#define tCounter data[3] // Used to count delay between beeps and rotations during player spin
+#define tItemfinderBeeps data[4]
+#define tFacingDir data[5]
+
+static void Task_UseItemfinder(u8 taskId)
{
u8 playerDir;
u8 playerDirToItem;
u8 i;
s16* data = gTasks[taskId].data;
- if (!data[3])
+ if (tCounter == 0)
{
- if (data[4] == 4)
+ if (tItemfinderBeeps == 4)
{
- playerDirToItem = sub_80FD9B0(data[0], data[1]);
- if (playerDirToItem)
+ playerDirToItem = GetDirectionToHiddenItem(tItemDistanceX, tItemDistanceY);
+ if (playerDirToItem != DIR_NONE)
{
- sub_80FDA24(gUnknown_085920E4[playerDirToItem - 1]);
- gTasks[taskId].func = sub_80FDA94;
+ PlayerFaceHiddenItem(sClockwiseDirections[playerDirToItem - 1]);
+ gTasks[taskId].func = Task_HiddenItemNearby;
}
else
{
+ // Player is standing on hidden item
playerDir = GetPlayerFacingDirection();
- for (i = 0; i < 4; i++)
+ for (i = 0; i < ARRAY_COUNT(sClockwiseDirections); i++)
{
- if (playerDir == gUnknown_085920E4[i])
- data[5] = (i + 1) & 3;
+ if (playerDir == sClockwiseDirections[i])
+ tFacingDir = (i + 1) & 3;
}
- gTasks[taskId].func = sub_80FDADC;
- data[3] = 0;
- data[2] = 0;
+ gTasks[taskId].func = Task_StandingOnHiddenItem;
+ tCounter = 0;
+ tItemFound = 0;
}
return;
}
PlaySE(SE_DAUGI);
- data[4]++;
+ tItemfinderBeeps++;
}
- data[3] = (data[3] + 1) & 0x1F;
+ tCounter = (tCounter + 1) & 0x1F;
}
-void sub_80FD5CC(u8 taskId)
+static void Task_CloseItemfinderMessage(u8 taskId)
{
ClearDialogWindowAndFrame(0, 1);
ScriptUnfreezeEventObjects();
@@ -342,34 +344,36 @@ void sub_80FD5CC(u8 taskId)
DestroyTask(taskId);
}
-bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 taskId)
+static bool8 ItemfinderCheckForHiddenItems(const struct MapEvents *events, u8 taskId)
{
- int distanceX, distanceY;
- s16 x, y, i, newDistanceX, newDistanceY;
- PlayerGetDestCoords(&x, &y);
- gTasks[taskId].data[2] = FALSE;
+ int itemX, itemY;
+ s16 playerX, playerY, i, distanceX, distanceY;
+ PlayerGetDestCoords(&playerX, &playerY);
+ gTasks[taskId].tItemFound = FALSE;
+
for (i = 0; i < events->bgEventCount; i++)
{
+ // Check if there are any hidden items on the current map that haven't been picked up
if (events->bgEvents[i].kind == BG_EVENT_HIDDEN_ITEM && !FlagGet(events->bgEvents[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START))
{
- distanceX = (u16)events->bgEvents[i].x + 7;
- newDistanceX = distanceX - x;
- distanceY = (u16)events->bgEvents[i].y + 7;
- newDistanceY = distanceY - y;
+ itemX = (u16)events->bgEvents[i].x + 7;
+ distanceX = itemX - playerX;
+ itemY = (u16)events->bgEvents[i].y + 7;
+ distanceY = itemY - playerY;
- if ((u16)(newDistanceX + 7) < 15 && (newDistanceY >= -5) && (newDistanceY < 6))
- sub_80FD8E0(taskId, newDistanceX, newDistanceY);
+ if ((u16)(distanceX + 7) < 15 && (distanceY >= -5) && (distanceY < 6))
+ SetDistanceOfClosestHiddenItem(taskId, distanceX, distanceY);
}
}
- sub_80FD7C8(taskId);
- if (gTasks[taskId].data[2] == TRUE)
+ CheckForHiddenItemsInMapConnection(taskId);
+ if (gTasks[taskId].tItemFound == TRUE)
return TRUE;
else
return FALSE;
}
-bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y)
+static bool8 IsHiddenItemPresentAtCoords(const struct MapEvents *events, s16 x, s16 y)
{
u8 bgEventCount = events->bgEventCount;
struct BgEvent *bgEvent = events->bgEvents;
@@ -388,7 +392,7 @@ bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y)
return FALSE;
}
-bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
+static bool8 IsHiddenItemPresentInConnection(struct MapConnection *connection, int x, int y)
{
u16 localX, localY;
@@ -399,7 +403,7 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
switch (connection->direction)
{
- // same weird temp variable behavior seen in sub_80FD6D4
+ // same weird temp variable behavior seen in IsHiddenItemPresentAtCoords
case 2:
localOffset = connection->offset + 7;
localX = x - localOffset;
@@ -427,136 +431,145 @@ bool8 sub_80FD730(struct MapConnection *connection, int x, int y)
default:
return FALSE;
}
- return sub_80FD6D4(mapHeader->events, localX, localY);
+ return IsHiddenItemPresentAtCoords(mapHeader->events, localX, localY);
}
-void sub_80FD7C8(u8 taskId)
+static void CheckForHiddenItemsInMapConnection(u8 taskId)
{
+ s16 playerX, playerY;
s16 x, y;
- s16 curX, curY;
s16 width = gMapHeader.mapLayout->width + 7;
s16 height = gMapHeader.mapLayout->height + 7;
s16 var1 = 7;
s16 var2 = 7;
- PlayerGetDestCoords(&x, &y);
+ PlayerGetDestCoords(&playerX, &playerY);
- for (curX = x - 7; curX <= x + 7; curX++)
+ for (x = playerX - 7; x <= playerX + 7; x++)
{
- for (curY = y - 5; curY <= y + 5; curY++)
+ for (y = playerY - 5; y <= playerY + 5; y++)
{
- if (var1 > curX
- || curX >= width
- || var2 > curY
- || curY >= height)
+ if (var1 > x
+ || x >= width
+ || var2 > y
+ || y >= height)
{
- struct MapConnection *conn = sub_8088A8C(curX, curY);
- if (conn && sub_80FD730(conn, curX, curY) == TRUE)
- sub_80FD8E0(taskId, curX - x, curY - y);
+ struct MapConnection *conn = GetConnectionAtCoords(x, y);
+ if (conn && IsHiddenItemPresentInConnection(conn, x, y) == TRUE)
+ SetDistanceOfClosestHiddenItem(taskId, x - playerX, y - playerY);
}
}
}
}
-void sub_80FD8E0(u8 taskId, s16 x, s16 y)
+static void SetDistanceOfClosestHiddenItem(u8 taskId, s16 itemDistanceX, s16 itemDistanceY)
{
s16 *data = gTasks[taskId].data;
- s16 var1, var2, var3, var4;
+ s16 oldItemAbsX, oldItemAbsY, newItemAbsX, newItemAbsY;
- if (data[2] == FALSE)
+ if (tItemFound == FALSE)
{
- data[0] = x;
- data[1] = y;
- data[2] = TRUE;
+ // No other items found yet, set this one
+ tItemDistanceX = itemDistanceX;
+ tItemDistanceY = itemDistanceY;
+ tItemFound = TRUE;
}
else
{
- // data[0] and data[1] contain the player's coordinates.
- // x and y contain the item's coordinates.
- if (data[0] < 0)
- var1 = data[0] * -1; // item is to the left
+ // Other items have been found, check if this one is closer
+
+ // Get absolute x distance of the already-found item
+ if (tItemDistanceX < 0)
+ oldItemAbsX = tItemDistanceX * -1; // WEST
else
- var1 = data[0]; // item is to the right
+ oldItemAbsX = tItemDistanceX; // EAST
- if (data[1] < 0)
- var2 = data[1] * -1; // item is to the north
+ // Get absolute y distance of the already-found item
+ if (tItemDistanceY < 0)
+ oldItemAbsY = tItemDistanceY * -1; // NORTH
else
- var2 = data[1]; // item is to the south
+ oldItemAbsY = tItemDistanceY; // SOUTH
- if (x < 0)
- var3 = x * -1;
+ // Get absolute x distance of the newly-found item
+ if (itemDistanceX < 0)
+ newItemAbsX = itemDistanceX * -1;
else
- var3 = x;
+ newItemAbsX = itemDistanceX;
- if (y < 0)
- var4 = y * -1;
+ // Get absolute y distance of the newly-found item
+ if (itemDistanceY < 0)
+ newItemAbsY = itemDistanceY * -1;
else
- var4 = y;
+ newItemAbsY = itemDistanceY;
- if (var1 + var2 > var3 + var4)
+
+ if (oldItemAbsX + oldItemAbsY > newItemAbsX + newItemAbsY)
{
- data[0] = x;
- data[1] = y;
+ // New item is closer
+ tItemDistanceX = itemDistanceX;
+ tItemDistanceY = itemDistanceY;
}
else
{
- if (var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y)))
+ if (oldItemAbsX + oldItemAbsY == newItemAbsX + newItemAbsY
+ && (oldItemAbsY > newItemAbsY || (oldItemAbsY == newItemAbsY && tItemDistanceY < itemDistanceY)))
{
- data[0] = x;
- data[1] = y;
+ // If items are equal distance, use whichever is closer on the Y axis or further south
+ tItemDistanceX = itemDistanceX;
+ tItemDistanceY = itemDistanceY;
}
}
}
}
-u8 sub_80FD9B0(s16 itemX, s16 itemY)
+static u8 GetDirectionToHiddenItem(s16 itemDistanceX, s16 itemDistanceY)
{
- s16 abX, abY;
+ s16 absX, absY;
- if (itemX == 0 && itemY == 0)
+ if (itemDistanceX == 0 && itemDistanceY == 0)
return DIR_NONE; // player is standing on the item.
- // get absolute X distance.
- if (itemX < 0)
- abX = itemX * -1;
+ // Get absolute X distance.
+ if (itemDistanceX < 0)
+ absX = itemDistanceX * -1;
else
- abX = itemX;
+ absX = itemDistanceX;
- // get absolute Y distance.
- if (itemY < 0)
- abY = itemY * -1;
+ // Get absolute Y distance.
+ if (itemDistanceY < 0)
+ absY = itemDistanceY * -1;
else
- abY = itemY;
+ absY = itemDistanceY;
- if (abX > abY)
+ if (absX > absY)
{
- if (itemX < 0)
+ if (itemDistanceX < 0)
return DIR_EAST;
else
return DIR_NORTH;
}
else
{
- if (abX < abY)
+ if (absX < absY)
{
- if (itemY < 0)
+ if (itemDistanceY < 0)
return DIR_SOUTH;
else
return DIR_WEST;
}
- if (abX == abY)
+ if (absX == absY)
{
- if (itemY < 0)
+ if (itemDistanceY < 0)
return DIR_SOUTH;
else
return DIR_WEST;
}
- return DIR_NONE; // should never get here. return something so it doesnt crash.
+ return DIR_NONE; // Unreachable
}
}
-void sub_80FDA24(u8 direction)
+static void PlayerFaceHiddenItem(u8 direction)
{
EventObjectClearHeldMovementIfFinished(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]);
EventObjectClearHeldMovement(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]);
@@ -564,39 +577,48 @@ void sub_80FDA24(u8 direction)
PlayerTurnInPlace(direction);
}
-void sub_80FDA94(u8 taskId)
+static void Task_HiddenItemNearby(u8 taskId)
{
if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]) == TRUE)
- DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, sub_80FD5CC);
+ DisplayItemMessageOnField(taskId, gText_ItemFinderNearby, Task_CloseItemfinderMessage);
}
-void sub_80FDADC(u8 taskId)
+static void Task_StandingOnHiddenItem(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (EventObjectCheckHeldMovementStatus(&gEventObjects[GetEventObjectIdByLocalIdAndMap(EVENT_OBJ_ID_PLAYER, 0, 0)]) == TRUE
- || data[2] == FALSE)
+ || tItemFound == FALSE)
{
- sub_80FDA24(gUnknown_085920E4[data[5]]);
- data[2] = 1;
- data[5] = (data[5] + 1) & 3;
- data[3]++;
-
- if (data[3] == 4)
- DisplayItemMessageOnField(taskId, gText_ItemFinderOnTop, sub_80FD5CC);
+ // Spin player around on item
+ PlayerFaceHiddenItem(sClockwiseDirections[tFacingDir]);
+ tItemFound = TRUE;
+ tFacingDir = (tFacingDir + 1) & 3;
+ tCounter++;
+
+ if (tCounter == 4)
+ DisplayItemMessageOnField(taskId, gText_ItemFinderOnTop, Task_CloseItemfinderMessage);
}
}
+// Undefine itemfinder task data
+#undef tItemDistanceX
+#undef tItemDistanceY
+#undef tItemFound
+#undef tCounter
+#undef tItemfinderBeeps
+#undef tFacingDir
+
void ItemUseOutOfBattle_PokeblockCase(u8 taskId)
{
- if (sub_81221AC() == TRUE)
+ if (sub_81221AC() == TRUE) // link func
{
- DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]);
+ DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem);
}
- else if (gTasks[taskId].data[3] != TRUE)
+ else if (gTasks[taskId].tUsingRegisteredKeyItem != TRUE)
{
- gBagMenu->mainCallback2 = sub_80FDBEC;
- unknown_ItemMenu_Confirm(taskId);
+ gBagMenu->mainCallback2 = CB2_OpenPokeblockCaseOnField;
+ Task_FadeAndCloseBagMenu(taskId);
}
else
{
@@ -606,17 +628,17 @@ void ItemUseOutOfBattle_PokeblockCase(u8 taskId)
}
}
-void sub_80FDBEC(void)
+static void CB2_OpenPokeblockCaseOnField(void)
{
- OpenPokeblockCase(0, bag_menu_mail_related);
+ OpenPokeblockCase(PBLOCK_CASE_FIELD, CB2_ReturnToBagMenuPocket);
}
-void sub_80FDC00(u8 taskId)
+static void sub_80FDC00(u8 taskId)
{
if (!gPaletteFade.active)
{
CleanupOverworldWindowsAndTilemaps();
- OpenPokeblockCase(0, CB2_ReturnToField);
+ OpenPokeblockCase(PBLOCK_CASE_FIELD, CB2_ReturnToField);
DestroyTask(taskId);
}
}
@@ -626,13 +648,13 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
ConvertIntToDecimalStringN(gStringVar1, GetCoins(), STR_CONV_MODE_LEFT_ALIGN, 4);
StringExpandPlaceholders(gStringVar4, gText_CoinCase);
- if (!gTasks[taskId].data[3])
+ if (!gTasks[taskId].tUsingRegisteredKeyItem)
{
DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
}
else
{
- DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField);
+ DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage);
}
}
@@ -641,13 +663,13 @@ void ItemUseOutOfBattle_PowderJar(u8 taskId)
ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), STR_CONV_MODE_LEFT_ALIGN, 5);
StringExpandPlaceholders(gStringVar4, gText_PowderQty);
- if (!gTasks[taskId].data[3])
+ if (!gTasks[taskId].tUsingRegisteredKeyItem)
{
DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
}
else
{
- DisplayItemMessageOnField(taskId, gStringVar4, CleanUpAfterFailingToUseRegisteredKeyItemOnField);
+ DisplayItemMessageOnField(taskId, gStringVar4, Task_CloseCantUseKeyItemMessage);
}
}
@@ -655,10 +677,10 @@ void ItemUseOutOfBattle_Berry(u8 taskId)
{
if (IsPlayerFacingEmptyBerryTreePatch() == TRUE)
{
- gUnknown_0203A0F4 = ItemUseOnFieldCB_Berry;
- gFieldCallback = MapPostLoadHook_UseItem;
+ sItemUseOnFieldCB = ItemUseOnFieldCB_Berry;
+ gFieldCallback = FieldCB_UseItemOnField;
gBagMenu->mainCallback2 = CB2_ReturnToField;
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
else
{
@@ -666,7 +688,7 @@ void ItemUseOutOfBattle_Berry(u8 taskId)
}
}
-void ItemUseOnFieldCB_Berry(u8 taskId)
+static void ItemUseOnFieldCB_Berry(u8 taskId)
{
RemoveBagItem(gSpecialVar_ItemId, 1);
ScriptContext2_Enable();
@@ -678,28 +700,28 @@ void ItemUseOutOfBattle_WailmerPail(u8 taskId)
{
if (TryToWaterSudowoodo() == TRUE)
{
- gUnknown_0203A0F4 = ItemUseOnFieldCB_WailmerPailSudowoodo;
+ sItemUseOnFieldCB = ItemUseOnFieldCB_WailmerPailSudowoodo;
SetUpItemUseOnFieldCallback(taskId);
}
else if (TryToWaterBerryTree() == TRUE)
{
- gUnknown_0203A0F4 = ItemUseOnFieldCB_WailmerPailBerry;
+ sItemUseOnFieldCB = ItemUseOnFieldCB_WailmerPailBerry;
SetUpItemUseOnFieldCallback(taskId);
}
else
{
- DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]);
+ DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem);
}
}
-void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId)
+static void ItemUseOnFieldCB_WailmerPailBerry(u8 taskId)
{
ScriptContext2_Enable();
ScriptContext1_SetupScript(BerryTree_EventScript_ItemUseWailmerPail);
DestroyTask(taskId);
}
-bool8 TryToWaterSudowoodo(void)
+static bool8 TryToWaterSudowoodo(void)
{
u16 x, y;
u8 z;
@@ -713,7 +735,7 @@ bool8 TryToWaterSudowoodo(void)
return TRUE;
}
-void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId)
+static void ItemUseOnFieldCB_WailmerPailSudowoodo(u8 taskId)
{
ScriptContext2_Enable();
ScriptContext1_SetupScript(BattleFrontier_OutsideEast_EventScript_WaterSudowoodo);
@@ -791,14 +813,14 @@ static void UseTMHM(u8 taskId)
SetUpItemUseCallback(taskId);
}
-void sub_80FE058(void)
+static void RemoveUsedItem(void)
{
RemoveBagItem(gSpecialVar_ItemId, 1);
CopyItemName(gSpecialVar_ItemId, gStringVar2);
StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2);
if (!InBattlePyramid())
{
- sub_81AB9A8(ItemId_GetPocket(gSpecialVar_ItemId));
+ UpdatePocketItemList(ItemId_GetPocket(gSpecialVar_ItemId));
SetInitialScrollAndCursorPositions(ItemId_GetPocket(gSpecialVar_ItemId));
}
else
@@ -811,14 +833,14 @@ void sub_80FE058(void)
void ItemUseOutOfBattle_Repel(u8 taskId)
{
if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
- gTasks[taskId].func = sub_80FE124;
+ gTasks[taskId].func = Task_StartUseRepel;
else if (!InBattlePyramid())
DisplayItemMessage(taskId, 1, gText_RepelEffectsLingered, BagMenu_InitListsMenu);
else
- DisplayItemMessageInBattlePyramid(taskId, gText_RepelEffectsLingered, sub_81C6714);
+ DisplayItemMessageInBattlePyramid(taskId, gText_RepelEffectsLingered, Task_CloseBattlePyramidBagMessage);
}
-void sub_80FE124(u8 taskId)
+static void Task_StartUseRepel(u8 taskId)
{
s16* data = gTasks[taskId].data;
@@ -826,24 +848,24 @@ void sub_80FE124(u8 taskId)
{
data[8] = 0;
PlaySE(SE_TU_SAA);
- gTasks[taskId].func = sub_80FE164;
+ gTasks[taskId].func = Task_UseRepel;
}
}
-void sub_80FE164(u8 taskId)
+static void Task_UseRepel(u8 taskId)
{
if (!IsSEPlaying())
{
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
- sub_80FE058();
+ RemoveUsedItem();
if (!InBattlePyramid())
DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
else
- DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714);
+ DisplayItemMessageInBattlePyramid(taskId, gStringVar4, Task_CloseBattlePyramidBagMessage);
}
}
-void sub_80FE1D0(u8 taskId)
+static void Task_UsedBlackWhiteFlute(u8 taskId)
{
if(++gTasks[taskId].data[8] > 7)
{
@@ -851,7 +873,7 @@ void sub_80FE1D0(u8 taskId)
if (!InBattlePyramid())
DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu);
else
- DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C6714);
+ DisplayItemMessageInBattlePyramid(taskId, gStringVar4, Task_CloseBattlePyramidBagMessage);
}
}
@@ -871,27 +893,27 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
StringExpandPlaceholders(gStringVar4, gText_UsedVar2WildRepelled);
}
gTasks[taskId].data[8] = 0;
- gTasks[taskId].func = sub_80FE1D0;
+ gTasks[taskId].func = Task_UsedBlackWhiteFlute;
}
-void task08_080A1C44(u8 taskId)
+void Task_UseDigEscapeRopeOnField(u8 taskId)
{
ResetInitialPlayerAvatarState();
StartEscapeRopeFieldEffect();
DestroyTask(taskId);
}
-void re_escape_rope(u8 taskId)
+static void ItemUseOnFieldCB_EscapeRope(u8 taskId)
{
Overworld_ResetStateAfterDigEscRope();
- sub_80FE058();
+ RemoveUsedItem();
gTasks[taskId].data[0] = 0;
- DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44);
+ DisplayItemMessageOnField(taskId, gStringVar4, Task_UseDigEscapeRopeOnField);
}
bool8 CanUseEscapeRopeOnCurrMap(void)
{
- if (gMapHeader.flags & 2)
+ if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE)
return TRUE;
else
return FALSE;
@@ -901,12 +923,12 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId)
{
if (CanUseEscapeRopeOnCurrMap() == TRUE)
{
- gUnknown_0203A0F4 = re_escape_rope;
+ sItemUseOnFieldCB = ItemUseOnFieldCB_EscapeRope;
SetUpItemUseOnFieldCallback(taskId);
}
else
{
- DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]);
+ DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem);
}
}
@@ -922,42 +944,43 @@ void ItemUseInBattle_PokeBall(u8 taskId)
{
RemoveBagItem(gSpecialVar_ItemId, 1);
if (!InBattlePyramid())
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
else
- sub_81C5B14(taskId);
+ CloseBattlePyramidBagAndSetCallback(taskId);
}
else if (!InBattlePyramid())
{
DisplayItemMessage(taskId, 1, gText_BoxFull, BagMenu_InitListsMenu);
}
else
- DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, sub_81C6714);
+ DisplayItemMessageInBattlePyramid(taskId, gText_BoxFull, Task_CloseBattlePyramidBagMessage);
}
-void sub_80FE408(u8 taskId)
+static void Task_CloseStatIncreaseMessage(u8 taskId)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
if (!InBattlePyramid())
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
else
- sub_81C5B14(taskId);
+ CloseBattlePyramidBagAndSetCallback(taskId);
}
}
-void sub_80FE440(u8 taskId)
+static void Task_UseStatIncreaseItem(u8 taskId)
{
if(++gTasks[taskId].data[8] > 7)
{
PlaySE(SE_KAIFUKU);
RemoveBagItem(gSpecialVar_ItemId, 1);
if (!InBattlePyramid())
- DisplayItemMessage(taskId, 1, sub_806CF78(gSpecialVar_ItemId), sub_80FE408);
+ DisplayItemMessage(taskId, 1, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage);
else
- DisplayItemMessageInBattlePyramid(taskId, sub_806CF78(gSpecialVar_ItemId), sub_80FE408);
+ DisplayItemMessageInBattlePyramid(taskId, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage);
}
}
+// e.g. X Attack, Guard Spec
void ItemUseInBattle_StatIncrease(u8 taskId)
{
u16 partyId = gBattlerPartyIndexes[gBattlerInMenuId];
@@ -967,11 +990,11 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
if (!InBattlePyramid())
DisplayItemMessage(taskId, 1, gText_WontHaveEffect, BagMenu_InitListsMenu);
else
- DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, sub_81C6714);
+ DisplayItemMessageInBattlePyramid(taskId, gText_WontHaveEffect, Task_CloseBattlePyramidBagMessage);
}
else
{
- gTasks[taskId].func = sub_80FE440;
+ gTasks[taskId].func = Task_UseStatIncreaseItem;
gTasks[taskId].data[8] = 0;
}
}
@@ -981,12 +1004,12 @@ static void ItemUseInBattle_ShowPartyMenu(u8 taskId)
if (!InBattlePyramid())
{
gBagMenu->mainCallback2 = ChooseMonForInBattleItem;
- unknown_ItemMenu_Confirm(taskId);
+ Task_FadeAndCloseBagMenu(taskId);
}
else
{
gPyramidBagResources->callback2 = ChooseMonForInBattleItem;
- sub_81C5B14(taskId);
+ CloseBattlePyramidBagAndSetCallback(taskId);
}
}
@@ -1009,20 +1032,21 @@ void ItemUseInBattle_PPRecovery(u8 taskId)
ItemUseInBattle_ShowPartyMenu(taskId);
}
+// Fluffy Tail / Poke Doll
void ItemUseInBattle_Escape(u8 taskId)
{
if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE)
{
- sub_80FE058();
+ RemoveUsedItem();
if (!InBattlePyramid())
- DisplayItemMessage(taskId, 1, gStringVar4, unknown_ItemMenu_Confirm);
+ DisplayItemMessage(taskId, 1, gStringVar4, Task_FadeAndCloseBagMenu);
else
- DisplayItemMessageInBattlePyramid(taskId, gStringVar4, sub_81C5B14);
+ DisplayItemMessageInBattlePyramid(taskId, gStringVar4, CloseBattlePyramidBagAndSetCallback);
}
else
{
- DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]);
+ DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem);
}
}
@@ -1099,5 +1123,7 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId)
void ItemUseOutOfBattle_CannotUse(u8 taskId)
{
- DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[3]);
+ DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].tUsingRegisteredKeyItem);
}
+
+#undef tUsingRegisteredKeyItem
diff --git a/src/overworld.c b/src/overworld.c
index 3d7f71f78..1cb264369 100644
--- a/src/overworld.c
+++ b/src/overworld.c
@@ -978,7 +978,7 @@ static u16 GetCenterScreenMetatileBehavior(void)
bool32 Overworld_IsBikingAllowed(void)
{
- if (!(gMapHeader.flags & 1))
+ if (!(gMapHeader.flags & MAP_ALLOW_BIKE))
return FALSE;
else
return TRUE;
@@ -1702,7 +1702,7 @@ void sub_80861E8(void)
static void sub_8086204(void)
{
- if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE)
+ if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE)
ShowMapNamePopup();
FieldCB_WarpExitFadeFromBlack();
}
@@ -1948,7 +1948,7 @@ static bool32 load_map_stuff(u8 *state, u32 a2)
(*state)++;
break;
case 11:
- if ((gMapHeader.flags & 0xF8) == 8 && SecretBaseMapPopupEnabled() == TRUE)
+ if (SHOW_MAP_NAME_ENABLED && SecretBaseMapPopupEnabled() == TRUE)
ShowMapNamePopup();
(*state)++;
break;
diff --git a/src/party_menu.c b/src/party_menu.c
index 367e84295..53b5b5ca5 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -5186,7 +5186,7 @@ u8 GetItemEffectType(u16 item)
else
itemEffect = gItemEffectTable[item - ITEM_POTION];
- if ((itemEffect[0] & (ITEM0_HIGH_CRIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_MIST))
+ if ((itemEffect[0] & (ITEM0_DIRE_HIT | ITEM0_X_ATTACK)) || itemEffect[1] || itemEffect[2] || (itemEffect[3] & ITEM3_GUARD_SPEC))
return ITEM_EFFECT_X_ITEM;
else if (itemEffect[0] & ITEM0_SACRED_ASH)
return ITEM_EFFECT_SACRED_ASH;
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 342221880..b9031e173 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -451,7 +451,7 @@ void OpenPokeblockCase(u8 caseId, void (*callback)(void))
sPokeblockMenu->pokeblockOptionsIds = sActionsWhenGivingToLady;
sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsWhenGivingToLady);
break;
- default:
+ default: // PBLOCK_CASE_FIELD
sPokeblockMenu->pokeblockOptionsIds = sActionsOnField;
sPokeblockMenu->optionsNo = ARRAY_COUNT(sActionsOnField);
break;
diff --git a/src/pokemon.c b/src/pokemon.c
index 12820aa76..15427e6ea 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2043,7 +2043,8 @@ static const u8 sGetMonDataEVConstants[] =
MON_DATA_SPATK_EV
};
-static const u8 gUnknown_08329EC8[] =
+// For stat-raising items
+static const u8 sStatsToRaise[] =
{
STAT_ATK, STAT_ATK, STAT_SPEED, STAT_DEF, STAT_SPATK, STAT_ACC
};
@@ -4691,7 +4692,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION;
retVal = FALSE;
}
- if ((itemEffect[cmdIndex] & ITEM0_HIGH_CRIT)
+ if ((itemEffect[cmdIndex] & ITEM0_DIRE_HIT)
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
{
gBattleMons[gActiveBattler].status2 |= STATUS2_FOCUS_ENERGY;
@@ -4745,7 +4746,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
}
break;
case 3:
- if ((itemEffect[cmdIndex] & ITEM3_MIST)
+ if ((itemEffect[cmdIndex] & ITEM3_GUARD_SPEC)
&& gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer == 0)
{
gSideTimers[GetBattlerSide(gActiveBattler)].mistTimer = 5;
@@ -5285,15 +5286,15 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
return offset;
}
-static void sub_806CF24(s32 arg0)
+static void BufferStatRoseMessage(s32 arg0)
{
gBattlerTarget = gBattlerInMenuId;
- StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[arg0]]);
+ StringCopy(gBattleTextBuff1, gStatNamesTable[sStatsToRaise[arg0]]);
StringCopy(gBattleTextBuff2, gText_StatRose);
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2);
}
-u8 *sub_806CF78(u16 itemId)
+u8 *UseStatIncreaseItem(u16 itemId)
{
int i;
const u8 *itemEffect;
@@ -5314,13 +5315,14 @@ u8 *sub_806CF78(u16 itemId)
for (i = 0; i < 3; i++)
{
- if (itemEffect[i] & 0xF)
- sub_806CF24(i * 2);
- if (itemEffect[i] & 0xF0)
+ if (itemEffect[i] & (ITEM0_X_ATTACK | ITEM1_X_SPEED | ITEM2_X_SPATK))
+ BufferStatRoseMessage(i * 2);
+
+ if (itemEffect[i] & (ITEM0_DIRE_HIT | ITEM1_X_DEFEND | ITEM2_X_ACCURACY))
{
- if (i)
+ if (i != 0) // Dire Hit is the only ITEM0 above
{
- sub_806CF24(i * 2 + 1);
+ BufferStatRoseMessage(i * 2 + 1);
}
else
{
@@ -5330,7 +5332,7 @@ u8 *sub_806CF78(u16 itemId)
}
}
- if (itemEffect[3] & ITEM3_MIST)
+ if (itemEffect[3] & ITEM3_GUARD_SPEC)
{
gBattlerAttacker = gBattlerInMenuId;
BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist);
diff --git a/src/region_map.c b/src/region_map.c
index 75ce60056..5694d4c7a 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -997,7 +997,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
break;
case MAP_TYPE_UNDERGROUND:
case MAP_TYPE_UNUSED_2:
- if (gMapHeader.flags & 0x02)
+ if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE)
{
mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
diff --git a/src/secret_base.c b/src/secret_base.c
index 23c4ba082..f2ac6cb72 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -16,6 +16,7 @@
#include "fldeff.h"
#include "fldeff_misc.h"
#include "international_string_util.h"
+#include "item_menu.h"
#include "link.h"
#include "list_menu.h"
#include "main.h"