summaryrefslogtreecommitdiff
path: root/src/item_use.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/item_use.c')
-rw-r--r--src/item_use.c167
1 files changed, 87 insertions, 80 deletions
diff --git a/src/item_use.c b/src/item_use.c
index 5037fee88..4e76ea434 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -34,28 +34,35 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
+#include "constants/species.h"
#include "constants/vars.h"
extern void (*gFieldItemUseCallback)(u8);
extern void (*gFieldCallback)(void);
-extern void (*gUnknown_0300485C)(void);
extern void (*gPokemonItemUseCallback)(u8, u16, TaskFunc);
-extern u8 gUnknown_02038561;
+extern u8 gPokemonItemUseType;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gBankInMenu;
-extern u8 gUnknown_081A1654[];
-extern u8 gUnknown_081A168F[];
+extern u8 S_PlantBerryTreeFromBag[];
+extern u8 S_WaterBerryTreeFromBag[];
extern u16 gBattlerPartyIndexes[];
extern u16 gBattleTypeFlags;
+static void ItemUseOnFieldCB_Berry(u8);
+static void ItemUseOnFieldCB_WailmerPail(u8);
+static void StartTeachMonTMHMMove(u8);
+static void DisplayTeachMonTMHMYesNoChoice(u8);
+static void BootTMHM(u8);
+static void WaitButtonPressAndDisplayTMHMInfo(u8);
+
static const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな");
static const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな");
-static const u8 *const gUnknown_083D61DC[2] =
+static const u8 *const sSSTidalBetaStrings[] =
{
gSSTidalBetaString,
gSSTidalBetaString2,
@@ -70,9 +77,9 @@ static const MainCallback gExitToOverworldFuncList[] =
static const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST };
-static const struct YesNoFuncTable gUnknown_083D61F4 =
+static const struct YesNoFuncTable sTeachMonTMHMYesNoActions =
{
- .yesFunc = sub_80C9FC0,
+ .yesFunc = StartTeachMonTMHMMove,
.noFunc = CleanUpItemMenuMessage,
};
@@ -80,7 +87,7 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId)
{
u8 taskData;
- if (gSpecialVar_ItemId == 0xAF)
+ if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY)
taskData = gTasks[taskId].data[15] - 1;
else
taskData = ItemId_GetType(gSpecialVar_ItemId) - 1;
@@ -115,7 +122,7 @@ void SetUpItemUseOnFieldCallback(u8 taskId)
}
}
-void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text)
+static void HandleDeniedItemUseMessage(u8 taskId, u8 playerMenuStatus, const u8 *text)
{
StringExpandPlaceholders(gStringVar4, text);
@@ -123,22 +130,22 @@ void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text)
{
case 0: // Item Menu
Menu_EraseWindowRect(0, 13, 13, 20);
- DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1);
+ DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
break;
default: // Field
- DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0);
+ DisplayItemMessageOnField(taskId, gStringVar4, CleanUpOverworldMessage, 0);
break;
}
}
-void DisplayDadsAdviceCannotUseItemMessage(u8 var1, u8 playerMenuStatus)
+void DisplayDadsAdviceCannotUseItemMessage(u8 taskId, u8 playerMenuStatus)
{
- HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_DadsAdvice);
+ HandleDeniedItemUseMessage(taskId, playerMenuStatus, gOtherText_DadsAdvice);
}
-void DisplayCantGetOffBikeItemMessage(u8 var1, u8 playerMenuStatus)
+void DisplayCantGetOffBikeItemMessage(u8 taskId, u8 playerMenuStatus)
{
- HandleDeniedItemUseMessage(var1, playerMenuStatus, gOtherText_CantGetOffBike);
+ HandleDeniedItemUseMessage(taskId, playerMenuStatus, gOtherText_CantGetOffBike);
}
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId)
@@ -177,7 +184,7 @@ void ItemUseOutOfBattle_Bike(u8 taskId)
PlayerGetDestCoords(&x, &y);
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
- if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE // on cycling road?
+ if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE
|| MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE
|| MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE
|| MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE
@@ -200,9 +207,9 @@ void ItemUseOutOfBattle_Bike(u8 taskId)
void ItemUseOnFieldCB_Bike(u8 taskId)
{
if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == 0)
- GetOnOffBike(2);
+ GetOnOffBike(PLAYER_AVATAR_FLAG_MACH_BIKE);
if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == 1)
- GetOnOffBike(4);
+ GetOnOffBike(PLAYER_AVATAR_FLAG_ACRO_BIKE);
ScriptUnfreezeEventObjects();
ScriptContext2_Disable();
@@ -256,11 +263,11 @@ void ItemUseOnFieldCB_Rod(u8 taskId)
DestroyTask(taskId);
}
-void ItemUseOutOfBattle_Itemfinder(u8 var)
+void ItemUseOutOfBattle_Itemfinder(u8 taskId)
{
IncrementGameStat(GAME_STAT_USED_ITEMFINDER);
gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Itemfinder;
- SetUpItemUseOnFieldCallback(var);
+ SetUpItemUseOnFieldCallback(taskId);
}
void ItemUseOnFieldCB_Itemfinder(u8 taskId)
@@ -743,7 +750,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
if (!gTasks[taskId].data[2])
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
}
else
@@ -752,16 +759,16 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
}
}
-void sub_80C9BB8(u8 var)
+static void SSTicketWaitForAButtonPress(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
- CleanUpItemMenuMessage(var);
+ CleanUpItemMenuMessage(taskId);
}
-void sub_80C9BD8(u8 var)
+static void SSTicketWaitForAButtonPress2(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
- CleanUpOverworldMessage(var);
+ CleanUpOverworldMessage(taskId);
}
// unused
@@ -769,20 +776,20 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId)
{
if (gTasks[taskId].data[2] == 0)
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
- DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BB8, 1);
+ Menu_EraseWindowRect(0, 13, 13, 20);
+ DisplayItemMessageOnField(taskId, sSSTidalBetaStrings[ItemId_GetSecondaryId(gSpecialVar_ItemId)], SSTicketWaitForAButtonPress, 1);
}
else
{
- DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BD8, 0);
+ DisplayItemMessageOnField(taskId, sSSTidalBetaStrings[ItemId_GetSecondaryId(gSpecialVar_ItemId)], SSTicketWaitForAButtonPress2, 0);
}
}
-void sub_80C9C7C(u8 taskId)
+void ItemUseOutOfBattle_Berry(u8 taskId)
{
if (IsPlayerFacingUnplantedSoil() == TRUE)
{
- gFieldItemUseCallback = sub_80C9D00;
+ gFieldItemUseCallback = ItemUseOnFieldCB_Berry;
gFieldCallback = ExecuteItemUseFromBlackPalette;
gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16;
gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch;
@@ -795,11 +802,11 @@ void sub_80C9C7C(u8 taskId)
}
}
-void sub_80C9D00(u8 taskId)
+static void ItemUseOnFieldCB_Berry(u8 taskId)
{
RemoveBagItem(gSpecialVar_ItemId, 1);
ScriptContext2_Enable();
- ScriptContext1_SetupScript(gUnknown_081A1654);
+ ScriptContext1_SetupScript(S_PlantBerryTreeFromBag);
DestroyTask(taskId);
}
@@ -807,7 +814,7 @@ void ItemUseOutOfBattle_WailmerPail(u8 taskId)
{
if (TryToWaterBerryTree() == TRUE)
{
- gFieldItemUseCallback = sub_80C9D74;
+ gFieldItemUseCallback = ItemUseOnFieldCB_WailmerPail;
SetUpItemUseOnFieldCallback(taskId);
}
else
@@ -816,23 +823,23 @@ void ItemUseOutOfBattle_WailmerPail(u8 taskId)
}
}
-void sub_80C9D74(u8 taskId)
+static void ItemUseOnFieldCB_WailmerPail(u8 taskId)
{
ScriptContext2_Enable();
- ScriptContext1_SetupScript(gUnknown_081A168F);
+ ScriptContext1_SetupScript(S_WaterBerryTreeFromBag);
DestroyTask(taskId);
}
-void sub_80C9D98(u8 taskId)
+static void SetPokemonItemUseAndFadeOut(u8 taskId)
{
- gUnknown_02038561 = 0;
+ gPokemonItemUseType = ITEM_USE_SINGLE_MON;
ItemMenu_ConfirmNormalFade(taskId);
}
void ItemUseOutOfBattle_Medicine(u8 taskId)
{
gPokemonItemUseCallback = UseMedicine;
- sub_80C9D98(taskId);
+ SetPokemonItemUseAndFadeOut(taskId);
}
void ItemUseOutOfBattle_SacredAsh(u8 taskId)
@@ -841,74 +848,74 @@ void ItemUseOutOfBattle_SacredAsh(u8 taskId)
gLastFieldPokeMenuOpened = 0;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
- if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
{
gLastFieldPokeMenuOpened = i;
break;
}
}
- gPokemonItemUseCallback = sub_8070048;
- gUnknown_02038561 = 4;
+ gPokemonItemUseCallback = DoSacredAshItemEffect;
+ gPokemonItemUseType = ITEM_USE_ALL_MONS;
ItemMenu_ConfirmNormalFade(taskId);
}
void ItemUseOutOfBattle_PPRecovery(u8 taskId)
{
gPokemonItemUseCallback = DoPPRecoveryItemEffect;
- sub_80C9D98(taskId);
+ SetPokemonItemUseAndFadeOut(taskId);
}
void ItemUseOutOfBattle_PPUp(u8 taskId)
{
gPokemonItemUseCallback = DoPPUpItemEffect;
- sub_80C9D98(taskId);
+ SetPokemonItemUseAndFadeOut(taskId);
}
void ItemUseOutOfBattle_RareCandy(u8 taskId)
{
gPokemonItemUseCallback = DoRareCandyItemEffect;
- sub_80C9D98(taskId);
+ SetPokemonItemUseAndFadeOut(taskId);
}
void ItemUseOutOfBattle_TMHM(u8 taskId)
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
if (gSpecialVar_ItemId >= ITEM_HM01_CUT)
- DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM
+ DisplayItemMessageOnField(taskId, gOtherText_BootedHM, BootTMHM, 1); // HM
else
- DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM
+ DisplayItemMessageOnField(taskId, gOtherText_BootedTM, BootTMHM, 1); // TM
}
-void sub_80C9EE4(u8 taskId)
+static void BootTMHM(u8 taskId)
{
PlaySE(SE_PC_LOGON);
- gTasks[taskId].func = sub_80C9F10;
+ gTasks[taskId].func = WaitButtonPressAndDisplayTMHMInfo;
}
-void sub_80C9F10(u8 taskId)
+static void WaitButtonPressAndDisplayTMHMInfo(u8 taskId)
{
if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
{
StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]);
StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_80C9F80, 1);
+ DisplayItemMessageOnField(taskId, gStringVar4, DisplayTeachMonTMHMYesNoChoice, 1);
}
}
-void sub_80C9F80(u8 var)
+static void DisplayTeachMonTMHMYesNoChoice(u8 taskId)
{
DisplayYesNoMenu(7, 7, 1);
sub_80A3FA0(gBGTilemapBuffers[1], 8, 8, 5, 4, 1);
- DoYesNoFuncWithChoice(var, &gUnknown_083D61F4);
+ DoYesNoFuncWithChoice(taskId, &sTeachMonTMHMYesNoActions);
}
-void sub_80C9FC0(u8 var)
+static void StartTeachMonTMHMMove(u8 taskId)
{
gPokemonItemUseCallback = TeachMonTMMove;
- sub_80C9D98(var);
+ SetPokemonItemUseAndFadeOut(taskId);
}
static void PrepareItemUseMessage(void)
@@ -919,27 +926,27 @@ static void PrepareItemUseMessage(void)
StringExpandPlaceholders(gStringVar4, gOtherText_UsedItem);
}
-void ItemUseOutOfBattle_Repel(u8 var)
+void ItemUseOutOfBattle_Repel(u8 taskId)
{
if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
{
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
PrepareItemUseMessage();
- DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1);
+ DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
}
else
{
- DisplayItemMessageOnField(var, gOtherText_RepelLingers, CleanUpItemMenuMessage, 1);
+ DisplayItemMessageOnField(taskId, gOtherText_RepelLingers, CleanUpItemMenuMessage, 1);
}
}
-void sub_80CA07C(void)
+static void sub_80CA07C(void)
{
sub_80A3E0C();
CopyItemName(gSpecialVar_ItemId, gStringVar2);
}
-void sub_80CA098(u8 taskId)
+static void PlayBlackWhiteFluteSound(u8 taskId)
{
if(++gTasks[taskId].data[15] > 7)
{
@@ -956,7 +963,7 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
FlagClear(FLAG_SYS_ENC_DOWN_ITEM);
sub_80CA07C();
StringExpandPlaceholders(gStringVar4, gOtherText_UsedFlute);
- gTasks[taskId].func = sub_80CA098;
+ gTasks[taskId].func = PlayBlackWhiteFluteSound;
gTasks[taskId].data[15] = 0;
}
else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE)
@@ -965,7 +972,7 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
FlagClear(FLAG_SYS_ENC_UP_ITEM);
sub_80CA07C();
StringExpandPlaceholders(gStringVar4, gOtherText_UsedRepel);
- gTasks[taskId].func = sub_80CA098;
+ gTasks[taskId].func = PlayBlackWhiteFluteSound;
gTasks[taskId].data[15] = 0;
}
}
@@ -973,11 +980,11 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
void task08_080A1C44(u8 taskId)
{
ResetInitialPlayerAvatarState();
- sub_80878A8();
+ StartEscapeRopeFieldEffect();
DestroyTask(taskId);
}
-void EscapeRopeCallback(u8 taskId)
+static void ItemUseOnFieldCB_EscapeRope(u8 taskId)
{
Overworld_ResetStateAfterDigEscRope();
PrepareItemUseMessage();
@@ -997,7 +1004,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId)
{
if (CanUseEscapeRopeOnCurrMap() == TRUE)
{
- gFieldItemUseCallback = EscapeRopeCallback;
+ gFieldItemUseCallback = ItemUseOnFieldCB_EscapeRope;
SetUpItemUseOnFieldCallback(taskId);
}
else
@@ -1006,30 +1013,30 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId)
}
}
-void ItemUseOutOfBattle_EvolutionStone(u8 var)
+void ItemUseOutOfBattle_EvolutionStone(u8 taskId)
{
gPokemonItemUseCallback = DoEvolutionStoneItemEffect;
- sub_80C9D98(var);
+ SetPokemonItemUseAndFadeOut(taskId);
}
-void ItemUseInBattle_PokeBall(u8 var)
+void ItemUseInBattle_PokeBall(u8 taskId)
{
if (PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon?
{
RemoveBagItem(gSpecialVar_ItemId, 1);
- sub_80A7094(var);
+ sub_80A7094(taskId);
}
else
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
- DisplayItemMessageOnField(var, gOtherText_BoxIsFull, CleanUpItemMenuMessage, 1);
+ Menu_EraseWindowRect(0, 13, 13, 20);
+ DisplayItemMessageOnField(taskId, gOtherText_BoxIsFull, CleanUpItemMenuMessage, 1);
}
}
-void sub_80CA294(u8 var)
+void sub_80CA294(u8 taskId)
{
if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
- sub_80A7094(var);
+ sub_80A7094(taskId);
}
void sub_80CA2BC(u8 taskId)
@@ -1046,7 +1053,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
{
u16 partyId = gBattlerPartyIndexes[gBankInMenu];
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE)
{
@@ -1064,7 +1071,7 @@ void sub_80CA394(u8 taskId)
if (!gPaletteFade.active)
{
sub_8094E4C();
- gpu_pal_allocator_reset__manage_upper_four();
+ FreeAndReserveObjectSpritePalettes();
DestroyTask(taskId);
}
}
@@ -1083,7 +1090,7 @@ void ItemUseInBattle_Medicine(u8 var)
void unref_sub_80CA410(u8 var)
{
- gPokemonItemUseCallback = sub_8070048;
+ gPokemonItemUseCallback = DoSacredAshItemEffect;
sub_80CA3C0(var);
}
@@ -1095,7 +1102,7 @@ void ItemUseInBattle_PPRecovery(u8 var)
void unref_sub_80CA448(u8 var)
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
if (ExecuteTableBasedItemEffect__(0, gSpecialVar_ItemId, 0) == FALSE)
{
@@ -1112,9 +1119,9 @@ void unref_sub_80CA448(u8 var)
void ItemUseInBattle_Escape(u8 taskId)
{
- Menu_EraseWindowRect(0, 0xD, 0xD, 0x14);
+ Menu_EraseWindowRect(0, 13, 13, 20);
- if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE)
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE)
{
PrepareItemUseMessage();
DisplayItemMessageOnField(taskId, gStringVar4, sub_80A7094, 1);