diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/data/items.json | 170 | ||||
-rw-r--r-- | src/fame_checker.c | 2 | ||||
-rw-r--r-- | src/item_use.c | 566 | ||||
-rw-r--r-- | src/pokemon.c | 2 | ||||
-rw-r--r-- | src/teachy_tv.c | 2 |
5 files changed, 650 insertions, 92 deletions
diff --git a/src/data/items.json b/src/data/items.json index 8d176df3d..b976e4c3e 100644 --- a/src/data/items.json +++ b/src/data/items.json @@ -29,7 +29,7 @@ "type": 0, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 0 }, { @@ -45,7 +45,7 @@ "type": 1, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 1 }, { @@ -61,7 +61,7 @@ "type": 2, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 2 }, { @@ -77,7 +77,7 @@ "type": 3, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 3 }, { @@ -93,7 +93,7 @@ "type": 4, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 4 }, { @@ -109,7 +109,7 @@ "type": 5, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 5 }, { @@ -125,7 +125,7 @@ "type": 6, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 6 }, { @@ -141,7 +141,7 @@ "type": 7, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 7 }, { @@ -157,7 +157,7 @@ "type": 8, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 8 }, { @@ -173,7 +173,7 @@ "type": 9, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 9 }, { @@ -189,7 +189,7 @@ "type": 10, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 10 }, { @@ -205,7 +205,7 @@ "type": 11, "fieldUseFunc": "NULL", "battleUsage": 2, - "battleUseFunc": "BattleUseFunc_MasterBall", + "battleUseFunc": "BattleUseFunc_PokeBallEtc", "secondaryId": 11 }, { @@ -219,9 +219,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -235,9 +235,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -251,9 +251,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -267,9 +267,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -283,9 +283,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -299,9 +299,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -315,9 +315,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -331,9 +331,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -347,9 +347,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -363,9 +363,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -379,9 +379,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -395,9 +395,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -411,9 +411,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -427,9 +427,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -443,9 +443,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -459,9 +459,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -475,9 +475,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -491,9 +491,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -507,9 +507,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -523,9 +523,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -539,9 +539,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -619,9 +619,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -635,9 +635,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -653,7 +653,7 @@ "type": 1, "fieldUseFunc": "FieldUseFunc_OakStopsYou", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -669,7 +669,7 @@ "type": 1, "fieldUseFunc": "FieldUseFunc_OakStopsYou", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -715,9 +715,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -1019,7 +1019,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1035,7 +1035,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1051,7 +1051,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1067,7 +1067,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1083,7 +1083,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -1131,7 +1131,7 @@ "exitsBagOnUse": 0, "pocket": "POCKET_ITEMS", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 0, "battleUseFunc": "NULL", "secondaryId": 0 @@ -2139,9 +2139,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2155,9 +2155,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2171,9 +2171,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2187,9 +2187,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2203,9 +2203,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2235,9 +2235,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2253,7 +2253,7 @@ "type": 4, "fieldUseFunc": "FieldUseFunc_OakStopsYou", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2267,9 +2267,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { @@ -2283,9 +2283,9 @@ "exitsBagOnUse": 0, "pocket": "POCKET_BERRY_POUCH", "type": 1, - "fieldUseFunc": "FieldUseFunc_OpenPartyMenu", + "fieldUseFunc": "FieldUseFunc_Medicine", "battleUsage": 1, - "battleUseFunc": "BattleUseFunc_OpenPartyMenu", + "battleUseFunc": "BattleUseFunc_Medicine", "secondaryId": 0 }, { diff --git a/src/fame_checker.c b/src/fame_checker.c index b3988d156..bf99bdf56 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -552,7 +552,7 @@ static void Task_TopMenuHandleInput(u8 taskId) if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF) { RunTextPrinters(); - if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu) + if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != ReturnToBagFromKeyItem) task->func = Task_StartToCloseFameChecker; else if (JOY_NEW(START_BUTTON)) { diff --git a/src/item_use.c b/src/item_use.c index 5ce0792de..5413a600f 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -1,31 +1,45 @@ #include "global.h" +#include "battle.h" #include "berry_pouch.h" #include "berry_powder.h" #include "bike.h" #include "coins.h" #include "event_data.h" +#include "field_effect.h" #include "field_fadetransition.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" +#include "field_specials.h" #include "field_weather.h" #include "fieldmap.h" #include "item.h" #include "item_menu.h" #include "item_use.h" +#include "itemfinder.h" #include "mail.h" +#include "main.h" +#include "malloc.h" #include "map_obj_80688E4.h" #include "map_obj_lock.h" #include "metatile_behavior.h" #include "new_menu_helpers.h" #include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "quest_log.h" +#include "region_map.h" #include "script.h" #include "sound.h" #include "string_util.h" #include "strings.h" #include "task.h" +#include "teachy_tv.h" +#include "tm_case.h" +#include "vs_seeker.h" #include "constants/fanfares.h" #include "constants/flags.h" #include "constants/items.h" +#include "constants/maps.h" #include "constants/moves.h" #include "constants/songs.h" @@ -43,7 +57,24 @@ void ItemUseOnFieldCB_Rod(u8 taskId); void FieldUseFunc_EvoItem(u8 taskId); void sub_80A1648(u8 taskId); void sub_80A1674(u8 taskId); -void sub_813EC8C(u8 taskId); +void InitTMCaseFromBag(void); +void Task_InitTMCaseFromField(u8 taskId); +void InitBerryPouchFromBag(void); +void Task_InitBerryPouchFromField(u8 taskId); +void InitBerryPouchFromBattle(void); +void InitTeachyTvFromBag(void); +void Task_InitTeachyTvFromField(u8 taskId); +void sub_80A19E8(u8 taskId); +void sub_80A1A44(void); +void sub_80A1B48(u8 taskId); +void sub_80A1C08(u8 taskId); +void sub_80A1C44(u8 taskId); +void sub_80A1CAC(void); +void sub_80A1CC0(u8 taskId); +void sub_80A1D58(void); +void sub_80A1D68(u8 taskId); +void sub_80A1EF4(u8 taskId); +void sub_80A1F48(u8 taskId); extern void (*const gUnknown_83E2954[])(void); @@ -158,10 +189,10 @@ void FieldUseFunc_OrangeMail(u8 taskId) void sub_80A1208(void) { - u16 buffer[18]; + struct MailStruct mail; - buffer[16] = gSpecialVar_ItemId; - sub_80BEBEC(buffer, UseFameCheckerFromMenu, 0); + mail.itemId = gSpecialVar_ItemId; + sub_80BEBEC(&mail, ReturnToBagFromKeyItem, 0); } void FieldUseFunc_MachBike(u8 taskId) @@ -320,3 +351,530 @@ void sub_80A16D0(u8 taskId) { sub_80A0FBC(taskId); } + +void FieldUseFunc_Medicine(u8 taskId) +{ + gUnknown_3005E98 = sub_81252D0; + sub_80A16D0(taskId); +} + +void FieldUseFunc_Ether(u8 taskId) +{ + gUnknown_3005E98 = sub_81256F8; + sub_80A16D0(taskId); +} + +void FieldUseFunc_PpUp(u8 taskId) +{ + gUnknown_3005E98 = dp05_pp_up; + sub_80A16D0(taskId); +} + +void FieldUseFunc_RareCandy(u8 taskId) +{ + gUnknown_3005E98 = dp05_rare_candy; + sub_80A16D0(taskId); +} + +void FieldUseFunc_EvoItem(u8 taskId) +{ + gUnknown_3005E98 = sub_8126B60; + sub_80A16D0(taskId); +} + +void FieldUseFunc_SacredAsh(u8 taskId) +{ + gUnknown_3005E98 = sub_8126894; + sub_80A0FBC(taskId); +} + +void FieldUseFunc_TmCase(u8 taskId) +{ + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(InitTMCaseFromBag); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = Task_InitTMCaseFromField; + } +} + +void InitTMCaseFromBag(void) +{ + InitTMCase(0, ReturnToBagFromKeyItem, 0); +} + +void Task_InitTMCaseFromField(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + InitTMCase(0, CB2_ReturnToField, 1); + DestroyTask(taskId); + } +} + +void FieldUseFunc_BerryPouch(u8 taskId) +{ + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(InitBerryPouchFromBag); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = Task_InitBerryPouchFromField; + } +} + +void InitBerryPouchFromBag(void) +{ + InitBerryPouch(0, ReturnToBagFromKeyItem, 0); +} + +void Task_InitBerryPouchFromField(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + InitBerryPouch(0, CB2_ReturnToField, 1); + DestroyTask(taskId); + } +} + +void BattleUseFunc_BerryPouch(u8 taskId) +{ + sub_8108EE0(InitBerryPouchFromBattle); + sub_8108B50(taskId); +} + +void InitBerryPouchFromBattle(void) +{ + InitBerryPouch(4, sub_8107ECC, 0); +} + +void FieldUseFunc_TeachyTv(u8 taskId) +{ + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF); + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(InitTeachyTvFromBag); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = Task_InitTeachyTvFromField; + } +} + +void InitTeachyTvFromBag(void) +{ + InitTeachyTvController(0, ReturnToBagFromKeyItem); +} + +void Task_InitTeachyTvFromField(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + InitTeachyTvController(0, CB2_ReturnToField); + DestroyTask(taskId); + } +} + +void FieldUseFunc_SuperRepel(u8 taskId) +{ + if (VarGet(VAR_REPEL_STEP_COUNT) == 0) + { + PlaySE(SE_RU_GASYAN); + gTasks[taskId].func = sub_80A19E8; + } + else + // An earlier repel is still in effect + DisplayItemMessageInBag(taskId, 2, gUnknown_841659E, sub_810A1F8); +} + +void sub_80A19E8(u8 taskId) +{ + if (!IsSEPlaying()) + { + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF); + VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId)); + sub_80A1A44(); + DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8); + } +} + +void sub_80A1A44(void) +{ + RemoveBagItem(gSpecialVar_ItemId, 1); + sub_8108DC8(ItemId_GetPocket(gSpecialVar_ItemId)); + sub_81089F4(ItemId_GetPocket(gSpecialVar_ItemId)); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gUnknown_841658C); +} + +void FieldUseFunc_BlackFlute(u8 taskId) +{ + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF); + if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE) + { + FlagSet(FLAG_WHITE_FLUTE_ACTIVE); + FlagClear(FLAG_BLACK_FLUTE_ACTIVE); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gUnknown_84165D2); + gTasks[taskId].func = sub_80A1B48; + gTasks[taskId].data[8] = 0; + } + else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE) + { + FlagSet(FLAG_BLACK_FLUTE_ACTIVE); + FlagClear(FLAG_WHITE_FLUTE_ACTIVE); + CopyItemName(gSpecialVar_ItemId, gStringVar2); + StringExpandPlaceholders(gStringVar4, gUnknown_8416600); + gTasks[taskId].func = sub_80A1B48; + gTasks[taskId].data[8] = 0; + } +} + +void sub_80A1B48(u8 taskId) +{ + if (++gTasks[taskId].data[8] > 7) + { + PlaySE(SE_PN_ON); + DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_810A1F8); + } +} + +bool8 sub_80A1B8C(void) +{ + if (gMapHeader.escapeRope & 1) + return TRUE; + else + return FALSE; +} + +void ItemUseOutOfBattle_EscapeRope(u8 taskId) +{ + if (sub_80A1B8C() == TRUE) + { + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, gMapHeader.regionMapSectionId); + sItemUseOnFieldCB = sub_80A1C08; + sub_80A103C(taskId); + } + else + sub_80A1110(taskId, gTasks[taskId].data[3]); +} + +void sub_80A1C08(u8 taskId) +{ + sub_8054D70(); + sub_80A1A44(); + gTasks[taskId].data[0] = 0; + DisplayItemMessageOnField(taskId, 2, gStringVar4, sub_80A1C44); +} + +void sub_80A1C44(u8 taskId) +{ + ResetInitialPlayerAvatarState(); + sub_8085620(); + DestroyTask(taskId); +} + +void FieldUseFunc_TownMap(u8 taskId) +{ + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(sub_80A1CAC); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = sub_80A1CC0; + } +} + +void sub_80A1CAC(void) +{ + sub_80BFF50(0, ReturnToBagFromKeyItem); +} + +void sub_80A1CC0(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + sub_80BFF50(0, CB2_ReturnToField); + DestroyTask(taskId); + } +} + +void FieldUseFunc_FameChecker(u8 taskId) +{ + ItemUse_SetQuestLogEvent(4, NULL, gSpecialVar_ItemId, 0xFFFF); + if (gTasks[taskId].data[3] == 0) + { + sub_8108EE0(sub_80A1D58); + sub_8108B50(taskId); + } + else + { + sub_80CCB68(); + fade_screen(1, 0); + gTasks[taskId].func = sub_80A1D68; + } +} + +void sub_80A1D58(void) +{ + UseFameChecker(ReturnToBagFromKeyItem); +} + +void sub_80A1D68(u8 taskId) +{ + if (!gPaletteFade.active) + { + CleanupOverworldWindowsAndTilemaps(); + sub_80A1184(); + UseFameChecker(CB2_ReturnToField); + DestroyTask(taskId); + } +} + +void FieldUseFunc_VsSeeker(u8 taskId) +{ + if ((gMapHeader.mapType != MAP_TYPE_ROUTE + && gMapHeader.mapType != MAP_TYPE_TOWN + && gMapHeader.mapType != MAP_TYPE_CITY) + || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(VIRIDIAN_FOREST) + && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(VIRIDIAN_FOREST) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(MT_EMBER_EXTERIOR) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(THREE_ISLAND_BERRY_FOREST) + || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SIX_ISLAND_PATTERN_BUSH)))) + { + sub_80A1110(taskId, gTasks[taskId].data[3]); + } + else + { + sItemUseOnFieldCB = Task_VsSeeker_0; + sub_80A103C(taskId); + } +} + +void sub_80A1E0C(u8 taskId) +{ + sub_80A112C(taskId); +} + +void BattleUseFunc_PokeBallEtc(u8 taskId) +{ + if (!IsPlayerPartyAndPokemonStorageFull()) + { + RemoveBagItem(gSpecialVar_ItemId, 1); + sub_8108CB4(); + sub_8108B50(taskId); + } + else + { + DisplayItemMessageInBag(taskId, 2, gUnknown_8416631, sub_810A1F8); + } +} + +void BattleUseFunc_PokeFlute(u8 taskId) +{ + sub_8108CB4(); + sub_8108B50(taskId); +} + +void BattleUseFunc_GuardSpec(u8 taskId) +{ + if (ExecuteTableBasedItemEffect(&gPlayerParty[gBattlerPartyIndexes[gBattlerInMenuId]], gSpecialVar_ItemId, gBattlerPartyIndexes[gBattlerInMenuId], 0)) + { + DisplayItemMessageInBag(taskId, 2, gUnknown_84169DC, sub_810A1F8); + } + else + { + gTasks[taskId].data[8] = 0; + gTasks[taskId].func = sub_80A1EF4; + } +} + +void sub_80A1EF4(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (++data[8] > 7) + { + u16 itemId = gSpecialVar_ItemId; + PlaySE(SE_KAIFUKU); + RemoveBagItem(itemId, 1); + DisplayItemMessageInBag(taskId, 2, sub_8042DA4(itemId), sub_80A1F48); + } +} + +void sub_80A1F48(u8 taskId) +{ + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + sub_8108CB4(); + sub_8108B50(taskId); + } +} + +void sub_80A1F78(u8 taskId) +{ + if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) + { + sub_813D934(sub_81279E0); + sub_813D808(taskId); + } + else + { + sub_8108EE0(sub_81279E0); + sub_8108B50(taskId); + } +} + +void BattleUseFunc_Medicine(u8 taskId) +{ + gUnknown_3005E98 = ItemUseCB_Medicine; + sub_80A1F78(taskId); +} + +void sub_80A1FD8(u8 taskId) +{ + gUnknown_3005E98 = sub_8126894; + sub_80A1F78(taskId); +} + +void BattleUseFunc_Ether(u8 taskId) +{ + gUnknown_3005E98 = sub_81256F8; + sub_80A1F78(taskId); +} + +void BattleUseFunc_PokeDoll(u8 taskId) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER)) + { + sub_80A1A44(); + ItemUse_SetQuestLogEvent(4, 0, gSpecialVar_ItemId, 0xFFFF); + DisplayItemMessageInBag(taskId, 2, gStringVar4, sub_8108B50); + } + else + sub_80A1110(taskId, 0); +} + +void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) +{ + switch (GetItemEffectType(gSpecialVar_ItemId) - 1) + { + 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: + gTasks[taskId].data[4] = 1; + FieldUseFunc_Medicine(taskId); + break; + case 9: + gTasks[taskId].data[4] = 1; + FieldUseFunc_SacredAsh(taskId); + break; + case 0: + gTasks[taskId].data[4] = 1; + FieldUseFunc_RareCandy(taskId); + break; + case 18: + case 19: + gTasks[taskId].data[4] = 1; + FieldUseFunc_PpUp(taskId); + break; + case 20: + gTasks[taskId].data[4] = 1; + FieldUseFunc_Ether(taskId); + break; + default: + gTasks[taskId].data[4] = 4; + FieldUseFunc_OakStopsYou(taskId); + } +} + +void ItemUseInBattle_EnigmaBerry(u8 taskId) +{ + switch (GetItemEffectType(gSpecialVar_ItemId)) + { + case 0: + BattleUseFunc_GuardSpec(taskId); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 11: + BattleUseFunc_Medicine(taskId); + break; + case 21: + BattleUseFunc_Ether(taskId); + break; + default: + FieldUseFunc_OakStopsYou(taskId); + } +} + +void FieldUseFunc_OakStopsYou(u8 taskId) +{ + if (GetPocketByItemId(gSpecialVar_ItemId) == POCKET_BERRY_POUCH) + { + StringExpandPlaceholders(gStringVar4, gUnknown_8416425); + sub_813EB20(taskId, 4, gStringVar4, sub_813E2B8); + } + else + sub_80A1110(taskId, gTasks[taskId].data[3]); +} + +void ItemUse_SetQuestLogEvent(u8 eventId, struct Pokemon * pokemon, u16 itemId, u16 param) +{ + struct UnkStruct_ItemUseQuestLog + { + u16 itemId; + u16 unk2; + u16 species; + u16 param; + } * questLog = Alloc(sizeof(*questLog)); + + questLog->itemId = itemId; + questLog->param = param; + if (pokemon != NULL) + questLog->species = GetMonData(pokemon, MON_DATA_SPECIES2); + else + questLog->species = 0xFFFF; + sub_8113550(eventId, (void *)questLog); + Free(questLog); +} diff --git a/src/pokemon.c b/src/pokemon.c index 3a9fdbf04..75250565a 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -4526,7 +4526,7 @@ void sub_8042D50(int stat) BattleStringExpandPlaceholdersToDisplayedString(BattleText_UnknownString3); } -u8 *sub_8042DA4(u16 itemId) +const u8 *sub_8042DA4(u16 itemId) { int i; const u8 *itemEffect; diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 711a7f765..efffe2840 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -736,7 +736,7 @@ static void TeachyTvOptionListController(u8 taskId) { input = ListMenuHandleInput(data[0]); ListMenuGetScrollAndRow(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow); - if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != UseFameCheckerFromMenu)) + if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != ReturnToBagFromKeyItem)) { PlaySE(SE_SELECT); TeachyTvQuitBeginFade(taskId); |