Document item use
This commit is contained in:
@@ -448,6 +448,11 @@
|
||||
#define NUM_TECHNICAL_MACHINES 50
|
||||
#define NUM_HIDDEN_MACHINES 8
|
||||
|
||||
// Secondary IDs for rods
|
||||
#define OLD_ROD 0
|
||||
#define GOOD_ROD 1
|
||||
#define SUPER_ROD 2
|
||||
|
||||
// Check if the item is one that can be used on a Pokemon.
|
||||
#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
|
||||
|
||||
|
||||
+11
-2
@@ -16,11 +16,11 @@ struct Item
|
||||
u8 importance;
|
||||
u8 exitsBagOnUse;
|
||||
u8 pocket;
|
||||
u8 type;
|
||||
u8 type; // unused for balls
|
||||
ItemUseFunc fieldUseFunc;
|
||||
u8 battleUsage;
|
||||
ItemUseFunc battleUseFunc;
|
||||
u8 secondaryId;
|
||||
u8 secondaryId; // only used for fishing rods
|
||||
};
|
||||
|
||||
struct BagPocket
|
||||
@@ -29,6 +29,15 @@ struct BagPocket
|
||||
u8 capacity;
|
||||
};
|
||||
|
||||
// Item type IDs (used to determine the exit callback)
|
||||
enum {
|
||||
ITEM_TYPE_MAIL,
|
||||
ITEM_TYPE_PARTY_MENU,
|
||||
ITEM_TYPE_FIELD,
|
||||
ITEM_TYPE_UNUSED, // Used for Pokeblock case in RSE
|
||||
ITEM_TYPE_BAG_MENU, // No exit callback, stays in bag menu
|
||||
};
|
||||
|
||||
extern const struct Item gItems[];
|
||||
extern struct BagPocket gBagPockets[];
|
||||
|
||||
|
||||
+7
-7
@@ -6,9 +6,9 @@
|
||||
void Task_ItemUse_CloseMessageBoxAndReturnToField_VsSeeker(u8);
|
||||
void ItemUse_SetQuestLogEvent(u8, struct Pokemon *, u16, u16);
|
||||
|
||||
void FieldUseFunc_OrangeMail(u8 taskId);
|
||||
void FieldUseFunc_MachBike(u8 taskId);
|
||||
void FieldUseFunc_OldRod(u8 taskId);
|
||||
void FieldUseFunc_Mail(u8 taskId);
|
||||
void FieldUseFunc_Bike(u8 taskId);
|
||||
void FieldUseFunc_Rod(u8 taskId);
|
||||
void FieldUseFunc_CoinCase(u8 taskId);
|
||||
void FieldUseFunc_PowderJar(u8 taskId);
|
||||
void FieldUseFunc_PokeFlute(u8 taskId);
|
||||
@@ -22,14 +22,14 @@ void FieldUseFunc_TmCase(u8 taskId);
|
||||
void FieldUseFunc_BerryPouch(u8 taskId);
|
||||
void BattleUseFunc_BerryPouch(u8 taskId);
|
||||
void FieldUseFunc_TeachyTv(u8 taskId);
|
||||
void FieldUseFunc_SuperRepel(u8 taskId);
|
||||
void FieldUseFunc_BlackFlute(u8 taskId);
|
||||
void FieldUseFunc_Repel(u8 taskId);
|
||||
void FieldUseFunc_BlackWhiteFlute(u8 taskId);
|
||||
void FieldUseFunc_TownMap(u8 taskId);
|
||||
void FieldUseFunc_FameChecker(u8 taskId);
|
||||
void FieldUseFunc_VsSeeker(u8 taskId);
|
||||
void BattleUseFunc_PokeBallEtc(u8 taskId);
|
||||
void BattleUseFunc_PokeFlute(u8 taskId);
|
||||
void BattleUseFunc_GuardSpec(u8 taskId);
|
||||
void BattleUseFunc_StatBooster(u8 taskId);
|
||||
void BattleUseFunc_Medicine(u8 taskId);
|
||||
void BattleUseFunc_Ether(u8 taskId);
|
||||
void BattleUseFunc_PokeDoll(u8 taskId);
|
||||
@@ -38,7 +38,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId);
|
||||
void ItemUseOutOfBattle_EnigmaBerry(u8 taskId);
|
||||
void ItemUseInBattle_EnigmaBerry(u8 taskId);
|
||||
void ItemUseOutOfBattle_Itemfinder(u8 taskId);
|
||||
void sub_80A1C44(u8 taskId);
|
||||
void Task_UseDigEscapeRopeOnField(u8 taskId);
|
||||
u8 CanUseEscapeRopeOnCurrMap(void);
|
||||
u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
|
||||
|
||||
|
||||
+1
-1
@@ -1074,7 +1074,7 @@ static void Task_BerryPouch_Use(u8 taskId)
|
||||
else
|
||||
ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId);
|
||||
}
|
||||
else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1)
|
||||
else if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == ITEM_TYPE_PARTY_MENU)
|
||||
Task_Give_PrintThereIsNoPokemon(taskId);
|
||||
else
|
||||
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
|
||||
|
||||
+396
-396
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -41,6 +41,6 @@ static void StartDigFieldEffect(void)
|
||||
u8 taskId;
|
||||
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_DIG);
|
||||
taskId = CreateTask(sub_80A1C44, 8);
|
||||
taskId = CreateTask(Task_UseDigEscapeRopeOnField, 8);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -1475,7 +1475,7 @@ static void Task_ItemMenuAction_Use(u8 taskId)
|
||||
PutWindowTilemap(0);
|
||||
PutWindowTilemap(1);
|
||||
ScheduleBgCopyTilemapToVram(0);
|
||||
if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1)
|
||||
if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == ITEM_TYPE_PARTY_MENU)
|
||||
Task_PrintThereIsNoPokemon(taskId);
|
||||
else
|
||||
ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId);
|
||||
|
||||
+121
-125
@@ -33,6 +33,7 @@
|
||||
#include "vs_seeker.h"
|
||||
#include "constants/sound.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/item_effects.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/songs.h"
|
||||
@@ -43,14 +44,14 @@ static EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL;
|
||||
static void FieldCB_FadeInFromBlack(void);
|
||||
static void Task_WaitFadeIn_CallItemUseOnFieldCB(u8 taskId);
|
||||
static void Task_ItemUse_CloseMessageBoxAndReturnToField(u8 taskId);
|
||||
static void sub_80A11C0(u8 taskId);
|
||||
static bool8 sub_80A1194(void);
|
||||
static void sub_80A1208(void);
|
||||
static void Task_ItemUseWaitForFade(u8 taskId);
|
||||
static bool8 FieldCB2_UseItemFromField(void);
|
||||
static void CB2_CheckMail(void);
|
||||
static void ItemUseOnFieldCB_Bicycle(u8 taskId);
|
||||
static bool8 ItemUseCheckFunc_Rod(void);
|
||||
static bool8 CanFish(void);
|
||||
static void ItemUseOnFieldCB_Rod(u8 taskId);
|
||||
static void sub_80A1648(u8 taskId);
|
||||
static void sub_80A1674(u8 taskId);
|
||||
static void Task_PlayPokeFlute(u8 taskId);
|
||||
static void Task_DisplayPokeFluteMessage(u8 taskId);
|
||||
static void InitTMCaseFromBag(void);
|
||||
static void Task_InitTMCaseFromField(u8 taskId);
|
||||
static void InitBerryPouchFromBag(void);
|
||||
@@ -58,14 +59,14 @@ static void Task_InitBerryPouchFromField(u8 taskId);
|
||||
static void InitBerryPouchFromBattle(void);
|
||||
static void InitTeachyTvFromBag(void);
|
||||
static void Task_InitTeachyTvFromField(u8 taskId);
|
||||
static void sub_80A19E8(u8 taskId);
|
||||
static void sub_80A1A44(void);
|
||||
static void sub_80A1B48(u8 taskId);
|
||||
static void sub_80A1C08(u8 taskId);
|
||||
static void sub_80A1CAC(void);
|
||||
static void sub_80A1CC0(u8 taskId);
|
||||
static void sub_80A1D58(void);
|
||||
static void sub_80A1D68(u8 taskId);
|
||||
static void Task_UseRepel(u8 taskId);
|
||||
static void RemoveUsedItem(void);
|
||||
static void Task_UsedBlackWhiteFlute(u8 taskId);
|
||||
static void ItemUseOnFieldCB_EscapeRope(u8 taskId);
|
||||
static void UseTownMapFromBag(void);
|
||||
static void Task_UseTownMapFromField(u8 taskId);
|
||||
static void UseFameCheckerFromBag(void);
|
||||
static void Task_UseFameCheckerFromField(u8 taskId);
|
||||
static void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId);
|
||||
static void Task_BattleUse_StatBooster_WaitButton_ReturnToBattle(u8 taskId);
|
||||
|
||||
@@ -126,13 +127,13 @@ static const u8 sUnref_83E27B4[] = {
|
||||
};
|
||||
|
||||
static void (*const sExitCallbackByItemType[])(void) = {
|
||||
CB2_ShowPartyMenuForItemUse,
|
||||
CB2_ReturnToField,
|
||||
NULL,
|
||||
NULL
|
||||
[ITEM_TYPE_PARTY_MENU - 1] = CB2_ShowPartyMenuForItemUse,
|
||||
[ITEM_TYPE_FIELD - 1] = CB2_ReturnToField,
|
||||
[ITEM_TYPE_UNUSED - 1] = NULL,
|
||||
[ITEM_TYPE_BAG_MENU - 1] = NULL,
|
||||
};
|
||||
|
||||
static void Task_FadeOuFromBackToField(u8 taskId)
|
||||
static void SetUpItemUseCallback(u8 taskId)
|
||||
{
|
||||
u8 itemType;
|
||||
if (gSpecialVar_ItemId == ITEM_ENIGMA_BERRY)
|
||||
@@ -147,18 +148,18 @@ static void Task_FadeOuFromBackToField(u8 taskId)
|
||||
else
|
||||
{
|
||||
ItemMenu_SetExitCallback(sExitCallbackByItemType[itemType]);
|
||||
if (itemType == 1)
|
||||
if (itemType == ITEM_TYPE_FIELD - 1)
|
||||
Bag_BeginCloseWin0Animation();
|
||||
ItemMenu_StartFadeToExitCallback(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A103C(u8 taskId)
|
||||
static void SetUpItemUseOnFieldCallback(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[3] != 1)
|
||||
{
|
||||
gFieldCallback = FieldCB_FadeInFromBlack;
|
||||
Task_FadeOuFromBackToField(taskId);
|
||||
SetUpItemUseCallback(taskId);
|
||||
}
|
||||
else
|
||||
sItemUseOnFieldCB(taskId);
|
||||
@@ -173,12 +174,10 @@ static void FieldCB_FadeInFromBlack(void)
|
||||
static void Task_WaitFadeIn_CallItemUseOnFieldCB(u8 taskId)
|
||||
{
|
||||
if (IsWeatherNotFadingIn() == TRUE)
|
||||
{
|
||||
sItemUseOnFieldCB(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void DisplayItemMessageInCurrentContext(u8 taskId, bool8 inField, u8 fontId, const u8 * str)
|
||||
static void DisplayItemMessageInCurrentContext(u8 taskId, bool8 inField, u8 fontId, const u8 *str)
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, str);
|
||||
if (inField == FALSE)
|
||||
@@ -210,22 +209,22 @@ u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sub_80A1184(void)
|
||||
static void SetFieldCallback2ForItemUse(void)
|
||||
{
|
||||
gFieldCallback2 = sub_80A1194;
|
||||
gFieldCallback2 = FieldCB2_UseItemFromField;
|
||||
}
|
||||
|
||||
static bool8 sub_80A1194(void)
|
||||
static bool8 FieldCB2_UseItemFromField(void)
|
||||
{
|
||||
FreezeObjectEvents();
|
||||
LockPlayerFieldControls();
|
||||
FadeInFromBlack();
|
||||
CreateTask(sub_80A11C0, 10);
|
||||
CreateTask(Task_ItemUseWaitForFade, 10);
|
||||
gExitStairsMovementDisabled = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void sub_80A11C0(u8 taskId)
|
||||
static void Task_ItemUseWaitForFade(u8 taskId)
|
||||
{
|
||||
if (IsWeatherNotFadingIn() == TRUE)
|
||||
{
|
||||
@@ -235,21 +234,21 @@ static void sub_80A11C0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void FieldUseFunc_OrangeMail(u8 taskId)
|
||||
void FieldUseFunc_Mail(u8 taskId)
|
||||
{
|
||||
ItemMenu_SetExitCallback(sub_80A1208);
|
||||
ItemMenu_SetExitCallback(CB2_CheckMail);
|
||||
ItemMenu_StartFadeToExitCallback(taskId);
|
||||
}
|
||||
|
||||
static void sub_80A1208(void)
|
||||
static void CB2_CheckMail(void)
|
||||
{
|
||||
struct Mail mail;
|
||||
|
||||
mail.itemId = gSpecialVar_ItemId;
|
||||
ReadMail(&mail, CB2_BagMenuFromStartMenu, 0);
|
||||
ReadMail(&mail, CB2_BagMenuFromStartMenu, FALSE);
|
||||
}
|
||||
|
||||
void FieldUseFunc_MachBike(u8 taskId)
|
||||
void FieldUseFunc_Bike(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 behavior;
|
||||
@@ -266,7 +265,7 @@ void FieldUseFunc_MachBike(u8 taskId)
|
||||
else if (Overworld_IsBikingAllowed() == TRUE && !IsBikingDisallowedByPlayer())
|
||||
{
|
||||
sItemUseOnFieldCB = ItemUseOnFieldCB_Bicycle;
|
||||
sub_80A103C(taskId);
|
||||
SetUpItemUseOnFieldCallback(taskId);
|
||||
}
|
||||
else
|
||||
PrintNotTheTimeToUseThat(taskId, gTasks[taskId].data[3]);
|
||||
@@ -282,18 +281,18 @@ static void ItemUseOnFieldCB_Bicycle(u8 taskId)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_OldRod(u8 taskId)
|
||||
void FieldUseFunc_Rod(u8 taskId)
|
||||
{
|
||||
if (ItemUseCheckFunc_Rod() == TRUE)
|
||||
if (CanFish() == TRUE)
|
||||
{
|
||||
sItemUseOnFieldCB = ItemUseOnFieldCB_Rod;
|
||||
sub_80A103C(taskId);
|
||||
SetUpItemUseOnFieldCallback(taskId);
|
||||
}
|
||||
else
|
||||
PrintNotTheTimeToUseThat(taskId, gTasks[taskId].data[3]);
|
||||
}
|
||||
|
||||
static bool8 ItemUseCheckFunc_Rod(void)
|
||||
static bool8 CanFish(void)
|
||||
{
|
||||
s16 x, y;
|
||||
u16 behavior;
|
||||
@@ -330,7 +329,7 @@ void ItemUseOutOfBattle_Itemfinder(u8 taskId)
|
||||
{
|
||||
IncrementGameStat(GAME_STAT_USED_ITEMFINDER);
|
||||
sItemUseOnFieldCB = ItemUseOnFieldCB_Itemfinder;
|
||||
sub_80A103C(taskId);
|
||||
SetUpItemUseOnFieldCallback(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_CoinCase(u8 taskId)
|
||||
@@ -362,7 +361,7 @@ void FieldUseFunc_PokeFlute(u8 taskId)
|
||||
|
||||
for (i = 0; i < CalculatePlayerPartyCount(); i++)
|
||||
{
|
||||
if (!ExecuteTableBasedItemEffect(&gPlayerParty[i], ITEM_AWAKENING, i, MOVE_NONE))
|
||||
if (!ExecuteTableBasedItemEffect(&gPlayerParty[i], ITEM_AWAKENING, i, 0))
|
||||
wokeSomeoneUp = TRUE;
|
||||
}
|
||||
|
||||
@@ -370,9 +369,9 @@ void FieldUseFunc_PokeFlute(u8 taskId)
|
||||
{
|
||||
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
DisplayItemMessageInBag(taskId, FONT_2, gText_PlayedPokeFlute, sub_80A1648);
|
||||
DisplayItemMessageInBag(taskId, FONT_2, gText_PlayedPokeFlute, Task_PlayPokeFlute);
|
||||
else
|
||||
DisplayItemMessageOnField(taskId, FONT_2, gText_PlayedPokeFlute, sub_80A1648);
|
||||
DisplayItemMessageOnField(taskId, FONT_2, gText_PlayedPokeFlute, Task_PlayPokeFlute);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -383,13 +382,13 @@ void FieldUseFunc_PokeFlute(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A1648(u8 taskId)
|
||||
static void Task_PlayPokeFlute(u8 taskId)
|
||||
{
|
||||
PlayFanfareByFanfareNum(FANFARE_POKE_FLUTE);
|
||||
gTasks[taskId].func = sub_80A1674;
|
||||
gTasks[taskId].func = Task_DisplayPokeFluteMessage;
|
||||
}
|
||||
|
||||
static void sub_80A1674(u8 taskId)
|
||||
static void Task_DisplayPokeFluteMessage(u8 taskId)
|
||||
{
|
||||
if (WaitFanfare(FALSE))
|
||||
{
|
||||
@@ -400,45 +399,45 @@ static void sub_80A1674(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A16D0(u8 taskId)
|
||||
static void DoSetUpItemUseCallback(u8 taskId)
|
||||
{
|
||||
Task_FadeOuFromBackToField(taskId);
|
||||
SetUpItemUseCallback(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_Medicine(u8 taskId)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_Medicine;
|
||||
sub_80A16D0(taskId);
|
||||
DoSetUpItemUseCallback(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_Ether(u8 taskId)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_TryRestorePP;
|
||||
sub_80A16D0(taskId);
|
||||
DoSetUpItemUseCallback(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_PpUp(u8 taskId)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_PPUp;
|
||||
sub_80A16D0(taskId);
|
||||
DoSetUpItemUseCallback(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_RareCandy(u8 taskId)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_RareCandy;
|
||||
sub_80A16D0(taskId);
|
||||
DoSetUpItemUseCallback(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_EvoItem(u8 taskId)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_EvolutionStone;
|
||||
sub_80A16D0(taskId);
|
||||
DoSetUpItemUseCallback(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_SacredAsh(u8 taskId)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_SacredAsh;
|
||||
Task_FadeOuFromBackToField(taskId);
|
||||
SetUpItemUseCallback(taskId);
|
||||
}
|
||||
|
||||
void FieldUseFunc_TmCase(u8 taskId)
|
||||
@@ -466,7 +465,7 @@ static void Task_InitTMCaseFromField(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_80A1184();
|
||||
SetFieldCallback2ForItemUse();
|
||||
InitTMCase(0, CB2_ReturnToField, 1);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -497,7 +496,7 @@ static void Task_InitBerryPouchFromField(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_80A1184();
|
||||
SetFieldCallback2ForItemUse();
|
||||
InitBerryPouch(BERRYPOUCH_FROMFIELD, CB2_ReturnToField, 1);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -540,36 +539,36 @@ static void Task_InitTeachyTvFromField(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_80A1184();
|
||||
SetFieldCallback2ForItemUse();
|
||||
InitTeachyTvController(0, CB2_ReturnToField);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void FieldUseFunc_SuperRepel(u8 taskId)
|
||||
void FieldUseFunc_Repel(u8 taskId)
|
||||
{
|
||||
if (VarGet(VAR_REPEL_STEP_COUNT) == 0)
|
||||
{
|
||||
PlaySE(SE_REPEL);
|
||||
gTasks[taskId].func = sub_80A19E8;
|
||||
gTasks[taskId].func = Task_UseRepel;
|
||||
}
|
||||
else
|
||||
// An earlier repel is still in effect
|
||||
DisplayItemMessageInBag(taskId, FONT_2, gText_RepelEffectsLingered, Task_ReturnToBagFromContextMenu);
|
||||
}
|
||||
|
||||
static void sub_80A19E8(u8 taskId)
|
||||
static void Task_UseRepel(u8 taskId)
|
||||
{
|
||||
if (!IsSEPlaying())
|
||||
{
|
||||
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
|
||||
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId));
|
||||
sub_80A1A44();
|
||||
RemoveUsedItem();
|
||||
DisplayItemMessageInBag(taskId, FONT_2, gStringVar4, Task_ReturnToBagFromContextMenu);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A1A44(void)
|
||||
static void RemoveUsedItem(void)
|
||||
{
|
||||
RemoveBagItem(gSpecialVar_ItemId, 1);
|
||||
Pocket_CalculateNItemsAndMaxShowed(ItemId_GetPocket(gSpecialVar_ItemId));
|
||||
@@ -578,7 +577,7 @@ static void sub_80A1A44(void)
|
||||
StringExpandPlaceholders(gStringVar4, gText_PlayerUsedVar2);
|
||||
}
|
||||
|
||||
void FieldUseFunc_BlackFlute(u8 taskId)
|
||||
void FieldUseFunc_BlackWhiteFlute(u8 taskId)
|
||||
{
|
||||
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
|
||||
if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE)
|
||||
@@ -587,7 +586,7 @@ void FieldUseFunc_BlackFlute(u8 taskId)
|
||||
FlagClear(FLAG_SYS_BLACK_FLUTE_ACTIVE);
|
||||
CopyItemName(gSpecialVar_ItemId, gStringVar2);
|
||||
StringExpandPlaceholders(gStringVar4, gText_UsedVar2WildLured);
|
||||
gTasks[taskId].func = sub_80A1B48;
|
||||
gTasks[taskId].func = Task_UsedBlackWhiteFlute;
|
||||
gTasks[taskId].data[8] = 0;
|
||||
}
|
||||
else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE)
|
||||
@@ -596,12 +595,12 @@ void FieldUseFunc_BlackFlute(u8 taskId)
|
||||
FlagClear(FLAG_SYS_WHITE_FLUTE_ACTIVE);
|
||||
CopyItemName(gSpecialVar_ItemId, gStringVar2);
|
||||
StringExpandPlaceholders(gStringVar4, gText_UsedVar2WildRepelled);
|
||||
gTasks[taskId].func = sub_80A1B48;
|
||||
gTasks[taskId].func = Task_UsedBlackWhiteFlute;
|
||||
gTasks[taskId].data[8] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A1B48(u8 taskId)
|
||||
static void Task_UsedBlackWhiteFlute(u8 taskId)
|
||||
{
|
||||
if (++gTasks[taskId].data[8] > 7)
|
||||
{
|
||||
@@ -623,22 +622,22 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId)
|
||||
if (CanUseEscapeRopeOnCurrMap() == TRUE)
|
||||
{
|
||||
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, gMapHeader.regionMapSectionId);
|
||||
sItemUseOnFieldCB = sub_80A1C08;
|
||||
sub_80A103C(taskId);
|
||||
sItemUseOnFieldCB = ItemUseOnFieldCB_EscapeRope;
|
||||
SetUpItemUseOnFieldCallback(taskId);
|
||||
}
|
||||
else
|
||||
PrintNotTheTimeToUseThat(taskId, gTasks[taskId].data[3]);
|
||||
}
|
||||
|
||||
static void sub_80A1C08(u8 taskId)
|
||||
static void ItemUseOnFieldCB_EscapeRope(u8 taskId)
|
||||
{
|
||||
Overworld_ResetStateAfterDigEscRope();
|
||||
sub_80A1A44();
|
||||
RemoveUsedItem();
|
||||
gTasks[taskId].data[0] = 0;
|
||||
DisplayItemMessageOnField(taskId, FONT_2, gStringVar4, sub_80A1C44);
|
||||
DisplayItemMessageOnField(taskId, FONT_2, gStringVar4, Task_UseDigEscapeRopeOnField);
|
||||
}
|
||||
|
||||
void sub_80A1C44(u8 taskId)
|
||||
void Task_UseDigEscapeRopeOnField(u8 taskId)
|
||||
{
|
||||
ResetInitialPlayerAvatarState();
|
||||
StartEscapeRopeFieldEffect();
|
||||
@@ -649,28 +648,28 @@ void FieldUseFunc_TownMap(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
{
|
||||
ItemMenu_SetExitCallback(sub_80A1CAC);
|
||||
ItemMenu_SetExitCallback(UseTownMapFromBag);
|
||||
ItemMenu_StartFadeToExitCallback(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gTasks[taskId].func = sub_80A1CC0;
|
||||
gTasks[taskId].func = Task_UseTownMapFromField;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A1CAC(void)
|
||||
static void UseTownMapFromBag(void)
|
||||
{
|
||||
InitRegionMapWithExitCB(REGIONMAP_TYPE_NORMAL, CB2_BagMenuFromStartMenu);
|
||||
}
|
||||
|
||||
static void sub_80A1CC0(u8 taskId)
|
||||
static void Task_UseTownMapFromField(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_80A1184();
|
||||
SetFieldCallback2ForItemUse();
|
||||
InitRegionMapWithExitCB(REGIONMAP_TYPE_NORMAL, CB2_ReturnToField);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -681,28 +680,28 @@ void FieldUseFunc_FameChecker(u8 taskId)
|
||||
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, NULL, gSpecialVar_ItemId, 0xFFFF);
|
||||
if (gTasks[taskId].data[3] == 0)
|
||||
{
|
||||
ItemMenu_SetExitCallback(sub_80A1D58);
|
||||
ItemMenu_SetExitCallback(UseFameCheckerFromBag);
|
||||
ItemMenu_StartFadeToExitCallback(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gTasks[taskId].func = sub_80A1D68;
|
||||
gTasks[taskId].func = Task_UseFameCheckerFromField;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A1D58(void)
|
||||
static void UseFameCheckerFromBag(void)
|
||||
{
|
||||
UseFameChecker(CB2_BagMenuFromStartMenu);
|
||||
}
|
||||
|
||||
static void sub_80A1D68(u8 taskId)
|
||||
static void Task_UseFameCheckerFromField(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
sub_80A1184();
|
||||
SetFieldCallback2ForItemUse();
|
||||
UseFameChecker(CB2_ReturnToField);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
@@ -724,7 +723,7 @@ void FieldUseFunc_VsSeeker(u8 taskId)
|
||||
else
|
||||
{
|
||||
sItemUseOnFieldCB = Task_VsSeeker_0;
|
||||
sub_80A103C(taskId);
|
||||
SetUpItemUseOnFieldCallback(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -742,9 +741,7 @@ void BattleUseFunc_PokeBallEtc(u8 taskId)
|
||||
ItemMenu_StartFadeToExitCallback(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
DisplayItemMessageInBag(taskId, FONT_2, gText_BoxFull, Task_ReturnToBagFromContextMenu);
|
||||
}
|
||||
}
|
||||
|
||||
void BattleUseFunc_PokeFlute(u8 taskId)
|
||||
@@ -753,12 +750,10 @@ void BattleUseFunc_PokeFlute(u8 taskId)
|
||||
ItemMenu_StartFadeToExitCallback(taskId);
|
||||
}
|
||||
|
||||
void BattleUseFunc_GuardSpec(u8 taskId)
|
||||
void BattleUseFunc_StatBooster(u8 taskId)
|
||||
{
|
||||
if (ExecuteTableBasedItemEffect(&gPlayerParty[gBattlerPartyIndexes[gBattlerInMenuId]], gSpecialVar_ItemId, gBattlerPartyIndexes[gBattlerInMenuId], 0))
|
||||
{
|
||||
DisplayItemMessageInBag(taskId, FONT_2, gText_WontHaveEffect, Task_ReturnToBagFromContextMenu);
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[8] = 0;
|
||||
@@ -768,7 +763,7 @@ void BattleUseFunc_GuardSpec(u8 taskId)
|
||||
|
||||
static void Task_BattleUse_StatBooster_DelayAndPrint(u8 taskId)
|
||||
{
|
||||
s16 * data = gTasks[taskId].data;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (++data[8] > 7)
|
||||
{
|
||||
@@ -808,7 +803,8 @@ void BattleUseFunc_Medicine(u8 taskId)
|
||||
ItemUse_SwitchToPartyMenuInBattle(taskId);
|
||||
}
|
||||
|
||||
static void sub_80A1FD8(u8 taskId)
|
||||
// Unused. Sacred Ash cannot be used in battle
|
||||
static void BattleUseFunc_SacredAsh(u8 taskId)
|
||||
{
|
||||
gItemUseCB = ItemUseCB_SacredAsh;
|
||||
ItemUse_SwitchToPartyMenuInBattle(taskId);
|
||||
@@ -824,7 +820,7 @@ void BattleUseFunc_PokeDoll(u8 taskId)
|
||||
{
|
||||
if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER))
|
||||
{
|
||||
sub_80A1A44();
|
||||
RemoveUsedItem();
|
||||
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, 0, gSpecialVar_ItemId, 0xFFFF);
|
||||
DisplayItemMessageInBag(taskId, FONT_2, gStringVar4, ItemMenu_StartFadeToExitCallback);
|
||||
}
|
||||
@@ -834,38 +830,38 @@ void BattleUseFunc_PokeDoll(u8 taskId)
|
||||
|
||||
void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
|
||||
{
|
||||
switch (GetItemEffectType(gSpecialVar_ItemId) - 1)
|
||||
switch (GetItemEffectType(gSpecialVar_ItemId))
|
||||
{
|
||||
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:
|
||||
case ITEM_EFFECT_HEAL_HP:
|
||||
case ITEM_EFFECT_CURE_POISON:
|
||||
case ITEM_EFFECT_CURE_SLEEP:
|
||||
case ITEM_EFFECT_CURE_BURN:
|
||||
case ITEM_EFFECT_CURE_FREEZE:
|
||||
case ITEM_EFFECT_CURE_PARALYSIS:
|
||||
case ITEM_EFFECT_CURE_ALL_STATUS:
|
||||
case ITEM_EFFECT_ATK_EV:
|
||||
case ITEM_EFFECT_HP_EV:
|
||||
case ITEM_EFFECT_SPATK_EV:
|
||||
case ITEM_EFFECT_SPDEF_EV:
|
||||
case ITEM_EFFECT_SPEED_EV:
|
||||
case ITEM_EFFECT_DEF_EV:
|
||||
gTasks[taskId].data[4] = 1;
|
||||
FieldUseFunc_Medicine(taskId);
|
||||
break;
|
||||
case 9:
|
||||
case ITEM_EFFECT_SACRED_ASH:
|
||||
gTasks[taskId].data[4] = 1;
|
||||
FieldUseFunc_SacredAsh(taskId);
|
||||
break;
|
||||
case 0:
|
||||
case ITEM_EFFECT_RAISE_LEVEL:
|
||||
gTasks[taskId].data[4] = 1;
|
||||
FieldUseFunc_RareCandy(taskId);
|
||||
break;
|
||||
case 18:
|
||||
case 19:
|
||||
case ITEM_EFFECT_PP_UP:
|
||||
case ITEM_EFFECT_PP_MAX:
|
||||
gTasks[taskId].data[4] = 1;
|
||||
FieldUseFunc_PpUp(taskId);
|
||||
break;
|
||||
case 20:
|
||||
case ITEM_EFFECT_HEAL_PP:
|
||||
gTasks[taskId].data[4] = 1;
|
||||
FieldUseFunc_Ether(taskId);
|
||||
break;
|
||||
@@ -879,21 +875,21 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId)
|
||||
{
|
||||
switch (GetItemEffectType(gSpecialVar_ItemId))
|
||||
{
|
||||
case 0:
|
||||
BattleUseFunc_GuardSpec(taskId);
|
||||
case ITEM_EFFECT_X_ITEM:
|
||||
BattleUseFunc_StatBooster(taskId);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case 11:
|
||||
case ITEM_EFFECT_HEAL_HP:
|
||||
case ITEM_EFFECT_CURE_POISON:
|
||||
case ITEM_EFFECT_CURE_SLEEP:
|
||||
case ITEM_EFFECT_CURE_BURN:
|
||||
case ITEM_EFFECT_CURE_FREEZE:
|
||||
case ITEM_EFFECT_CURE_PARALYSIS:
|
||||
case ITEM_EFFECT_CURE_CONFUSION:
|
||||
case ITEM_EFFECT_CURE_INFATUATION:
|
||||
case ITEM_EFFECT_CURE_ALL_STATUS:
|
||||
BattleUseFunc_Medicine(taskId);
|
||||
break;
|
||||
case 21:
|
||||
case ITEM_EFFECT_HEAL_PP:
|
||||
BattleUseFunc_Ether(taskId);
|
||||
break;
|
||||
default:
|
||||
@@ -912,7 +908,7 @@ void FieldUseFunc_OakStopsYou(u8 taskId)
|
||||
PrintNotTheTimeToUseThat(taskId, gTasks[taskId].data[3]);
|
||||
}
|
||||
|
||||
void ItemUse_SetQuestLogEvent(u8 eventId, struct Pokemon * pokemon, u16 itemId, u16 param)
|
||||
void ItemUse_SetQuestLogEvent(u8 eventId, struct Pokemon *pokemon, u16 itemId, u16 param)
|
||||
{
|
||||
struct UnkStruct_ItemUseQuestLog
|
||||
{
|
||||
@@ -920,7 +916,7 @@ void ItemUse_SetQuestLogEvent(u8 eventId, struct Pokemon * pokemon, u16 itemId,
|
||||
u16 unk2;
|
||||
u16 species;
|
||||
u16 param;
|
||||
} * questLog = Alloc(sizeof(*questLog));
|
||||
} *questLog = Alloc(sizeof(*questLog));
|
||||
|
||||
questLog->itemId = itemId;
|
||||
questLog->param = param;
|
||||
|
||||
@@ -110,13 +110,6 @@ static u8 ChooseWildMonIndex_WaterRock(void)
|
||||
return 4;
|
||||
}
|
||||
|
||||
enum
|
||||
{
|
||||
OLD_ROD,
|
||||
GOOD_ROD,
|
||||
SUPER_ROD
|
||||
};
|
||||
|
||||
static u8 ChooseWildMonIndex_Fishing(u8 rod)
|
||||
{
|
||||
u8 wildMonIndex = 0;
|
||||
|
||||
Reference in New Issue
Block a user